gpt4 book ai didi

c# - 另存为使用 EPPlus?

转载 作者:IT王子 更新时间:2023-10-29 04:47:29 26 4
gpt4 key购买 nike

有人知道如何使用 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();
}

但是得到以下错误?

包对象已关闭并释放,因此无法对此对象或在此包的一部分上打开的任何流执行操作。

最佳答案

包将在您调用任何函数后关闭并释放 GetAsByteArraySaveSaveAs。这就是你收到消息的原因

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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com