2012-01-20 88 views
2

使用Microsoft的OpenXML SDK有什麼方法可以使用範圍從DataSet插入到Excel中?OpenXML SDK - Excel範圍

以前,Excel API(Interop Assemblies)會讓你這樣做。現在,至少通過嘗試和讀取樣本,我發現的唯一方法是使用循環來創建每一行和單元格。

我已經看到一些第三方工具正在做這件事,但我希望它開箱即用。謝謝。

+0

使用第三方工具有什麼問題?他們傾向於使你的工作更容易... – Nuffin

回答

0

忘掉使用interop,你將不得不在本地安裝excel。我曾經用Excel中使用的最好的第三方工具是Gembox Spreedsheet並且它是免費的:

http://www.gemboxsoftware.com/

有關於如何在支持選項卡上使用該軟件的網站上滿篇。下面是它是多麼容易插入數據從一個數據集到Excel的例子:

// Create new ExcelFile. 
ExcelFile ef2 = new ExcelFile(); 

// Imports all the tables from DataSet to new file. 
foreach (DataTable dataTable in dataSet.Tables) 
{ 
    // Add new worksheet to the file. 
    ExcelWorksheet ws = ef2.Worksheets.Add(dataTable.TableName); 

    // Change the value of the first cell in the DataTable. 
    dataTable.Rows[0][0] = "This is new file!"; 

    // Insert the data from DataTable to the worksheet starting at cell "A1". 
    ws.InsertDataTable(dataTable, "A1", true); 
} 

// Save the file to XLS format. 
ef2.SaveXls("DataSet.xls"); 

您可以讀取和寫入文件與OpenXML的是這樣的:

ExcelFile ef = new ExcelFile(); 

// Loads OpenXML file. 
ef.LoadXlsx("filename.xlsx", XlsxOptions.None); 

// Selects first worksheet. 
ExcelWorksheet ws = ef.Worksheets[0]; 

// Change the value of the cell "A1". 
ws.Cells["A1"].Value = "Hello world!"; 

// Saves the file in OpenXML format. 
ef.SaveXlsx("NewFile.xlsx") 

我已經使用這個.NET組件很多次都取得了巨大的成功和最小的代碼量。

+0

所以沒有辦法做到這一點開箱即用?我在看DefinedName類,但不知道這會起作用。 (http://msdn.microsoft.com/en-us/library/ee841230.aspx) – user1005806

+0

相信我,你不會想完成所有那些只是爲了完成別人已經完成的任務。沒有必要重新發明輪子。 – MDL

+0

看看這個:http://stackoverflow.com/questions/643643/how-to-create-and-download-excel-document-using-asp-net – MDL