protected void btnSearch_Click(object sender, EventArgs e) { string reportFile = GenerateJobSheet(BizUnit.GetBarCode()); //ScriptManager.RegisterStartupScript(this.Page, this.GetType(), "", String.Format("window.navigate('DownloadFile.aspx?path={0}');", Server.UrlEncode(reportFile)), true); } public string GenerateJobSheet(DataTable tb) { string reportFile = ReportHelper.CreateFileFromTemplate("~/Reports/JobSheetTemplate.xls", "~/Reports/JobSheet_" + DateTime.Now.Year.ToString() + ".xls"); HSSFWorkbook workbook; using (FileStream fs = new FileStream(reportFile, FileMode.Open, FileAccess.Read)) { workbook = new HSSFWorkbook(fs); } HSSFSheet worksheet = workbook.GetSheetAt(0); //这是循环插入的关键方法 FillDataXBraCode(worksheet,tb,1,workbook); using (FileStream fs = new FileStream(reportFile, FileMode.Create)) { workbook.Write(fs); } return reportFile; } ////这是循环插入的方法 private void FillDataXBraCode(HSSFSheet worksheet, System.Data.DataTable dt, int beginRow, HSSFWorkbook workbook) { int rowCount = dt.Rows.Count; int colCount = dt.Columns.Count; string[,] dataArray = new string[rowCount, colCount]; for (int i = 0; i < rowCount; i++) { HSSFRow row = null; if (beginRow == 2) row = worksheet.CreateRow(i + 2); else row = worksheet.CreateRow(i + 1); for (int j = 0; j < colCount; j++) { dataArray[i, j] = dt.Rows[i][j] == null ? string.Empty : dt.Rows[i][j].ToString(); HSSFCell cell = row.CreateCell(j); // if (j == 1) { HSSFPatriarch patriarch = worksheet.CreateDrawingPatriarch(); string unitNumber = (new BarCodeGenerator()).CreateBarcode("*" + dataArray[i,j] + "*", 20); byte[] bytes1 = System.IO.File.ReadAllBytes(unitNumber); int pictureIdx1 = workbook.AddPicture(bytes1, PictureType.JPEG); HSSFClientAnchor anchor1 = new HSSFClientAnchor(3, 3, 1020, 255, j, i, j, i); HSSFPicture pict1 = patriarch.CreatePicture(anchor1, pictureIdx1); //pict1.Resize(); File.Delete(unitNumber); } else { // cell.SetCellValue(dataArray[i, j]); } } } }
看上去没有问题调试了 数据也对不过 结果第一行一列为空然后第二列是一张条形码图片第二行一直到最后一行第一列均为要转化成条形码的正常数据但第二列本该显示条形码结果一个也没有 全部为空 求大神告诉我问题出在哪里
你这个条形码就是一张图片吧?
具体参考下 http://www.cnblogs.com/zhangliming/archive/2013/04/02/2995655.html#2845838
看下下边的评论
是的
这里已经转换成图片了 我要下班了 到时候可能没法及时回复 不好意思 如果你知道就给我留言放下面把 到时候 我看解决了就给你把分寄过去嘻嘻
@小w威: 我意思是你看下我这篇文章下边的评论额....应该是NPOI的问题.
可以考虑使用条形码字体,简单,快捷,唯一不爽的就是要在客户端安装字体。
我用了另一个方法了做出来了 不过 这个问题还是有待解决我自己有时间慢慢研究把 不过还是谢谢大家 各给10分谢了