We are upgrading to Aspose.Cells for .NET 21.8. For some reason the ConvertStringtoNumeric() function is throwing the following error. I’ve tried looking everywhere and cannot find a solution. Note this code works fine in Aspose.Cells.21.4.0.
error:
Object reference not set to an instance of an object.
at Aspose.Cells.Cells.ConvertStringToNumericValue()
Code:
var fileName = report.CreateFileName();
var templateName = report.DownloadFile(@"xxx\Purchase Freq v1.xlsx", fileName);
var workbook = new Workbook(templateName);
var dtItems = report.ResultDataSet.Tables[0];
var xlSheet = workbook.Worksheets["Data"];
//setup, pulling info from end workbook template
var printRow = 1;
var styleRange = xlSheet.Cells.CreateRange(printRow, 0, 1, 7);
var basketColEndRow = 3;
foreach (DataRow dRow in dtItems.Rows)
{
var itemNbr = dRow[0].ToString();
var itemDesc = dRow[1].ToString();
var itemWeek = dRow[2].ToString();
var itemPath = dRow[3].ToString();
var scWorkbook = new Workbook();
if (itemPath.Contains(".zip"))
{
string zipPath = itemPath;
var fileNamexx = new Guid().ToString();
using (var file = System.IO.File.OpenRead(zipPath))
using (var zip = new System.IO.Compression.ZipArchive(file, System.IO.Compression.ZipArchiveMode.Read))
using (var stream = zip.Entries.First().Open())
using (var fileStream = new System.IO.FileStream(fileNamexx,System.IO.FileMode.Create))
{
stream.CopyTo(fileStream);
scWorkbook = new Workbook(fileStream);
}
}
else
{
scWorkbook = new Workbook(itemPath);
}
//tender sheet data
var scSheet = scWorkbook.Worksheets["Purchase Freq"];
if (scSheet != null)
{
var endRow = scSheet.Cells.MaxRow;
for(int irow = 1 ; irow <= endRow ; irow++)
{
//only import the "Repurchase Within..." stuff..
if (scSheet.Cells[irow, 0].Value != null && scSheet.Cells[irow, 0].Value.ToString().Contains("Repurchase Within"))
{
var targetRange = xlSheet.Cells.CreateRange(printRow, 0, 1, 7);
targetRange.CopyStyle(styleRange);
xlSheet.Cells[printRow, 0].Value = itemNbr;
xlSheet.Cells[printRow, 1].Value = itemDesc;
xlSheet.Cells[printRow, 2].Value = itemWeek;
for (int icol = 0; icol <= basketColEndRow; icol++)
xlSheet.Cells[printRow,icol + 3].Value = scSheet.Cells[irow, icol].Value;
printRow++;
}
}
}
}
if (printRow == 1)
{
report.ReportOptions.ErrorMessage = "No data returned";
return string.Empty;
}
xlSheet.Cells.ConvertStringToNumericValue();
xlSheet.AutoFitColumns();
workbook.Save(templateName);
return templateName;