由于需要,导的文件里面有个单号,这个单号需要有同时显示成条码样式,而且要导到excel里面,只能用NPOI
HSSFWorkbook xlbook = new NPOI.HSSF.UserModel.HSSFWorkbook();
每个sheet创建时候头部都有单号和单号条码,每个sheet创建后如果要插入图片都要调用下面的方法
//设置列宽并画条码图片
private void generateOTTOrderSheet_StyleAndBarcode(ref HSSFWorkbook xlbook, ref HSSFSheet sheet, string invoiceNo)
{
//设置列宽
int colIndiex = 0;
sheet.SetColumnWidth(colIndiex++, 12 * 256);
sheet.SetColumnWidth(colIndiex++, 10 * 256);
sheet.SetColumnWidth(colIndiex++, 10 * 256);
sheet.SetColumnWidth(colIndiex++, 10 * 256);
sheet.SetColumnWidth(colIndiex++, 10 * 256);
sheet.SetColumnWidth(colIndiex++, 10 * 256);
sheet.SetColumnWidth(colIndiex++, 10 * 256);
sheet.SetColumnWidth(colIndiex++, 10 * 256);
//条码
MemoryStream msBarcode = new MemoryStream();
byte[] imageBytesBarcode = null;
'获取条码对应的图片
Image image = PerfectBarCode128.GetBarCodeOf128(invoiceNo, 50);
image.Save(msBarcode, System.Drawing.Imaging.ImageFormat.Jpeg);
imageBytesBarcode = msBarcode.GetBuffer();
int pictureIdxBarcode = xlbook.AddPicture(imageBytesBarcode, PictureType.JPEG);
NPOI.SS.UserModel.Drawing patriarchBarcode = sheet.CreateDrawingPatriarch();
这几个参数研究了半天,int dx1,int dy1,int dx2,int dy2,short col1,int row1,short col2, 2. int row2
前边几个代表在该cell里面所占份额,后面是行和列,
HSSFClientAnchor anchor = new HSSFClientAnchor(0, 0, 1023, 0, 0, 0, 1, 3);
例如第二第二个(宽度)占了一半,可以用dx=500,dx最大1023,dy最大是255
HSSFClientAnchor anchorBarcode = new HSSFClientAnchor(0, 0, 100, 0, 5, 0, 8, 3);
NPOI.SS.UserModel.Picture pictBarcode = patriarchBarcode.CreatePicture(anchorBarcode, pictureIdxBarcode);
}