使用开放XML格式SDK 2.0 CTP创建文档时不保存

本文关键字:创建 CTP 文档 保存 XML SDK 格式 | 更新日期: 2023-09-27 18:04:57

我想使用Open XML Format SDK 2.0创建一个基于模板的excel文档。我遵循本教程使用开放XML格式SDK 2.0 CT创建文档。我的问题是,行和单元格我放在文档没有得到保存。当我打开文档时,它看起来就像模板一样。

运行代码时不会抛出异常。我想我必须强制将更改保存在文档中,但我不知道该怎么做。

下面是我的一些代码:

    public static void GenerateExcelReportToDisk()
    {
        var factory = new Factory();
        var generated = "result.xlsx";
        var newFile = Util.GetReportTargetPath() + generated;
        var templateFile = Util.GetReportTemplatePath() + @"template.xlsx";
        File.Copy(templateFile, newFile, true);
        using (var myWorkbook = SpreadsheetDocument.Open(newFile, true))
        {
            var workbookPart = myWorkbook.WorkbookPart;
            var worksheetPart = workbookPart.WorksheetParts.First();
            var sheetData = worksheetPart.Worksheet.GetFirstChild<SheetData>();
            //Get data
            var data = factory.GetAllFixtures().Take(20);
            int rowIndex = 3;
            foreach (var fixture in data)
            {
                var pcRate = fixture.PCRate;
                var account = fixture.Charter != null ? fixture.Charter.Shortname : null;
                var region = fixture.Region != null ? fixture.Region.GroupName : null;
                //CreateContentRow is exactly like the tutorial linked above.
                var row = CreateContetRow(rowIndex, region, pcRate, account);
                rowIndex++;
                sheetData.AppendChild(row);
            }
            //Tried to add myWorkbook.WorkbookPart.Workbook.Save(); here, but it doesn't do anything
            myWorkbook.Close();
        }

使用开放XML格式SDK 2.0 CTP创建文档时不保存

嗯,我很快就自己弄明白了。把答案贴在这里,以防对别人(包括我自己)有帮助:

myWorkbook.Close();上一行加上worksheetPart.Worksheet.Save();