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

时间:2016-06-04 08:37:55

标签: c# excel

我似乎无法创建一个新的空白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);

如果我传递一个空文件,我收到此错误

  

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

那么..我怎样才能创建一个空的xls或xls文件?

3 个答案:

答案 0 :(得分:2)

空Excel文件不是简单的空文件,因为它们还存储一些标题数据。编写Excel文件的一种现代方法是使用Open XML SDK 2.5所示的var spreadsheetDocument = SpreadsheetDocument.Create(filepath, SpreadsheetDocumentType.Workbook);

filepath

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

为了获得SaveFileDialog的值,您可以使用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 } 来指示要使用的路径,如here中所示:

var p = new System.Diagnostics.Process();
    p.StartInfo.FileName = "open";
    p.StartInfo.WorkingDirectory = installFolder;
    p.StartInfo.Arguments = "/bin/bash --args \"open \"SomePath/Commands/myscript.command\"\"";
    p.Start();

使用documentation等第三方库,您可以更轻松地在C#中进行Excel操作。

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

答案 1 :(得分:2)

最简单的方式

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

答案 2 :(得分:0)

我最终这样做了......

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