filter excel sheet
本文关键字:sheet excel filter | 更新日期: 2023-09-27 18:19:51
我刚刚用Microsoft.Office.Interop.Excel
编写了一个打开的excel表。现在我想删除某些列中具有特定值的行。例如,删除名为col
的列中具有文本blah blah
的所有行。有什么办法吗?谢谢
我的建议是删除创建工作表时传递给Excel Interop应用程序的数据集中的数据(如果删除行的意思是在胖记录中)。我的假设是,您需要删除名为"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查询中对其进行筛选。
也许您应该考虑在将行写入excel表之前过滤掉它们。这样你就可以省去额外的写作、重读和删行的工作。
因此,您可以获取数据(无论数据来自哪里),在c#中过滤列表(删除列中带有特定文本的所有项目),并最终将干净的列表写入excel。