標籤:
先看
代碼
//建立一個活頁簿 HSSFWorkbook workbook = new HSSFWorkbook(); //建立一個sheet ISheet sheet1 = workbook.CreateSheet("sheet1"); // 設定列寬,excel列寬每個像素是1/256 sheet1.SetColumnWidth(0, 18 * 256); sheet1.SetColumnWidth(1, 18 * 256); IRow rowHeader = sheet1.CreateRow(0);//建立表頭行 rowHeader.CreateCell(0, CellType.STRING).SetCellValue("生產單號"); rowHeader.CreateCell(1, CellType.STRING).SetCellValue("圖片"); DataTable dt = sqlhelperPro.seachData("SELECT top 3 PRODID,KTL_PIC FROM Long_tmpPIC"); if (dt.Rows.Count > 0) { int rowline = 1;//從第二行開始(索引從0開始) foreach (DataRow datarow in dt.Rows) { IRow row = 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()); int pictureIdx=workbook.AddPicture(bytes,PictureType.JPEG); HSSFPatriarch patriarch = (HSSFPatriarch)sheet1.CreateDrawingPatriarch(); // 插圖片的位置 HSSFClientAnchor(dx1,dy1,dx2,dy2,col1,row1,col2,row2) 後面再作解釋 HSSFClientAnchor anchor = new HSSFClientAnchor(70, 10,0,0, 1,rowline, 2, rowline +1); //把圖片插到相應的位置 HSSFPicture pict = (HSSFPicture)patriarch.CreatePicture(anchor, pictureIdx); rowline++; } } NPOIDowmLoad(workbook);//下載excelView Code
參數的解析: HSSFClientAnchor(int dx1,int dy1,int dx2,int dy2,int col1,int row1,int col2,int row2)
dx1:圖片左邊相對excel格的位置(x位移) 範圍值為:0~1023;即輸10 位移的位置大概是相對於整個儲存格的寬度的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 用法可參考官網(中文) http://tonyqus.sinaapp.com/
NPOI插入圖片到excel指定儲存格