2012-05-28 35 views
0

我想添加到我的應用程序將數據保存到XLS(舊的Excel文件)的能力。如何使用c#將DataGrid保存爲XLS?

我見過一個關於如何在ASP.NET here中執行此操作的示例,但我不知道這是如何轉換爲桌面應用程序的c#代碼的。

我也看了一下Excel自動化,它看起來像這樣:

private void button1_Click(object sender, EventArgs e) 
{ 
    Excel.Application xlApp ; 
    Excel.Workbook xlWorkBook ; 
    Excel.Worksheet xlWorkSheet ; 
    object misValue = System.Reflection.Missing.Value; 

    xlApp = new Excel.ApplicationClass(); 
    xlWorkBook = xlApp.Workbooks.Add(misValue); 

    xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1); 
    xlWorkSheet.Cells[1, 1] = "http://csharp.net-informations.com"; 

    xlWorkBook.SaveAs("csharp-Excel.xls", Excel.XlFileFormat.xlWorkbookNormal, misValue, misValue, misValue, misValue, Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue); 
    xlWorkBook.Close(true, misValue, misValue); 
    xlApp.Quit(); 

    releaseObject(xlWorkSheet); 
    releaseObject(xlWorkBook); 
    releaseObject(xlApp); 

    MessageBox.Show("Excel file created , you can find the file c:\\csharp-Excel.xls"); 
} 

private void releaseObject(object obj) 
{ 
    try 
    { 
     System.Runtime.InteropServices.Marshal.ReleaseComObject(obj); 
     obj = null; 
    } 
    catch (Exception ex) 
    { 
     obj = null; 
     MessageBox.Show("Exception Occured while releasing object " + ex.ToString()); 
    } 
    finally 
    { 
     GC.Collect(); 
    } 
} 

而且我不想使用它,因爲:

  1. ,如果我出口這將是ueberslow大量的數據

  2. 我希望這可以在沒有安裝Microsoft Excel的PC上工作

我也試過CarlosAg.Excel.Xml,它似乎工作,除了當我打開文件時,我從Excel中得到警告,該文件不是XLS格式,但另一個。

任何人都可以推薦給我一個免費的C#庫,它可以做到這一點,或者告訴我如何使用傳統的.Net庫來保存數據到XLS?

回答

1

使用NOPI,這對codeplex.com

該項目可爲POI Java項目在 http://poi.apache.org/ .NET版本。 POI是一個開放源代碼項目,可以幫助您讀取/寫入xls,doc,ppt文件 。它有着廣泛的應用。

下面是關於如何使用NOPI一個例子:

 using (FileStream fileOut = new FileStream("poi-test.xls", FileMode.OpenOrCreate)) 
     { 
      HSSFWorkbook workbook = new HSSFWorkbook(); 
      var worksheet = workbook.CreateSheet("POI Worksheet"); 

      // index from 0,0... cell A1 is cell(0,0) 
      var row1 = worksheet.CreateRow((short)0); 

      var cellA1 = row1.CreateCell((short)0); 
      cellA1.SetCellValue("Hello"); 
      ICellStyle cellStyle = workbook.CreateCellStyle(); 
      cellStyle.FillForegroundColor = HSSFColor.GOLD.index; 
      cellStyle.FillPattern = FillPatternType.SOLID_FOREGROUND;//.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND); 
      cellA1.CellStyle = cellStyle; 

      ICell cellB1 = row1.CreateCell((short)1); 
      cellB1.SetCellValue("Goodbye"); 
      cellStyle = workbook.CreateCellStyle(); 
      cellStyle.FillForegroundColor = HSSFColor.LIGHT_CORNFLOWER_BLUE.index; 
      cellStyle.FillPattern = FillPatternType.SOLID_FOREGROUND; 
      cellB1.CellStyle = cellStyle; 

      var cellC1 = row1.CreateCell((short)2); 
      cellC1.SetCellValue(true); 

      var cellD1 = row1.CreateCell((short)3); 
      cellD1.SetCellValue(new DateTime()); 
      cellStyle = workbook.CreateCellStyle(); 
      cellStyle.DataFormat = HSSFDataFormat 
        .GetBuiltinFormat("m/d/yy h:mm"); 
      cellD1.CellStyle = cellStyle; 

      workbook.Write(fileOut); 
     } 

編號: Creating Excel spreadsheets .XLS and .XLSX in C# by Leniel Macaferi 

0

另一種方法是導出爲CSV(逗號分隔值)文件,它們只是包含數據的純文本文件。 Excel(如果已安裝)通常是CSV文件的默認應用程序,並且不需要第三方庫。