循环遍历 Excel 工作表并使用 C# 将文本保存到 TXT 文件中

Posted

技术标签:

【中文标题】循环遍历 Excel 工作表并使用 C# 将文本保存到 TXT 文件中【英文标题】:Loop through Excel worksheets and save text into a TXT file with C# 【发布时间】:2013-01-24 16:51:51 【问题描述】:

我已经解决了大部分问题。我可以循环浏览工作表,我可以创建文本文件并写入它。我遇到的唯一问题实际上是从每张纸中提取文本或值。下面是我的代码,但它只为每个工作表抛出一个对象,并将这些词写入我的文本文件而不是实际值。

System.Object[,]
System.Object[,]

我还缺少什么? 我应该指出我是一个初学者程序员

这是我目前的代码:

using (StreamWriter sw = File.CreateText("ExtractedText.txt"))

    Excel.Application xlApp = new Excel.Application();
    Excel.Workbook thisWkBook = xlApp.Workbooks.Open(thisFile);

    foreach (Excel.Worksheet sheet in thisWkBook.Worksheets)
    
        sw.WriteLine(sheet.UsedRange.Value);
    

有什么想法吗?谢谢!

【问题讨论】:

【参考方案1】:

类似的东西,未经测试。见http://dontbreakthebuild.com/2011/01/30/excel-and-c-interop-with-net-4-how-to-read-data-from-excel/

using (StreamWriter sw = File.CreateText("ExtractedText.txt"))

    var excelApp = new Excel.Application();
    var workBook = excelApp.Workbooks.Open(thisFile);

    foreach (var sheet in workBook.Worksheets)
    
      foreach (var row in sheet.UsedRange.Rows)
      
        foreach (var cell in row.Columns)
        
          sw.Write(cell.Value + " ");
         
        sw.WriteLine();
      
    

【讨论】:

啊!所以我还需要遍历行和列!明白了。我正在测试这个,谢谢! .Value2 部分不起作用。但是从您的建议开始,我发现您可以使用“foreach”语句循环遍历单元格,如下所示:foreach (Excel.Worksheet sheet in thisWkBook.Worksheets) foreach (Excel.Range thisRow in sheet.UsedRange.Rows) foreach (Excel.Range thisCell in thisRow.Columns) sw.Write(thisCell.Value + " "); sw.WriteLine(); 您想更新您的答案,以便我可以选择它作为最终答案吗?【参考方案2】:

您需要从工作表中获取数据,例如:

sw.WriteLine(sheet.Range["C5"].Value.ToString());

【讨论】:

这为我指明了正确的方向(实际上是Range["C5"],带括号)。谢谢!

以上是关于循环遍历 Excel 工作表并使用 C# 将文本保存到 TXT 文件中的主要内容,如果未能解决你的问题,请参考以下文章

Python:循环遍历 Excel 工作表,将标题信息分配给每个工作表上的列,然后合并到一个文件

如何将行从一个 Excel 工作表复制到另一个工作表并使用 VBA 创建重复项?

使用 Perl Excel 循环遍历单列而不是每一列

遍历数据透视表并删除相同的值

DataTables 循环遍历表并删除特定列中包含特定字符串的所有行

Excel VBA - 循环遍历多个文件夹中的文件,复制范围,粘贴到此工作簿中