您的位置:首页 > 运维架构

OpenXml开发-向Excel2007文档中添加数据

2010-07-19 17:54 281 查看
public static void Run()
{
// 打开Excel2007模板文档
using (PackageHelper package = new PackageHelper(Properties.Resources.BaseSpreadsheetML))
{
// 加载sheet1内容到一个XmlDocument
Uri sheet1Uri =
new Uri(@"/xl/worksheets/sheet1.xml", UriKind.Relative);
XmlDocument sheet1Xml =
package.GetWritablePart(sheet1Uri);
XPathNavigator sheet1Data = sheet1Xml.CreateNavigator()
.SelectSingleNode("x:worksheet/x:sheetData",
Namespaces.NamespaceManager);
//向sheet1添加数据
using (XmlWriter writer = sheet1Data.AppendChild())
{
int i;
//添加标题行
Spreadsheet.SpreadsheetDoc.WriteStartRow(writer, 1);
Spreadsheet.SpreadsheetDoc.WriteStringCell(writer, "A", 1, "Name");
Spreadsheet.SpreadsheetDoc.WriteStringCell(writer, "B", 1, "Email");
Spreadsheet.SpreadsheetDoc.WriteStringCell(writer, "C", 1, "Territory");
Spreadsheet.SpreadsheetDoc.WriteStringCell(writer, "D", 1, "Sub Total");
Spreadsheet.SpreadsheetDoc.WriteStringCell(writer, "E", 1, "Tax Amount");
Spreadsheet.SpreadsheetDoc.WriteStringCell(writer, "F", 1, "Freight");
Spreadsheet.SpreadsheetDoc.WriteStringCell(writer, "G", 1, "Sale Total");
writer.WriteEndElement();//关闭标题行标记
int index = 2;//从第二行开始填充数据
for (i = 0; i < 12; i++)
{
// 添加行开始标记
SpreadsheetDoc.WriteStartRow(writer, index);
// 向单元格添加数据
Spreadsheet.SpreadsheetDoc.WriteStringCell(writer, "A", index,
"Name:"+i.ToString());
Spreadsheet.SpreadsheetDoc.WriteStringCell(writer, "B", index,
i.ToString()+"@metarace.com");
Spreadsheet.SpreadsheetDoc.WriteStringCell(writer, "C", index,
i.ToString());
Spreadsheet.SpreadsheetDoc.WriteNumberCell(writer, "D", index,
i);
Spreadsheet.SpreadsheetDoc.WriteNumberCell(writer, "E", index,
i);
Spreadsheet.SpreadsheetDoc.WriteNumberCell(writer, "F", index,
i);
// write the total formula in the cell
Spreadsheet.SpreadsheetDoc.WriteFormulaCell(writer, "G", index,
string.Format("SUM(D{0}:F{0})", index));
// 添加行结束标记
writer.WriteEndElement();
index++;
}
// 添加合计
SpreadsheetDoc.WriteStartRow(writer, index);
// 添加合计单元格的说明和公式
SpreadsheetDoc.WriteStringCell(writer, "F", index, "Sales Totals");
//添加公式单元格
SpreadsheetDoc.WriteFormulaCell(writer, "G", index,
string.Format("SUM(G2:G{0})", index - 1));
// 关闭行
writer.WriteEndElement();
}
//保存
package.SavePart(sheet1Uri, sheet1Xml);
// save the shared strings
SharedStrings.Save(package);
// 保存到文件
package.Save("test.xlsx");
}
}
以上代码中的部分方法将在下篇加以说明

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐