if (!File.Exists(this.savePath.FullName + "\\" + value + ".xlsx"))
{
using ( ExcelPackage exp = new ExcelPackage(finfo))
{
//ExcelPackage exps= new ExcelPackage(pather);
ExcelWorksheet exlss = exp.Workbook.Worksheets[timing];
exlss.Cells["A1"].LoadFromDataTable(dt, true, TableStyles.Medium9);
exp.SaveAs(existing);
}
}
else if (File.Exists(this.savePath.FullName + "\\" + value + ".xlsx")) {
timing = "2011";
using (ExcelPackage exp = new ExcelPackage(existing))
{
//ExcelPackage exps= new ExcelPackage(pather);
ExcelWorksheet exlss = exp.Workbook.Worksheets[timing];
exlss.Cells["A1"].LoadFromDataTable(dt, true, TableStyles.Medium9);
exp.Save();
}
}
因此,我试图使用EPPlus保存到从用户获得的特定文件夹。然而,尽管它在第一次使用示例中保存得很好,但当我尝试保存或保存时,它只是抛出一个错误。
如果我使用原始文件作为模板(正如我下面所做的),并简单地再次使用第一部分,它工作正常。我不知道为什么保存不工作。我已经尝试将SaveAs保存到不同的位置,但这会导致同样的错误。
如果你有任何想法,请帮助我。
保存文件C:\Documents and Settings\xxx\Desktop\Testing Andyxxxxxx\2481.xlsx时出错
~edit抱歉所有的编辑,我是新来的这是一个InvalidOperationException(未处理)
6条答案
按热度按时间qxsslcnc1#
我发现了问题,你需要保存文件,然后再尝试处置工作表,在你的情况下,你需要添加一个新的工作表之前,引用它。
tpgth1q72#
请尝试将Epplus dll更新到最新版本。当前版本为4.0.5,可从此处下载:
http://epplus.codeplex.com/downloads/get/813458
今天帮助了我。
bpsygsoo3#
我知道这是一个老问题,但我刚刚从一个流行的报告程序导出XLSX时遇到了这个问题。XLSX引用的样式没有被保存。我用以下方法解决了这个问题:
此问题可能由于不同的原因发生,但可能是XLSX文件的问题。
cpjpxq1n4#
我在EPPlus 4.5.3.2中也得到了这个InvalidOperation。对我来说,问题是我试图在Worksheet using块结束后调用SaveAs(),即使ExcelPackage还没有到它的using块结束。所以,请确保在保存包之前没有处理内部工作表。
lokaqttq5#
我在EPPlus 4.5.3.2中也得到了这个InvalidOperation。对我来说,问题是在我的Excel模板文件中,其中有一个图像。因此,Azure Linux App Service抛出一个异常:
我在这里找到了解决方案:https://github.com/dotnet/core/issues/2746#issuecomment-595980412
只需在“启动命令”中插入以下代码,更改dll名称。
enter image description here
apt-get update && apt-get install -y apt-utils libgdiplus libc6-dev && dotnet YourWebSite.dll
3pmvbmvn6#
在EPPlus 6.2中对现有的xlsx文件使用SaveAs()时出现了相同的异常。System.InvalidOperationException:保存文件时出错...内部异常:NullReferenceException。
已恢复到EPPlus 6.1.3以解决此问题。