您的位置:首页 > 其它

NPOI插入图片到excel指定单元格

2015-08-21 17:20 603 查看

先看效果图



下载NPOI组件(2.0以上支持.xlsx和.xls的excel,2.0以下只支持.xls)

NPOI下载官网http://npoi.codeplex.com

下载解压,里面有个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用法可参考官网(中文)'target='_blank'>http://tonyqus.sinaapp.com/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: