入门套件
首先我已经下载了Open XML Format SDK 2.0,它带有以下三个有用的工具:
C:\Program Files\Open XML Format SDK\V2.0\tools
DocumentReflector.exe
自动生成C#代码以构建电子表格。
OpenXmlClassesExplorer.exe
显示Ecma规范和类文档(使用MSDN样式格式)。
OpenXmlDiff.exe
图形化比较两个Open XML文件并搜索错误。
我建议任何开始将.xlsx重命名为.zip的人,这样您就可以查看驱动电子表格的XML文件(例如,我们的工作表在“xl \ worksheets”中)。
代码
免责声明:我从MSDN技术文章中窃取了所有代码;D
以下代码使用我手动制作的*.xlsx模板进行修改。
命名空间引用
using System.IO;
using System.Xml;
using DocumentFormat.OpenXml.Packaging;
using DocumentFormat.OpenXml.Spreadsheet;
using DocumentFormat.OpenXml;
DataClassesDataContext db = new DataClassesDataContext();
File.Copy(@"C:\inetpub\wwwroot\project.Web\Clients\Handlers\oxml-tpl\livreurs.xlsx", @"C:\inetpub\wwwroot\project.Web\Clients\Handlers\oxml-tpl\generated.xlsx", true);
using (SpreadsheetDocument myWorkbook = SpreadsheetDocument.Open(@"C:\inetpub\wwwroot\project.Web\Clients\Handlers\oxml-tpl\generated.xlsx", true))
{
WorkbookPart workbookPart = myWorkbook.WorkbookPart;
WorksheetPart worksheetPart = workbookPart.WorksheetParts.ElementAt(2);
SheetData sheetData = worksheetPart.Worksheet.GetFirstChild<SheetData>();
int index = 2;
var query = from t in db.Clients select t;
foreach (var item in query)
{
string Nom = item.Nom;
Row row = new Row();
row.RowIndex = (UInt32)index;
Cell cell = new Cell();
cell.DataType = CellValues.InlineString;
cell.CellReference = "A"+index;
Text t = new Text();
t.Text = Nom;
InlineString inlineString = new InlineString();
inlineString.AppendChild(t);
cell.AppendChild(inlineString);
row.AppendChild(cell);
sheetData.AppendChild(row);
index++;
}
worksheetPart.Worksheet.Save();
}
我还没有完成,我的第二个任务是在修改后自动下载电子表格。
最后,我将用户重定向到我生成的电子表格(来自我的aspx页面)。
context.Response.Redirect("Oxml-tpl/generated.xlsx")