将文本文件转换为Excel

时间:2015-03-16 20:46:01

标签: c# excel

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

  1. 然后我选择Delimited。
  2. 然后选择Delimiters Tab和Semicolon。
  3. 在最后一步中,我为所有字段选择文字。
  4. 现在我想通过在C#中创建程序来实现自动化。

    我将对Excel文件中的数据进行一些编辑。如果特定列具有特定名称等,则可以生成新的Excel文件。因此,从一个文本文件中我最终会得到三个或四个Excel文件。

    有什么相对优点:

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

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

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

    编辑:我看到很多第三方建议,但我想自己做,所以我可以学习。

5 个答案:

答案 0 :(得分:0)

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

如果遇到崩溃/错误,您可能需要尝试旧版本3.1.3。我们在当前版本中遇到了一些问题,就像提示一样。

否则,如果您因任何原因不需要任何库,则始终可以导出为CSV。这应该没有问题。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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 :(得分:0)

同意bytecode77。 EPPlus是您完成所需工作的绝佳工具。

答案 4 :(得分:0)

您可以使用以下两种方法之一进行操作。

第一种方法:
使用此代码将文本文件转换为 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”

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