1

Open XML FormatSDK2.0を使用してテンプレートに基づいてExcelドキュメントを作成したいと思います。このチュートリアルに従って、Open XML Format SDK2.0CTを使用してドキュメントを作成しました。私の問題は、ドキュメントに入れた行とセルが保存されないことです。ドキュメントを開くと、テンプレートのように見えます。

コードを実行したときにスローされる例外はありません。変更をドキュメントに強制的に保存する必要があると思いますが、その方法がわかりません。

これが私のコードの一部です:

    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();
        }
4

1 に答える 1

2

さて、しばらくして自分でこれを理解することができました。誰か(私を含む)を助ける場合に備えて、ここに答えを投稿してください:

上の行にmyWorkbook.Close();追加worksheetPart.Worksheet.Save();

それと同じくらい簡単...

于 2013-03-21T11:23:58.240 に答える