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文件但它不保存.我为什么要犯这个错误?
提前致谢..
捕获 xlPackage.Save() 方法引发的空引用异常并转储堆栈跟踪,问题似乎是由 ExcelWorksheet.cs:line 561 引起的,该行对应于源中的这一行:
XmlNode pageSetup = _worksheetXml.SelectSingleNode("//d:pageSetup", NameSpaceManager);
Run Code Online (Sandbox Code Playgroud)
有趣的是,如果您捕获异常,xlsx 文件似乎无论如何都会保存正常(至少对我来说确实如此,可能会出现一些意外的行为,但我无法生成任何行为)。
我会尝试处理异常并查看您的文件是否确实正在保存。如果这是一个您将经常使用的库(我不会),那么可能值得在 ExcelPackage 网站上提出问题
编辑:
ExcelPackage 库似乎很旧并且没有维护。我想看看 EPPlus 库,它基于 ExcelPackage。您需要对代码进行一些调整,但没什么大不了的。保存作品没有问题。