创建Excel工作表时出现NullReferenceException

roc*_*ace 7 c# asp.net visual-studio-2010 nullreferenceexception excelpackage

我想填写一个excel文件,所以我使用ExcelPackage:Office Open XML格式.但我有一个错误.我的代码:

string fileName = "DBE_BAKIM_FORMU" + ".xlsx";
FileInfo fi = new FileInfo(HttpContext.Current.Server.MapPath("~/") + fileName);

using (ExcelPackage xlPackage = new ExcelPackage(fi))
{
    ExcelWorksheet worksheet = xlPackage.Workbook.Worksheets[1];
    dbeDataContext db = new dbeDataContext();
    CAGRI c = (from x in db.CAGRIs where x.CagriID == ID select x).SingleOrDefault();
    USER u = (from x in db.USERs where x.UserID == Convert.ToInt32(Session["user"]) select x).SingleOrDefault();

    worksheet.Cell(6, 3).Value = c.TalepTarihi.ToShortDateString();
    worksheet.Cell(7, 3).Value = c.TalepTuru;
    worksheet.Cell(8, 3).Value = c.ModulAdi;
    worksheet.Cell(9, 3).Value = c.EkranRaporAdi;
    worksheet.Cell(10, 3).Value = c.VerilenSure;
    worksheet.Cell(11, 4).Value = c.USER.UserName + " " + c.USER.UserSurname;
    worksheet.Cell(12, 4).Value = Convert.ToString(c.USER.UserTel);
    worksheet.Cell(13, 3).Value = c.Aciklama;
    worksheet.Cell(16, 4).Value = u.UserName + " " + u.UserSurname;
    worksheet.Cell(18, 3).Value = Convert.ToString(c.DegerlendirmeTarih);
    worksheet.Cell(19, 3).Value = c.Degerlendirme;
    xlPackage.Save();
}
Run Code Online (Sandbox Code Playgroud)

我在这里有这个错误: xlPackage.Save();

我的错误说 Object reference not set to an instance of an object.

当我拿出xlPackage.Save();它,它工作并填写excel文件但它不保存.我为什么要犯这个错误?

提前致谢..

wda*_*avo 0

捕获 xlPackage.Save() 方法引发的空引用异常并转储堆栈跟踪,问题似乎是由 ExcelWorksheet.cs:line 561 引起的,该行对应于源中的这一行:

XmlNode pageSetup = _worksheetXml.SelectSingleNode("//d:pageSetup", NameSpaceManager);
Run Code Online (Sandbox Code Playgroud)

有趣的是,如果您捕获异常,xlsx 文件似乎无论如何都会保存正常(至少对我来说确实如此,可能会出现一些意外的行为,但我无法生成任何行为)。

我会尝试处理异常并查看您的文件是否确实正在保存。如果这是一个您将经常使用的库(我不会),那么可能值得在 ExcelPackage 网站上提出问题

编辑:

ExcelPackage 库似乎很旧并且没有维护。我想看看 EPPlus 库,它基于 ExcelPackage。您需要对代码进行一些调整,但没什么大不了的。保存作品没有问题。

http://epplus.codeplex.com/