如何使用C#表单创build一个空白的Excel文件?

我似乎无法创build一个新的空白excel文件,所以我可以在后面用excel Interop编写它

System.IO.FileStream fs =(System.IO.FileStream)saveFileDialog1.OpenFile(); switch (saveFileDialog1.FilterIndex) { case 1: //write blank xlsx? break; case 2: //write blank xls? break; } fs.Close(); ExportDataSetToExcel(_destinationDataSet, saveFileDialog1.FileName); 

如果我传递一个空文件,我得到这个错误

无法打开文件,因为文件格式或文件扩展名无效。 validation该文件是否已损坏,文件扩展名是否与该文件的格式匹配。

所以..我怎样才能创build一个空的xls或xls文件?

最简单的方法

 var app = new Microsoft.Office.Interop.Excel.Application(); var wb = app.Workbooks.Add(); wb.SaveAs("File Path.xlsx"); wb.Close(); 

清空Excel文件不是简单的空文件,因为它们还存储一些标题数据。 编写Excel文件的一种现代方式是使用Open XML SDK 2.5如下所示:

 var spreadsheetDocument = SpreadsheetDocument.Create(filepath, SpreadsheetDocumentType.Workbook); 

通过这样做,您可以获得一个引用,允许您将数据写入Excel文件。

为了获得文件filepath的值,可以使用SaveFileDialog来指示要使用的path,如文档中所示 :

 var saveFileDialog1 = new SaveFileDialog(); saveFileDialog1.Filter = "Excel files|*.xlsx"; saveFileDialog1.Title = "Save an Image File"; saveFileDialog1.ShowDialog(); if(saveFileDialog1.FileName != "") { // file name is available here } 

您可以使用第三方库(如EPPlus)更轻松地使用C#进行Excel操作。

免责声明:以上提示仅适用于Excel 2007及以上版本。

我结束了这个…

 if (saveFileDialog1.FileName != "") { var app = new Application(); var wb = app.Workbooks.Add(); switch (saveFileDialog1.FilterIndex) { case 1: wb.SaveAs(saveFileDialog1.FileName); break; case 2: wb.SaveAs(saveFileDialog1.FileName, XlFileFormat.xlExcel8); break; } wb.Close(); app.Quit(); ExportDataSetToExcel(_destinationDataSet, saveFileDialog1.FileName); }