要建立一个三列的excel表格,最后一列是个二维码,使用NPOI写完之后,导出的死活打不开,不知道代码哪里错了,麻烦各位帮忙看看代码哪里错了,不甚感激。
public static void CreateImageExcel(List<string> links)
{
//创建工作薄
HSSFWorkbook workbook = new HSSFWorkbook();
HSSFSheet sheet = (HSSFSheet)workbook.CreateSheet("Sheet1");
//填充列标题以及样式
int rowsNum = 0; //行号
HSSFRow headerRow = (HSSFRow)sheet.CreateRow(rowsNum);
string strQrCodePath = "";
headerRow.CreateCell(0, CellType.String).SetCellValue("编号");
headerRow.CreateCell(1, CellType.String).SetCellValue("链接");
headerRow.CreateCell(2, CellType.String).SetCellValue("二维码");
HSSFRow row = null;
rowsNum = 1; //行号,从第2行开始
foreach (var link in Links)
{
//写入字段值
row = (HSSFRow)sheet.CreateRow(rowsNum);
row.CreateCell(0, CellType.String).SetCellValue(rowsNum);
row.CreateCell(1, CellType.String).SetCellValue(Link);
row.CreateCell(2, CellType.Blank).SetCellValue("");
strQrCodePath = CommonHelper.CreateQRCode(Configer.GetAppSetting<string>("siteUrl") + "/p/" + item.Link, 8, 4);
byte[] bytes = System.IO.File.ReadAllBytes(strQrCodePath);
int pictureIdx = workbook.AddPicture(bytes, PictureType.PNG);
HSSFPatriarch patriarch = (HSSFPatriarch)sheet.CreateDrawingPatriarch();
HSSFClientAnchor anchor = new HSSFClientAnchor(0, 10, 1023, 0, 2, rowsNum, 2, rowsNum);
HSSFPicture pict = (HSSFPicture)patriarch.CreatePicture(anchor, pictureIdx);
pict.Resize();
rowsNum++;
//删除二维码
if (System.IO.File.Exists(strQrCodePath))
{
System.IO.File.Delete(strQrCodePath);
}
}
using (MemoryStream ms = new MemoryStream())
{
workbook.Write(ms);
ms.Flush();
ms.Position = 0;
// 设置编码和附件格式
string fileName = model.Channel.Name + "_" + DateTime.Now.ToString("yyyy-MM-dd-HHmmss") + ".xlsx";//客户端保存的文件名
System.Web.HttpContext.Current.Response.ContentType = "application/vnd.ms-excel";
System.Web.HttpContext.Current.Response.ContentEncoding = Encoding.UTF8;
System.Web.HttpContext.Current.Response.Charset = "";
System.Web.HttpContext.Current.Response.AppendHeader("Content-Disposition",
"attachment;filename=" + HttpUtility.UrlEncode(fileName, Encoding.UTF8));
System.Web.HttpContext.Current.Response.BinaryWrite(ms.GetBuffer());
ms.Close();
ms.Dispose();
System.Web.HttpContext.Current.Response.End();
}
}
改完了,只能导出.xls文件,不知道是不是其中有图片的原因,导出的.xlsx文件无法查看。