我有一张刚刚写过的打开的 Excel 表,使用 Microsoft.Office.Interop.Excel
.现在我想删除在某些列中具有某些值的行。例如,删除所有包含文本 blah blah
的行在名为 col
的列中.任何想法如何做到这一点?谢谢!
最佳答案
我的建议是删除创建工作表时传递给 Excel 互操作应用程序的数据集中的数据(如果删除行的意思是在胖记录中)。我对您需要的假设是删除名为“col”的列中存在该文本的整行。
例如:如果你传递一个 DataTable
您可以在将其传递给 Excel 工作表之前运行过滤器或从此对象中删除
var dataTable = dataBase.FetchData(runDate.ToShortDateString());
DataTable fitleredDataTable = dataTable.Select("(col != 'blah blah')").CopyToDataTable();
var application = new Application();
var workbook = application.Workbooks.Add();
var worksheet = (Worksheet)workbook.Sheets[1];
var columns = fitleredDataTable.Columns.Count;
var rows = fitleredDataTable.Rows.Count;
var range = worksheet.Range["A2", String.Format("{0}{1}", GetExcelColumnName(columns), rows)];
var data = new object[rows, columns];
for (int i = 1; i < fitleredDataTable.Columns.Count; i++)
{
worksheet.Cells[1, i] = fitleredDataTable.Columns[i - 1].ColumnName;
}
for (int rowNumber = 0; rowNumber < rows; rowNumber++)
{
for (int columnNumber = 0; columnNumber < columns; columnNumber++)
{
data[rowNumber, columnNumber] = fitleredDataTable.Rows[rowNumber][columnNumber].ToString();
}
}
range.Value = data;
当然,您也可以在存储过程或 SQL 查询中对其进行过滤。
关于c# - 筛选excel表格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25526662/