excel C# Epplus保存& saveas错误

k4emjkb1  于 2023-04-07  发布在  C#
关注(0)|答案(6)|浏览(578)
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(未处理)

qxsslcnc

qxsslcnc1#

我发现了问题,你需要保存文件,然后再尝试处置工作表,在你的情况下,你需要添加一个新的工作表之前,引用它。

tpgth1q7

tpgth1q72#

请尝试将Epplus dll更新到最新版本。当前版本为4.0.5,可从此处下载:
http://epplus.codeplex.com/downloads/get/813458
今天帮助了我。

bpsygsoo

bpsygsoo3#

我知道这是一个老问题,但我刚刚从一个流行的报告程序导出XLSX时遇到了这个问题。XLSX引用的样式没有被保存。我用以下方法解决了这个问题:

for (int rowIndex = wks.Dimension.Start.Row; rowIndex <= wks.Dimension.End.Row; rowIndex++)
                {
                    var row = wks.Row(rowIndex);
                    try
                    {
                        var s = row.Style;
                    }
                    catch (Exception)
                    {
                        row.StyleID = 0;
                    }
                }

此问题可能由于不同的原因发生,但可能是XLSX文件的问题。

cpjpxq1n

cpjpxq1n4#

我在EPPlus 4.5.3.2中也得到了这个InvalidOperation。对我来说,问题是我试图在Worksheet using块结束后调用SaveAs(),即使ExcelPackage还没有到它的using块结束。所以,请确保在保存包之前没有处理内部工作表。

using (var excelPackage = new ExcelPackage())
{
    adapter.SelectCommand.CommandTimeout = commandTimeout;
    adapter.Fill(table);

    // If you wrap this in a using block which terminates before Save()/SaveAs()
    // it will throw an InvalidOperationException
    ExcelWorksheet worksheet = excelPackage.Workbook.Worksheets.Add(table.TableName);

    worksheet.Cells["A1"].LoadFromDataTable(table, true);

    //Format the header
    using (ExcelRange range = worksheet.Cells[1, table.Columns.Count]) // all columns
    {
        range.Style.Font.Bold = true;
        ... other stuff
    }

    var newFile = new FileInfo(path);
    excelPackage.SaveAs(newFile);
}
lokaqttq

lokaqttq5#

我在EPPlus 4.5.3.2中也得到了这个InvalidOperation。对我来说,问题是在我的Excel模板文件中,其中有一个图像。因此,Azure Linux App Service抛出一个异常:

2020-04-01T02:01:29.144596907Z System.InvalidOperationException: Error saving file /home/site/wwwroot/wwwroot/export-files/YeuCauVatTu_20200401090128.xlsx
2020-04-01T02:01:29.144612407Z  ---> System.TypeInitializationException: The type initializer for 'Gdip' threw an exception.
2020-04-01T02:01:29.145214910Z  ---> System.DllNotFoundException: Unable to load shared library 'libgdiplus' or one of its dependencies. In order to help diagnose loading problems, consider setting the LD_DEBUG environment variable: liblibgdiplus: cannot open shared object file: No such file or directory
2020-04-01T02:01:29.145238810Z    at System.Drawing.SafeNativeMethods.Gdip.GdiplusStartup(IntPtr& token, StartupInput& input, StartupOutput& output)
2020-04-01T02:01:29.145245610Z    at System.Drawing.SafeNativeMethods.Gdip..cctor()

我在这里找到了解决方案: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

3pmvbmvn

3pmvbmvn6#

在EPPlus 6.2中对现有的xlsx文件使用SaveAs()时出现了相同的异常。System.InvalidOperationException:保存文件时出错...内部异常:NullReferenceException。
已恢复到EPPlus 6.1.3以解决此问题。

相关问题