我一直在按照本指南https://msdn.microsoft.com/EN-US/library/office/cc861607.aspx将字符串插入excel文件中的单元格。这个例子真的很混乱,即使我复制/粘贴它也不起作用。我正在寻找一个非常简单的示例,将值插入到单元格中,如:
spredSheet.InsertCell("A", 1, string value)
我真的可以使用一个简单的代码示例,向我展示如何使用asp.net中的OpenXML将数据插入到单元格中。
我尝试了这篇帖子Using OpenXML to insert a datatable into excel中的代码,但它创建了一个损坏的Excel文件。 这是我的代码在没有链接
的辅助函数的情况下的样子using (SpreadsheetDocument myDoc = SpreadsheetDocument.
Create(Server.MapPath("/data.xls"), SpreadsheetDocumentType.Workbook))
{
WorkbookPart workbookpart = myDoc.AddWorkbookPart();
workbookpart.Workbook = new Workbook();
// Add a WorksheetPart to the WorkbookPart.
WorksheetPart worksheetPart = workbookpart.AddNewPart<WorksheetPart>();
//add column names to the first row
Row header = new Row();
header.RowIndex = (UInt32)1;
SheetData sheetData = new SheetData();
Cell headerCell = createTextCell(1, 1, text);
header.AppendChild(headerCell);
sheetData.AppendChild(header);
// Add a WorkbookPart to the document.
worksheetPart.Worksheet = new Worksheet(sheetData);
}
答案 0 :(得分:0)
MSDN示例正在使用SpreadsheetDocument.Open
打开现有文件,但您正在使用SpreadsheetDocument.Create
创建一个全新的文件。创建全新文件时,必须创建某些元素才能使文件有效。您缺少的元素是Sheets
和Sheet
元素。
Sheets
与SheetData
分开存储,因此您需要在Sheet
内创建Sheets
,然后将Sheets
与{{1}相关联}}
这可以这样做:
WorksheetPart
因此,您的完整代码列表将是:
Sheets sheets = myDoc.WorkbookPart.Workbook.AppendChild(new Sheets());
sheets.AppendChild(new Sheet()
{
Id = myDoc.WorkbookPart.GetIdOfPart(myDoc.WorkbookPart.WorksheetParts.First()),
SheetId = 1,
Name = "Sheet1"
});