【问题标题】:Find and replace value in Excel using C#使用 C# 在 Excel 中查找和替换值
【发布时间】:2013-03-10 18:38:20
【问题描述】:

如何从单元格中找到一些值并在 Excel 中替换为新值?

我试过了,但它不起作用:

Microsoft.Office.Interop.Excel.Application xlapp = new Microsoft.Office.Interop.Excel.Application();
Microsoft.Office.Interop.Excel.Workbook wb =default(Microsoft.Office.Interop.Excel.Workbook);

wb = xlapp.Workbooks.Open(FileName.ToString());

wb.Worksheets[0].Cells.Replace("find","replace");

【问题讨论】:

  • 你是什么意思它不起作用?有什么例外或..?
  • 如果这就是您的代码所做的全部,那么它应该可以正常工作,但是您必须更具体地说明它在哪里不起作用以及您是如何知道的。
  • 对于以后发现此内容的任何人。 Worksheets[x] 不是从 0 开始的,它从 1 开始。 wb.Sheets.Count;可以让您获得工作表的数量,并且 for 循环可以遍历每一个工作表的查找替换。此外,您需要 wb.Save();和 wb.Close();最后实际保存更改并关闭文档。

标签: c# excel replace


【解决方案1】:

我建议您使用NPOI,它可以通过 codeplex 或直接通过 Visual Studio 中的 Nuget 访问。它使您能够在 .NET 中轻松上传、编辑和创建电子表格

上传电子表格示例:

HSSFWorkbook hssfworkbook;

void InitializeWorkbook(string path)
{
    //read the template via FileStream, it is suggested to use FileAccess.Read to prevent file lock.
    //book1.xls is an Excel-2007-generated file, so some new unknown BIFF records are added. 
    using (FileStream file = new FileStream(path, FileMode.Open, FileAccess.Read))
    {
        hssfworkbook = new HSSFWorkbook(file);
    }
}

然后,您可以使用电子表格的 IRow 和 ICell 集合来定位和编辑您需要的数据,然后再进行导出。

更多例子可以在here找到

【讨论】:

    【解决方案2】:

    如果有兴趣,您可以使用GemBox.Spreadsheet,如下所示:

    SpreadsheetInfo.SetLicense("FREE-LIMITED-KEY");
    
    // Load your XLS, XLSX, ODS or CSV file.
    ExcelFile wb = ExcelFile.Load(FileName.ToString());
    ExcelWorksheet ws = wb.Worksheets[0];
    
    // Replace all "find" occurances with "replace" text.
    int row, column;
    while(ws.Cells.FindText("find", out row, out column))
        ws.Cells[row, column].ReplaceText("find", "replace");
    
    // Save your XLS, XLSX, ODS or CSV file.
    wb.Save(FileName.ToString());
    

    您也可以找到另一个searching in Excel example here

    【讨论】:

      【解决方案3】:

      你所要做的就是替换

      wb.Worksheets[0].Cells.Replace("find","replace");
      

      wb.Worksheets[1].Cells.Replace("find","replace");
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-11-11
        • 1970-01-01
        • 2013-12-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-12-28
        相关资源
        最近更新 更多