我有文本文件,我通过将它们复制/粘贴到Excel中转换为Excel然后转到DATA - >列到文本。
现在我想通过在C#中创建程序来实现自动化。
我将对Excel文件中的数据进行一些编辑。如果特定列具有特定名称等,则可以生成新的Excel文件。因此,从一个文本文件中我最终会得到三个或四个Excel文件。
有什么相对优点:
将文本文件读入字符串/列表然后检查数据然后将数据写入不同的Excel文件?
或
在C#中使用TextToColumn()方法,然后开始编辑,然后将其写入新的Excel文件?
如果还有其他更好的方法来完成这样的事情,那么请建议。
编辑:我看到很多第三方建议,但我想自己做,所以我可以学习。答案 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”
您还可以对所需的值进行检查,并将其写入单独的文件中。