asp.net OpenXML将数据插入到单元格中

时间:2015-06-03 08:45:35

标签: asp.net asp.net-mvc openxml

我一直在按照本指南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);
        }

1 个答案:

答案 0 :(得分:0)

MSDN示例正在使用SpreadsheetDocument.Open打开现有文件,但您正在使用SpreadsheetDocument.Create创建一个全新的文件。创建全新文件时,必须创建某些元素才能使文件有效。您缺少的元素是SheetsSheet元素。

SheetsSheetData分开存储,因此您需要在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"
});