1)簡介
Simple OOXML(http://simpleooxml.codeplex.com/)是一個基於Open Office SDK v 2.0,同時支持office2007 Excel和Word導出的開源類庫。支持.net 3.5及以上版本。對於Excel支持多種數據格式包括字符串、數字、日期等,支持刪除工作簿,支持DataTable的粘貼,支持合並單元格和設置單元格樣式等等。對於Word支持通過書簽定位來輸出字段的功能。
下載地址:本地下載
2)導出Excel
protected void Button1_Click(object sender, EventArgs e) { MemoryStream stream = SpreadsheetReader.Create(); SpreadsheetDocument doc = SpreadsheetDocument.Open(stream, true); WorksheetPart worksheetPart = SpreadsheetReader.GetWorksheetPartByName(doc, "Sheet1"); WorksheetWriter writer = new WorksheetWriter(doc, worksheetPart); writer.PasteText("B2", "Hello World"); //Save to the memory stream SpreadsheetWriter.Save(doc); //Write to response stream Response.Clear(); Response.AddHeader("content-disposition", String.Format("attachment;filename={0}", "example1.xlsx")); Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; stream.WriteTo(Response.OutputStream); Response.End(); }
如果是現有Excel模版的導出則可以把
MemoryStream stream = SpreadsheetReader.Create();
修改為
MemoryStream stream = SpreadsheetReader.Copy(“columnstemplate.xlsx");
3)導出Word
public void DocumentPasteTest() { MemoryStream stream = DocumentReader.Copy(string.Format("{0}\\template.docx", TestContext.TestDeploymentDir)); WordprocessingDocument doc = WordprocessingDocument.Open(stream, true); MainDocumentPart mainPart = doc.MainDocumentPart; DocumentWriter writer = new DocumentWriter(mainPart); Text name = writer.PasteText("Koos van der Merwe", "NAME"); Text age = writer.PasteText("53", "AGE"); //Save to the memory stream, and then to a file writer.Save(); DocumentWriter.StreamToFile(string.Format("{0}\\templatetest.docx", GetOutputFolder()), stream); }
通過Word的書簽功能實現粘貼文本的定位。
4)結語
Simple OOXML是一個功能非常全面好用的導出Excel和Word的解決方案,唯一美工不足是不支持office 2003的導出,希望對於.NET導出數據的朋友有所幫助。