【问题标题】:Convert Text file to Excel将文本文件转换为 Excel
【发布时间】:2015-03-16 20:46:01
【问题描述】:

我有文本文件,我通过将它们复制/粘贴到 Excel 中来将它们转换为 Excel,然后转到 DATA -> Text to Columns。

  1. 然后我选择分隔。
  2. 然后选择分隔符制表符和分号。
  3. 在最后一步中,我为所有字段选择了文本。

现在我想通过用 C# 编写一个程序来自动执行此操作。

我将对 Excel 文件中的数据进行一些编辑。如果特定列具有特定名称等,则可以创建一个新的 Excel 文件。所以我可以从一个文本文件中得到三四个 Excel 文件。

什么是相对优点:

将文本文件读入字符串/列表,然后检查数据,然后将数据写入不同的 Excel 文件?

在 C# 中使用 TextToColumn() 方法然后开始编辑然后将其写入新的 Excel 文件?

如果有任何其他更好的方法来完成这样的事情,那么请提出建议。

编辑:我看到很多第 3 方的建议,但我想自己做这样我可以学习。

【问题讨论】:

  • 您可以使用 EPPlus 之类的库在 C# 中创建 Excel 文件。
  • 为什么要剪切粘贴,或者创建程序? Excel 可以自行导入文本文件。
  • “你试过什么,数据是从哪里来的?”它来自一个文本文件
  • "为什么非要剪切粘贴,还是要创建程序?Excel可以自己导入文本文件。" excel文件中有很多编辑,例如根据不同的规则需要将其拆分为不同的excel文件。我只是想自动化这就是为什么我会做一个 c# 程序。

标签: c# excel


【解决方案1】:

EPPlus 是一个很好的开始。它可以帮助您以编程方式创建 Excel 文件。我们公司已经使用它很长时间了,它已经证明自己运行良好。

如果遇到崩溃/错误,您可能想尝试旧版本 3.1.3。当前版本存在一些问题,仅供参考。

否则,如果您出于任何原因不想要任何库,则始终可以导出为 CSV。执行起来应该没问题。

【讨论】:

    【解决方案2】:

    EasyXLS库也可用于将TXT转换为Excel:

    ExcelDocument doc = new ExcelDocument();
    
    //Read TXT file
    doc.easy_LoadTXTFile(pathToTXTFile, "\t", ";");
    
    ExcelWorksheet sheet = (ExcelWorksheet)doc.easy_getSheetAt(0);
    ExcelTable sheetData = sheet.easy_getExcelTable();
    
    //Some editing on the data in the excel file
    sheetData.easy_getCell(row, column).setValue("newValue");
    
    //Convert to Excel
    doc.easy_WriteXLSXFile(pathToXLSXFile);
    

    您还可以创建多个excel文件,从初始加载的数据开始。

    【讨论】:

      【解决方案3】:

      您可以通过以下两种方法之一来做到这一点。

      第一种方法:
      使用此代码将文本文件转换为 csv 文件

      using System.IO;
      void ConvertToCsv(string sourcefile, string destfile)
      {
          int i, j;
          StreamWriter csvfile;
          string[] lines, cells;
          lines = File.ReadAllLines(sourcefile);
          csvfile = new StreamWriter(destfile);
          for (i = 0; i < lines.Length; i++)
          {
              cells = lines[i].Split(new Char[] { '\t', ';' });
              for (j = 0; j < cells.Length; j++)
                  csvfile.Write(cells[j] + ",");
              csvfile.WriteLine();
          }
          csvfile.Close();
      }
      

      然后打开这个文件并保存为xlsx文件。

      第二种方法:

      使用此代码将文本文件直接转换为 xlsx 文件。

      using System.IO;
      using Excel = Microsoft.Office.Interop.Excel;
      
      void ConvertToXlsx(string sourcefile, string destfile)
      {
          int i, j;
          Excel.Application xlApp;
          Excel.Workbook xlWorkBook;
          Excel._Worksheet xlWorkSheet;
          object misValue = System.Reflection.Missing.Value;
          string[] lines, cells;
          lines = File.ReadAllLines(sourcefile);
          xlApp = new Excel.Application();
          xlApp.DisplayAlerts = false;
          xlWorkBook = xlApp.Workbooks.Add();
          xlWorkSheet = (Excel._Worksheet)xlWorkBook.ActiveSheet;
          for (i = 0; i < lines.Length; i++)
          {
              cells = lines[i].Split(new Char[] { '\t', ';' });
              for (j = 0; j < cells.Length; j++)
                  xlWorkSheet.Cells[i + 1, j + 1] = cells[j];
          }
          xlWorkBook.SaveAs(destfile, Excel.XlFileFormat.xlWorkbookDefault, misValue, misValue, misValue, misValue, Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue);
          xlWorkBook.Close(true, misValue, misValue);
          xlApp.Quit();
      }
      

      不要忘记添加此参考。
      项目 > 添加参考 > 程序集 > 扩展
      选择“Microsoft.Office.Interop.Excel”

      您还可以对值进行所需的检查并将它们写入单独的文件。

      【讨论】:

        【解决方案4】:

        如果您知道分隔符是什么,并且我假设您也有列名。您可以使用 CSVHelper 等 nuget 包快速读取文件作为对象列表,然后将其写为 CSV。

        【讨论】:

          【解决方案5】:

          同意 bytecode77。 EPPlus 是一款出色的工具,可以满足您的需求。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2021-12-06
            • 2018-03-11
            • 2016-04-07
            相关资源
            最近更新 更多