c# - 筛选excel表格

标签 c# excel ms-office office-interop

我有一张刚刚写过的打开的 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/

相关文章:

c# - 现有连接被远程主机强行关闭 - WCF 数据服务错误

vba - 对 Excel 中的单元格和工作表的引用

excel - 需要在多行上应用预算的最大金额,直到总和为 25000

c# - 未安装相应Office版本如何获取特定Excel对象库

linux - 将 Microsoft Office 文档转换为文本

c# - 我该如何解决我的内存问题

c# - 尝试从类访问表单控件时堆栈溢出

c# - DataGridView 列中的计算

java - JasperReport 报表中的 Excel 单元格格式

php - 使用 PHP 在 docx 文件中查找换行符