我使用Open XML文档创建电子表格并将其输出到内存流中并从服务器返回。但是,输出不包括DataSheet/Worksheet内容。我尝试了各种不同的网址,包括VB.NET的。它们都不包括DataSheet中的内容。但是,如果我使用Worksheet.OuterXml属性分别打印工作表的内容,则会正确显示它。它不被打印为Workbook.OuterXml属性的一部分。示例代码和输出如下所示。OpenXml Doc sdk 2.0不生成输出中的DataSheet数据
private MemoryStream testSpreadsheetOutputAsStream()
{
MemoryStream outStream = new MemoryStream();
using (SpreadsheetDocument spreadSheet = SpreadsheetDocument.Create(outStream, SpreadsheetDocumentType.Workbook))
{
// create the workbook
spreadSheet.AddWorkbookPart();
spreadSheet.WorkbookPart.Workbook = new Workbook(); // create the worksheet
spreadSheet.WorkbookPart.AddNewPart<WorksheetPart>();
spreadSheet.WorkbookPart.WorksheetParts.First().Worksheet = new Worksheet();
// create sheet data
spreadSheet.WorkbookPart.WorksheetParts.First().Worksheet.AppendChild(new SheetData());
// create row
spreadSheet.WorkbookPart.WorksheetParts.First().Worksheet.First().AppendChild(new Row());
// create cell with data
spreadSheet.WorkbookPart.WorksheetParts.First().Worksheet.First().First().AppendChild(
new Cell() { CellValue = new CellValue("101") });
// save worksheet
spreadSheet.WorkbookPart.WorksheetParts.First().Worksheet.Save();
// create the worksheet to workbook relation
spreadSheet.WorkbookPart.Workbook.AppendChild(new Sheets());
spreadSheet.WorkbookPart.Workbook.GetFirstChild<Sheets>().AppendChild(new Sheet()
{
Id = spreadSheet.WorkbookPart.GetIdOfPart(spreadSheet.WorkbookPart.WorksheetParts.First()),
SheetId = 1,
Name = "test"
});
spreadSheet.WorkbookPart.Workbook.Save();
System.Diagnostics.Debug.WriteLine(spreadSheet.WorkbookPart.WorksheetParts.First().Worksheet.OuterXml);
System.Diagnostics.Debug.WriteLine(spreadSheet.WorkbookPart.Workbook.OuterXml);
}
return outStream;
}
输出窗口的输出如下。
Worksheet output <x:worksheet xmlns:x="http://schemas.openxmlformats.org/spreadsheetml/2006/main"><x:sheetData><x:row><x:c><x:v>101</x:v></x:c></x:row></x:sheetData></x:worksheet>
Workbook output
<x:workbook xmlns:x="http://schemas.openxmlformats.org/spreadsheetml/2006/main"><x:sheets><x:sheet name="test" sheetId="1" r:id="R0ed99ee34c894367" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" /></x:sheets></x:workbook>
我想这是正确的,当工作表的内容没有出现在工作簿xml中。这可能只是因为它只包含对工作表的引用,并且它们中的每一个的内容都存储在不同的部分中,所以您的文件似乎没问题。您是否尝试过打开它并查看它是否包含您输入的数据? – 2012-02-02 19:56:18