2017-09-05 53 views
1

最近我试图挽救Aspose.Cells.Workbook与Worksbook保存流被打破

private Stream GetWorkbook() 
{ 
    // processing workbook here 
    // ... 
    // saving to stream 
    return workbook.SaveToStream(); 
} 

private void Save() 
{ 
    using (stream = GetWorkbook()) 
     using (var fileStream = new FileStream(filePath, FileMode.Create, FileAccess.Write)) 
     { 
      stream.CopyTo(fileStream); 
     } 
} 

到流,但,当我试图打开生成的.xlsx文件的Excel发送我的错误文件损坏。

+0

什么是XLSX文件的文件大小?如果您将xlsx文件重命名为“a.zip”并将其打开,那么它是一个有效的zip文件吗? – mjwills

+0

@mjwills不,事实并非如此。实际的模板文件大小为120KB,生成的文件为1KB。 – Max

+0

是否在'CopyTo'帮助之前放置'stream.Seek(0,SeekOrigin.Begin);'? – mjwills

回答

1

SaveToStream()方法将只保存您的工作簿XLS格式。所以你不应该使用这个方法,而是使用下面的代码将工作簿保存在内存流对象中。它应该解决你的问题。

C#

//Load your Excel file 
Workbook wb = new Workbook(yourFile); 

//Create memory stream object 
MemoryStream ms = new MemoryStream(); 

//Determine the save format 
SaveFormat svfmt = (SaveFormat)wb.FileFormat; 

//Save the workbook to memory stream 
wb.Save(ms, svfmt); 

注:我作为开发布道者的Aspose工作