- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
有人知道如何使用 package.Saveas 函数吗?
package.SaveAs(tempFolderPathAlt + saveas + ".xlsx");
目前这是带有以下错误的红色下划线:
The best overloaded method match for 'OfficeOpenXml.ExcelPackage.SaveAs(System.IO.Stream)' has some invalid arguments
目前我正在按以下方式保存文件。
FileStream aFile = new FileStream(tempFolderPathAlt + saveas + ".xls", FileMode.Create);
byte[] byData = package.GetAsByteArray();
aFile.Seek(0, SeekOrigin.Begin);
aFile.Write(byData, 0, byData.Length);
aFile.Close();
但这样一来,包就会保持打开状态,我无法使用它使用过的文件。
另存为将正确关闭包,但它不接受我的文件路径。
编辑
我试过这个:
using (FileStream aFile = new FileStream(tempFolderPathAlt + saveas + ".xlsx", FileMode.Create))
{
byte[] byData = package.GetAsByteArray();
aFile.Seek(0, SeekOrigin.Begin);
package.SaveAs(aFile);
//aFile.Write(byData, 0, byData.Length);
aFile.Close();
}
但是得到以下错误?
包对象已关闭并释放,因此无法对此对象或在此包的一部分上打开的任何流执行操作。
最佳答案
包将在您调用任何函数后关闭并释放 GetAsByteArray
、Save
、SaveAs
。这就是你收到消息的原因
Package object was closed and disposed, so cannot carry out operations on this object or any stream opened on a part of this package.
解决方法是保存后调用Load
函数继续处理excel文件。或者,如果您只想同时获得 ByteArray 和 FileOutput,我相信您认为它们是相同的。
保存文件到磁盘后就可以读取数据了:
string path = @"C:\test1.xlsx";
Stream stream = File.Create(path);
package.SaveAs(stream);
stream.Close();
byte[] data = File.ReadAllBytes(path);
或者获取到ByteArray后将数据保存到磁盘:
byte[] data = package.GetAsByteArray();
string path = @"C:\test1.xlsx";
File.WriteAllBytes(path, data);
关于c# - 另存为使用 EPPlus?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12912912/
我有 json 数据: { "products": [ { "productId" : 0, "productImg" : "../img/product-ph
我是一名优秀的程序员,十分优秀!