我们正在使用 OpenXML 生成 Excel 文件,并尝试使用此代码,但在尝试打开 Excel 文件时出现错误:
“test.xslx”中的某些内容有问题。如果您想恢复,请告诉我们。
代码:
public byte[] ExportDatatoExcel()
{
MemoryStream memoryStream = new MemoryStream();
SpreadsheetDocument spreadsheet = SpreadsheetDocument.Create(memoryStream, DocumentFormat.OpenXml.SpreadsheetDocumentType.Workbook);
WorkbookPart workbookPart = spreadsheet.AddWorkbookPart();
workbookPart.Workbook = new Workbook();
Sheets sheets = workbookPart.Workbook.AppendChild<Sheets>(new Sheets());
// OpenSheet
WorksheetPart worksheetPart = workbookPart.AddNewPart<WorksheetPart>();
worksheetPart.Worksheet = new Worksheet();
var sheet = new Sheet() { Id = workbookPart.GetIdOfPart(worksheetPart), SheetId = 1, Name = "test" };
sheets.Append(sheet);
OpenXmlWriter DataWriter = OpenXmlWriter.Create(worksheetPart);
// getting error because of writing to worksheet
DataWriter.WriteStartElement(worksheetPart.Worksheet);
DataWriter.WriteStartElement(new SheetData());
DataWriter.WriteEndElement();
DataWriter.Close();
worksheetPart = null;
workbookPart.Workbook.Save();
spreadsheet.Save();
spreadsheet.Close();
memoryStream.Position = 0;
return memoryStream.ToArray();
}
我在尝试打开下载的文件时遇到问题。当我尝试改变这条线时
DataWriter.WriteStartElement(worksheetPart.Worksheet);
到
DataWriter.WriteStartElement(new Worksheet());
它工作正常,但是当我尝试检查
worksheetpart
实例时,它显示 Worksheet
属性为“System.IO 异常”。
请提出问题可能是什么
我尝试了这一行的更改,它的工作没有任何问题。 更改了以下行:
worksheetPart.Worksheet = new Worksheet(); to
worksheetPart.Worksheet = new Worksheet(new SheetData());