您当前的位置: 首页 >  c#

喜欢猪猪

暂无认证

  • 2浏览

    0关注

    228博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

C# 实现Excel导出图片

喜欢猪猪 发布时间:2017-07-17 16:34:08 ,浏览量:2

1.导出Excle表格,表格内嵌套图片功能:

2.封装导出文件方法

  public bool ExportExcel(DataTable dt, string notile,string title)         {             CreatePic cp = new CreatePic();             //创建工作簿             NPOI.HSSF.UserModel.HSSFWorkbook book = new NPOI.HSSF.UserModel.HSSFWorkbook();             //创建表             NPOI.SS.UserModel.ISheet sheet = book.CreateSheet(notile);             //自适应列宽             //  sheet.AutoSizeColumn(1, true);             //标题行合并单元格             sheet.AddMergedRegion(new NPOI.SS.Util.CellRangeAddress(0, 0, 0, dt.Columns.Count - 1));             NPOI.SS.UserModel.IRow firstrow = sheet.CreateRow(0);             NPOI.SS.UserModel.ICell firstcell = firstrow.CreateCell(0);             //表名样式             NPOI.SS.UserModel.ICellStyle styleHeader = book.CreateCellStyle();             NPOI.SS.UserModel.IFont fontHeader = book.CreateFont();             styleHeader.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Left;             styleHeader.VerticalAlignment = NPOI.SS.UserModel.VerticalAlignment.Center;             fontHeader.FontHeightInPoints = 15;             styleHeader.SetFont(fontHeader);             firstcell.CellStyle = styleHeader;             firstcell.SetCellValue(title);             try             {                 //列名样式                 NPOI.SS.UserModel.ICellStyle styleColName = book.CreateCellStyle();                 NPOI.SS.UserModel.IFont fontColName = book.CreateFont();                 styleColName.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Center;                 styleColName.VerticalAlignment = NPOI.SS.UserModel.VerticalAlignment.Center;                 fontColName.FontHeightInPoints = 14;                 styleColName.SetFont(fontColName);                 //数据的样式、字体大小                 NPOI.SS.UserModel.ICellStyle styleBody = book.CreateCellStyle();                 NPOI.SS.UserModel.IFont fontBody = book.CreateFont();                 styleBody.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Center;                 styleBody.VerticalAlignment = NPOI.SS.UserModel.VerticalAlignment.Center;                 fontBody.FontHeightInPoints = 12;                 styleBody.SetFont(fontBody);                 //创建具体单元格数据                 int rowCount = dt.Rows.Count;                 int colCount = dt.Columns.Count;                 NPOI.SS.UserModel.IRow colNameRow = sheet.CreateRow(1);                 for (int x = 0; x < colCount; x++)                 { //将列名写入单元格                     NPOI.SS.UserModel.ICell colNameCell = colNameRow.CreateCell(x);                     colNameCell.SetCellValue(dt.Columns[x].ColumnName);                     colNameCell.CellStyle = styleColName;                 }                 for (int i = 0; i < rowCount; i++)                 {                     NPOI.SS.UserModel.IRow row = sheet.CreateRow(i + 2);//数据从第三行开始 第一行表名 第二行列名                     for (int j = 0; j < colCount; j++)                     {                         //填充数据                         NPOI.SS.UserModel.ICell cell = row.CreateCell(j);                         if (dt.Rows[i][j] != null)                         {                             cell.SetCellValue(dt.Rows[i][j].ToString() + "               ");                             if (dt.Rows[i][j].ToString().Contains("www"))                             {                                 cell.Row.Height = 4000;                                                                  cp.AddPic(sheet, book, dt.Rows[i][j].ToString(), i+2, j);                             }                                                      }                         else                         {                             cell.SetCellValue("");                         }                         cell.CellStyle = styleBody;                     }                 }                 //自适应列宽                 for (int x = 0; x < colCount; x++)                 {                     sheet.AutoSizeColumn(x, true);                 }                 //最后插入图片                                  //设置宽高               //  sheet.SetColumnWidth(4,2000);                                  //此处代码是将 xls文件发到页面通过浏览器直接下载到本地  可以放到 界面调用的地方                 System.IO.MemoryStream ms = new System.IO.MemoryStream();                 book.Write(ms);                 //Response.AddHeader("Content-Disposition", string.Format("attachment; filename=ccc.xls"));                 Response.AddHeader("Content-Disposition", "attachment;filename=" + Server.UrlEncode(notile + ".xls"));//注意                 Response.BinaryWrite(ms.ToArray());                 book = null;                 ms.Close();                 ms.Dispose();                 return true;             }             catch             {                 throw new Exception();             }             finally             {                 book = null;             }         }

3.具体的引用

using NPOI.HSSF.UserModel; using NPOI.SS.UserModel; using System; using System.Collections.Generic; using System.Linq; using System.Text;

3.封装成方法,使用NOPI插件导出Excel时候调用改方法即可

  ///         /// 封装方法,用于表格内渲染图片         ///         ///         /// 工作簿         /// 图片地址         /// 行         /// 列         public void AddPic(ISheet sheet, HSSFWorkbook workbook, string fileurl, int row, int col)         {             byte[] bytes = System.IO.File.ReadAllBytes(fileurl);             int picindex = workbook.AddPicture(bytes, NPOI.SS.UserModel.PictureType.JPEG);             HSSFPatriarch patriarch = (HSSFPatriarch)sheet.CreateDrawingPatriarch();             HSSFClientAnchor anchor = new HSSFClientAnchor(0,0,48,48,col,row,col+1,row+1);             HSSFPicture pict = (HSSFPicture)patriarch.CreatePicture(anchor,picindex);                      }

文章为原创作品

关注
打赏
1648795721
查看更多评论
立即登录/注册

微信扫码登录

0.0373s