Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 筛选excel表_C#_Excel_Ms Office_Office Interop - Fatal编程技术网

C# 筛选excel表

C# 筛选excel表,c#,excel,ms-office,office-interop,C#,Excel,Ms Office,Office Interop,我有一个刚刚使用Microsoft.Office.Interop.excel写入的打开的excel工作表。现在我想删除某些列中具有特定值的行。例如,删除名为col的列中包含文本的所有行。有什么办法吗?谢谢 > P>也许你应该考虑在把它们写进Excel表之前过滤掉这些行。这样你就不用再做额外的工作了,先写,然后再读,再删除行 所以你可以从任何地方获取数据,用c筛选列表删除列中具有特定文本的所有项目,并在最后将干净的列表写入excel。如果删除行的意思是在创建工作表时传递给excel Interop

我有一个刚刚使用Microsoft.Office.Interop.excel写入的打开的excel工作表。现在我想删除某些列中具有特定值的行。例如,删除名为col的列中包含文本的所有行。有什么办法吗?谢谢

> P>也许你应该考虑在把它们写进Excel表之前过滤掉这些行。这样你就不用再做额外的工作了,先写,然后再读,再删除行


所以你可以从任何地方获取数据,用c筛选列表删除列中具有特定文本的所有项目,并在最后将干净的列表写入excel。

如果删除行的意思是在创建工作表时传递给excel Interop应用程序的数据集中的fat记录中,则我的建议是删除数据。我假设您需要删除名为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查询中过滤它