创建新 WorksheetPart 时出现 OpenXML 错误

问题描述 投票:0回答:1

首先,我的代码在控制台应用程序中运行。我通过 NuGet 将 OpenXML 安装到解决方案中。 我创建了一个新的解决方案,即 .NET dll 库,并以相同的方式安装了 openXML,并使用 OpenXML dll 部署了 dll,当调用我的 dll 时,出现如下错误。

安装的OpenXML是3.0.2

VerificationException:方法 DocumentFormat.OpenXml.Packaging.OpenXmlPartContainer.AddNewPart:类型参数“DocumentFormat.OpenXml.Packaging.WorksheetPart”违反了类型参数“T”的约束。

我已经注释掉了大部分代码,试图隔离发生这种情况的位置,我想我已经找到了它。有趣的是,当它确实抛出错误时,它甚至不会进入例程 CreateExcel()。但是当我注释掉某一行代码时,它会单步执行。这是我的基本结构。

我的主要日常。

internal static void CreateRawMtlExcel(List<RawMtl> Mtls, string OutputPath)
        {
            //SpreadsheetDocument spreadsheetDocument = SpreadsheetDocument.Create(string.Format(@"{0}\{1}MexRawMtls.xlsx", OutputPath), SpreadsheetDocumentType.Workbook);

            using (SpreadsheetDocument package = SpreadsheetDocument.Create(OutputPath, SpreadsheetDocumentType.Workbook))
            {
                CreateExcel(package, Mtls);
            }
        }


private static void CreateExcel(SpreadsheetDocument document, List<RawMtl> Mtls)
        {

            WorkbookPart workbookPart = document.AddWorkbookPart();
            workbookPart.Workbook = new Workbook();
            WorksheetPart worksheetPart = workbookPart.AddNewPart<WorksheetPart>(); //This seems to be the line that is causing issues. 
            
            SheetData sheetData = new SheetData();

            worksheetPart.Worksheet = new Worksheet(sheetData);
            //Columns hColumns = GetHeaderColumns();

            //Sheets sheets = document.WorkbookPart.Workbook.
            //    AppendChild<Sheets>(new Sheets());

            //// Append a new worksheet and associate it with the workbook.
            //Sheet sheet = new Sheet()
            //{
            //    Id = document.WorkbookPart.
            //    GetIdOfPart(worksheetPart),
            //    SheetId = 1,
            //    Name = "Raw Materials"
            //};

            //sheets.Append(sheet);
            //var sheetdata = worksheetPart.Worksheet.GetFirstChild<SheetData>();

            ////worksheetPart.Worksheet.InsertBefore(hColumns, sheetdata);
            ////WorkbookStylesPart workbookStylesPart1 = workbookPart.AddNewPart<WorkbookStylesPart>("rId3");
            ////GenerateWorkbookStylesContent(workbookStylesPart1);

            workbookPart.Workbook.Save();
        }
c# openxml
1个回答
0
投票

我找到了答案。所以首先我通过创建一个单独的控制台应用程序并引用 dll 来测试它,它起作用了。所以问题是如何称呼它。我正在第三方程序中调用我的 dll,该程序已经有 OpenXML 引用,并且它是旧版本。 2.12.1 当我降级时,一切正常。

© www.soinside.com 2019 - 2024. All rights reserved.