NPOI插入图片到excel指定单元格
2015-08-21 17:20
603 查看
先看效果图
下载NPOI组件(2.0以上支持.xlsx和.xls的excel,2.0以下只支持.xls)
NPOI下载官网下载解压,里面有个dotnet4的文件夹,把它拖到自己的项目中,把里面的.dll全部添加引用
引入全名空间:
usingNPOI.HSSF.UserModel;
usingNPOI.SS.UserModel;
代码
//创建一个工作簿 HSSFWorkbookworkbook=newHSSFWorkbook(); //创建一个sheet ISheetsheet1=workbook.CreateSheet("sheet1"); //设置列宽,excel列宽每个像素是1/256 sheet1.SetColumnWidth(0,18*256); sheet1.SetColumnWidth(1,18*256); IRowrowHeader=sheet1.CreateRow(0);//创建表头行 rowHeader.CreateCell(0,CellType.STRING).SetCellValue("生产单号"); rowHeader.CreateCell(1,CellType.STRING).SetCellValue("图片"); DataTabledt=sqlhelperPro.seachData("SELECTtop3PRODID,KTL_PICFROMLong_tmpPIC"); if(dt.Rows.Count>0) { introwline=1;//从第二行开始(索引从0开始) foreach(DataRowdatarowindt.Rows) { IRowrow=sheet1.CreateRow(rowline); //设置行高,excel行高度每个像素点是1/20 row.Height=80*20; //填入生产单号 row.CreateCell(0,CellType.STRING).SetCellValue(datarow["PRODID"].ToString()); //将图片文件读入一个字符串 byte[]bytes=System.IO.File.ReadAllBytes(datarow["KTL_PIC"].ToString()); intpictureIdx=workbook.AddPicture(bytes,PictureType.JPEG); HSSFPatriarchpatriarch=(HSSFPatriarch)sheet1.CreateDrawingPatriarch(); //插图片的位置HSSFClientAnchor(dx1,dy1,dx2,dy2,col1,row1,col2,row2)后面再作解释 HSSFClientAnchoranchor=newHSSFClientAnchor(70,10,0,0,1,rowline,2,rowline+1); //把图片插到相应的位置 HSSFPicturepict=(HSSFPicture)patriarch.CreatePicture(anchor,pictureIdx); rowline++; } } //把文件保存到d:\aaa.xls,注意扩展名是.xls不要写成.xlsx using(Streamstream=File.OpenWrite("d:\aaa.xls")) { workbook.Write(stream); } //如果要操作.xlsx的excel,引入命名空间usingNPOI.XSSF.UserModel; //然后把所有的HSS改为XSS(比喻HSSWorkbook->XSSWorkbook)
参数的解析:HSSFClientAnchor(intdx1,intdy1,intdx2,intdy2,intcol1,introw1,intcol2,introw2)
dx1:图片左边相对excel格的位置(x偏移)范围值为:0~1023;即输100偏移的位置大概是相对于整个单元格的宽度的100除以1023大概是10分之一
dy1:图片上方相对excel格的位置(y偏移)范围值为:0~256原理同上。
dx2:图片右边相对excel格的位置(x偏移)范围值为:0~1023;原理同上。
dy2:图片下方相对excel格的位置(y偏移)范围值为:0~256原理同上。
col1和row1:图片左上角的位置,以excel单元格为参考,比喻这两个值为(1,1),那么图片左上角的位置就是excel表(1,1)单元格的右下角的点(A,1)右下角的点。
col2和row2:图片右下角的位置,以excel单元格为参考,比喻这两个值为(2,2),那么图片右下角的位置就是excel表(2,2)单元格的右下角的点(B,2)右下角的点。
以上纯属个人开发经验欢迎指正
NPOI用法可参考官网(中文)
相关文章推荐
- python的with用法
- 数据库表结构比对工具
- 畅通工程(2007浙江大学研究生复试上机题[最小生成树||并查集])
- Java图片验证码的实现
- HDU 5333 Undirected Graph 离线 LCT维护最大生成树+树状数组
- toolbar ,textfield,图片拉伸,Bundle
- Delphi编程获取系统当前进程、窗口句柄、文件属性以及程序运行状态(8种应用)
- jQuery插件
- ansible 2.1.0 api 编程
- linux process management
- Android GPS 取经纬度
- 土桂大法1
- Android利用Http下载文件
- 需要解决的问题
- TCP/IP-ARP
- Android 最火的快速开发框架XUtils
- 再别康桥
- 【.Net码农】[asp.net]自定义控件(支持模板)2
- Python自省(反射)指南
- SysErrorMessage 函数和系统错误信息表