在打开用DocumentFormat.OpenXml创建的Excel文档时消除警告

时间:2019-05-22 08:06:41

标签: c# .net openxml

打开由XML XML DocumentFormat.OpenXml块包生成的Excel文件时出现问题。 打开后,此文件未显示任何要解决的错误。但是在打开excel文件时仍然给出警告。

任何可解决或验证生成的Excel错误的方法。

Warning while opening document

下面是我用来生成Excel文档的方法。

public byte[] Create()
    {
        byte[] excelBytes;
        using (var memoryStream = new MemoryStream())
        {
            //Open the copied template workbook. 
            using (SpreadsheetDocument myWorkbook = SpreadsheetDocument.Create(memoryStream, SpreadsheetDocumentType.Workbook))
            {
                WorkbookPart workbookPart = myWorkbook.AddWorkbookPart();
                workbookPart.Workbook = new Workbook();
                workbookPart.Workbook.AppendChild(new FileVersion { ApplicationName = "Microsoft Office Excel" });

                //Add Sheets to the Workbook.
                var sheets = myWorkbook.WorkbookPart.Workbook.AppendChild(new Sheets());

                // Create Styles and Insert into Workbook
                WorkbookStylesPart stylePart = myWorkbook.WorkbookPart.AddNewPart<WorkbookStylesPart>();
                stylePart.Stylesheet = new CustomStylesheet();
                stylePart.Stylesheet.Save();



                List<string> headerNames = GetPropertyInfo<T>().Select(x => x.Replace("__", " ")).ToList();
                foreach (KeyValuePair<string, List<T>> data in objectsToExportData)
                {
                    int sheetindex = 1;
                    WorksheetPart worksheetPart = myWorkbook.WorkbookPart.AddNewPart<WorksheetPart>();
                    string relId = workbookPart.GetIdOfPart(worksheetPart);
                    SheetData sheetData = CreateSheetData(data.Value, headerNames, stylePart);
                    worksheetPart.Worksheet = new Worksheet();

                    int numCols = headerNames.Count;
                    int width = headerNames.Max(h => h.Length) + 5;

                    Columns columns = new Columns();
                    for (int col = 0; col < numCols; col++)
                    {
                        Column c = CreateColumnData((UInt32)col + 1, (UInt32)numCols + 1, width);

                        columns.Append(c);
                    }
                    worksheetPart.Worksheet.AppendChild(columns);
                    worksheetPart.Worksheet.AppendChild(sheetData);
                    //Append a new worksheet and associate it with the workbook. 
                    sheets.AppendChild(new Sheet
                    {
                        Id = myWorkbook.WorkbookPart.GetIdOfPart(worksheetPart),
                        SheetId = (uint)sheetindex,
                        Name = data.Key
                    });
                    //Sheet sheet = new Sheet { Name = data.Key, SheetId = (uint)sheetindex, Id = relId };
                    //sheets.AppendChild(sheet);
                    //worksheetPart.Worksheet.Save();
                    sheetindex++;
                }

                //workbookPart.Workbook.Append(sheets);
                //myWorkbook.WorkbookPart.Workbook = workbook;
                myWorkbook.WorkbookPart.Workbook.Save();
                myWorkbook.Close();
            }
            excelBytes = memoryStream.ToArray();
        }
        return excelBytes;
    }

0 个答案:

没有答案