ITPub博客

首页 > > > NPOI读取Excel2007中含有超链接的单元格会出错求解决该怎么处理

NPOI读取Excel2007中含有超链接的单元格会出错求解决该怎么处理

作者:youou 时间:2019-10-23 15:49:18 0 删除 编辑

using (FileStream fs = new FileStream(file, FileMode.Open, FileAccess.Read))

{

//XSSFWorkbook 适用XLSX格式,HSSFWorkbook 适用XLS格式

if (fileExt == ".xlsx")

{

workbook = new XSSFWorkbook(fs);//此处会报错提示The hyperlink for cell I2 references relation rId1, but that didn't exist!(单元格引用的超链接关系不存在!)

}

else if (fileExt == ".xls")

{

workbook = new HSSFWorkbook(fs);

}

else

{

workbook = null;

Console.WriteLine(string.Format("未选择正确的xlsx文件-{0}", DateTime.Now));

}

if (workbook == null)

{

return null;

}

//得到excel的sheet数for(intk =0; k < workbook.NumberOfSheets; k++) {if(workbook.IsSheetHidden(k)) {continue; } DataTable dt =newDataTable(); ISheet sheet = workbook.GetSheetAt(k);//表头 IRow header = sheet.GetRow(sheet.FirstRowNum); List columns =newList();for(inti =0; i < header.LastCellNum; i++) {objectobj = GetValueType(header.GetCell(i), workbook);if(obj ==null|| obj.ToString() ==string.Empty) { dt.Columns.Add(newDataColumn("Columns"+ (i +1).ToString())); Console.WriteLine(string.Format("Excel文件{0}中{1}列表头不存在", sheet.SheetName, (i +1).ToString())); }else{if(dt.Columns.Contains(obj.ToString())) { obj = obj + i.ToString(); } dt.Columns.Add(newDataColumn(obj.ToString())); } columns.Add(i); }//数据 for(inti = sheet.FirstRowNum +1; i <= sheet.LastRowNum; i++) { DataRow dr = dt.NewRow();boolhasValue =false;if(sheet.GetRow(i) !=null) {foreach(intjincolumns) { dr[j] = GetValueType(sheet.GetRow(i).GetCell(j), workbook);if(dr[j] !=null&& dr[j].ToString() !=string.Empty) { hasValue =true; } }if(hasValue) { dt.Rows.Add(dr); } }else{ Console.WriteLine(string.Format("Excel文件{0}中{1}行数据为空", sheet.SheetName, i.ToString())); } } dict.Add(sheet.SheetName, dt); } }

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/4729/viewspace-3121706/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2019-07-17

  • 博文量
    294
  • 访问量
    13387