将csv格式的.txt文件作为工作表添加到C#中的现有工作簿

时间:2015-04-07 12:45:54

标签: c# excel csv

我的.txt文件已经是逗号分隔值(csv)格式。 我想将.txt文件中的数据作为工作表添加到打开的Excel工作簿中。

这就是我打开工作簿的方式:

var xlApp = new Excel.Application { Visible = false };
Excel.Workbook newWorkbook = xlApp.Workbooks.Add(Type.Missing);

这就是我尝试将.txt文件添加到工作簿的方式:

string txt2xls = Globals.HomeDir + "\\JSL\\Data1" + ".txt";
string csv2xls = Globals.HomeDir + "\\JSL\\Data1" + ".csv";

if (File.Exists(csv2xls))
File.Delete(csv2xls);

File.Move(txt2xls, Path.ChangeExtension(txt2xls, ".csv"));
newWorkbook.Sheets.Add(csv2xls, Type.Missing, Type.Missing, Type.Missing);

最后一行给了我一个错误(HRESULT:0x800A03EC)。 我该怎么做才能解决这个问题? 谢谢!

1 个答案:

答案 0 :(得分:1)

Excel中的CSV文件可以总共只有一个工作表。您无法将另一个工作表添加为CSV。您必须单独打开CSV作为另一个工作簿,并将工作表从该工作簿复制到多工作表xlsx工作簿newWorkbook

使用How to: Programmatically Copy Worksheetshere中所述的Worksheet.Copy方法。

var xlApp = new Excel.Application { Visible = false };
Excel.Workbook newWorkbook = xlApp.Workbooks.Add(Type.Missing);
Excel.Workbook csvWorkbook = xlApp.Workbooks.Open(csv2xls);
Excel.Worksheet worksheetCSV = ((Excel.Worksheet)csvWorkbook.Worksheets[1]);
Excel.Worksheet targetWorksheet = ((Excel.Worksheet)newWorkbook.Worksheets[1]);
worksheetCSV.Copy(targetWorksheet);

同时标记

  

如果未指定Microsoft Office Excel之前或之后   创建一个包含复制的工作表的新工作簿。

所以你可以做到

worksheetCSV.Copy(Type.Missing, Type.Missing);

并且无需explitly添加newWorkbook