2011-11-16 86 views
9

如何使用C#從DataSet中創建多個工作表的Excel文件。我成功地創建了一個單張紙的Excel文件。但我無法爲多張紙張做到這一點。如何使用C#從DataSet中創建多個工作表的Excel文件

問候 嚴酷

+0

我想這取決於你如何看待創建excel文件。你在尋找@在數據集中爲每個表格創建一個頁面嗎? – KreepN

+0

您可能更改了默認的Excel行爲。請參閱http://stackoverflow.com/questions/8066189/c-sharp-create-excel-workbook-with-1-sheet-by-default – JMax

+0

您正在使用哪個技術或組件來創建您正在創建的單張? –

回答

15

下面是編程創建Excel工作簿,並增加了兩片,然後填充兩片材簡單的C#類。最後,保存工作簿在應用程序根目錄中的文件,這樣就可以檢查結果...

public class Tyburn1 
{ 
    object missing = Type.Missing; 
    public Tyburn1() 
    { 
     Excel.Application oXL = new Excel.Application(); 
     oXL.Visible = false; 
     Excel.Workbook oWB = oXL.Workbooks.Add(missing); 
     Excel.Worksheet oSheet = oWB.ActiveSheet as Excel.Worksheet; 
     oSheet.Name = "The first sheet"; 
     oSheet.Cells[1, 1] = "Something"; 
     Excel.Worksheet oSheet2 = oWB.Sheets.Add(missing, missing, 1, missing) 
         as Excel.Worksheet; 
     oSheet2.Name = "The second sheet"; 
     oSheet2.Cells[1, 1] = "Something completely different"; 
     string fileName = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)   
           + "\\SoSample.xlsx"; 
     oWB.SaveAs(fileName, Excel.XlFileFormat.xlOpenXMLWorkbook, 
      missing, missing, missing, missing, 
      Excel.XlSaveAsAccessMode.xlNoChange, 
      missing, missing, missing, missing, missing); 
     oWB.Close(missing, missing, missing); 
     oXL.UserControl = true; 
     oXL.Quit(); 
    } 
} 

要做到這一點,你需要添加到的Microsoft.Office.Interop.Excel引用到你的項目(你可能已經做了這個,因爲你正在創建一張紙)。

,增加了第二片是語句...

Excel.Worksheet oSheet2 = oWB.Sheets.Add(missing, missing, 1, missing) 
          as Excel.Worksheet; 

「1」參數指定一張紙,它可以是更多,如果你想一次添加多個表。

最後說明:聲明oXL.Visible = false;告訴Excel以靜默模式啓動。

+0

我在oXL.Quit()上得到一個錯誤;每次。 Excel Undantagskod:xc0000005 Felförskjutning:0x000000000000f993。該錯誤被放入機器的事件日誌中。你還需要C#4中的缺失arumgents嗎?動態oWB = excelApplication.Workbooks.Add()是不夠的嗎? –

+0

任何翻譯錯誤信息的機會? –

+0

很棒的回答。非常感謝 –

相關問題