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

标签 c# excel csv

我有一个已采用逗号分隔值 (csv) 格式的 .txt 文件。 我想将 .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)。 我能做些什么来解决这个问题? 谢谢!

最佳答案

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

使用 Worksheet.Copy 方法,如 How to: Programmatically Copy Worksheets 中所述和 here .

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);

同时标出

If you do not specify either Before or After, Microsoft Office Excel creates a new workbook that contains the copied sheet.

所以你可以这样做

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

并且无需显式添加 newWorkbook

关于c# - 将 csv 格式的 .txt 文件作为工作表添加到 C# 中的现有工作簿,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29491969/

相关文章:

c# - Unity3D获取动画 Controller 当前动画时间

c# - 线程导致应用程序在 iOS 上滞后,但在 Android 上不会

适用于 PostgreSQL 的 Excel 2016 和 ODBC 驱动程序

vba - Excel VBA 4步宏不执行最后一步 - 范围错误

java - 当标题存在时如何跳过 csv 文件中的标题

javascript - 服务器端 CSV 文件将其转换为 JavaScript 数组

c# - 创建一个 Youtube 机器人

c# - 如何向类(class)添加事件

vba - 提高宏隐藏行的速度

python - Pandas 向 MySQL 中插入数据