使用C#写入Excel

我有一个基本的WinForms应用程序,并希望能够从这个应用程序写入数据到Excel电子表格。 到目前为止,我有以下代码:

Microsoft.Office.Interop.Excel.Application excelapp = new Microsoft.Office.Interop.Excel.Application(); excelapp.Visible = true; _Workbook workbook = (_Workbook)(excelapp.Workbooks.Add(Type.Missing)); _Worksheet worksheet = (_Worksheet)workbook.ActiveSheet; worksheet.Cells[1, 1] = "Name"; worksheet.Cells[1, 2] = "Bid"; worksheet.Cells[2, 1] = txbName.Text; worksheet.Cells[2, 2] = txbResult.Text; excelapp.UserControl = true; 

现在我想要做的就是写入一个已经创build的Excel文件,从而附加它。 我也希望它能够在后台执行此操作,以便在单击button时将数据写入电子表格并保存,而无需用户进行任何交互。 虽然只是将数据添加到文件不覆盖它。

要打开现有的工作簿,请从中更改您的代码

 _Workbook workbook = (_Workbook)(excelapp.Workbooks.Add(Type.Missing)); 

 _Workbook workbook = (_Workbook)(excelapp.Workbooks.Open(@"C:\Path\To\Your\WorkBook\ExcelWorkBook.Xlsm")); 

然后保存它,您只需调用打开工作簿的Save方法即可:

 workbook.Save(); 

如果您不希望用户看到正在进行的任何操作,并且都在后台运行,则还应该更改您的代码行:

 excelapp.Visible = true; 

 excelapp.Visible = false; 

你的问题的唯一部分我不站在你的声明Whilst just adding data to the file NOT overwriting it. 如果您将数据添加到文件并保存该文件,它将被覆盖。 您是否想将新工作簿保存为不同的文件? 因此有2个文件?

注意:这些不需要超出Interop的任何第三方软件,这些都是Interop的内置function。 这意味着你将不必下载任何东西,或者在你的项目中添加额外的依赖项。

你有没有看过NPOI – 我已经用它成功地读取和写入Excel与C#。

我在填写预制的excel模板的时候发现了这个,非常好

在C#中创buildExcel电子表格.XLS和.XLSX

另外看看他的其他例子非常酷的东西

如果您正在使用Excel 2007或更高版本,则可以尝试使用OpenXML。 我用这个创build新的和修改现有的Excel电子表格已经很成功了。

从以下url下载库: http : //www.microsoft.com/en-us/download/details.aspx?id=5124

SO有很多有用的问题/答案可以帮助你。 这是一个很好的:

Open XML SDK 2.0 – 如何更新电子表格中的单元格?

您需要将Add_Ins编程和来宾做相同的工作,而当用户保存一个文件时,Excel会自动按照您的要求做如下操作:

  this .Application .WorkbookBeforeSave +=new Excel.AppEvents_WorkbookBeforeSaveEventHandler(Application_WorkbookBeforeSave); void Application_WorkbookBeforeSave(Excel.Workbook workbook,bool ui,ref bool ok) { Worksheet worksheet = (Worksheet)workbook.ActiveSheet; worksheet.Cells[1, 1] = "Name"; worksheet.Cells[1, 2] = "Bid"; string filepath = @"Path"; DirectoryInfo d = new DirectoryInfo(filepath); var file =d.GetFiles("*infousers.txt")); string[] info = File.ReadAllLines(filepath + @"\\" + file.Name); string userName=info[0]; string userId=info[1]; worksheet.Cells[2, 1] = userName.ToString(); worksheet.Cells[2, 2] = userId.ToString(); }