代码如下:
HSSFWorkbook wb = new HSSFWorkbook();//创建工作簿
HSSFSheet sheet = wb.createSheet("");/创建sheet
/*可以创建多个sheet
workbook.setSheetName(sheetNum, sheetTitle,
HSSFWorkbook.ENCODING_UTF_16);
*/
sheet.setDefaultColumnWidth(20); // 默认列宽
// sheet.setDefaultRowHeight((short)15);//默认行
//sheet.setDefaultRowHeightInPoints((short)15)
HSSFPrintSetup ps = sheet.getPrintSetup();
//调整列宽的时候实际大小加上0.72在乘以256,本文以第一列作为展示
sheet.setColumnWidth(0,(int)((28.14+0.72)* 256));
//设置字体样式
HSSFFont font = wb.createFont();
font.setFontName("宋体");
font.setFontHeightInPoints((short) 18);// 设置字体大小
font.setColor(HSSFColor.BLACK.index); //字体颜色
font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);//加粗
//设置单元格样式
HSSFCellStyle redcontentStyle = wb.createCellStyle(); // 内容样式
redcontentStyle.setFont(redfontContent);
redcontentStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);//垂直居中
redcontentStyle.setAlignment(HSSFCellStyle.ALIGN_RIGHT);// 水平居中
redcontentStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN); // 下边框
redcontentStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN);// 左边框
redcontentStyle.setBorderTop(HSSFCellStyle.BORDER_THIN);// 上边框
redcontentStyle.setBorderRight(HSSFCellStyle.BORDER_THIN);// 右边框
redcontentStyle.setWrapText(true);//自动换行
redcontentStyle.setFillForegroundColor(IndexedColors.RED.getIndex());
redcontentStyle.setFillPattern((short)1);
//redcontentStyle.setFillForegroundColor(HSSFColor.RED.index);//背景色
//合并单元格 依次是合并的第一行,最后一 行,第一列,最后一列
sheet.addMergedRegion(new CellRangeAddress(0, 0, 0, 5));
//第一行依次创建需要的
HSSFRow row = sheet.createRow(0);//第一个行
row.setHeightInPoints((float)20.25);//设置行高
HSSFCell cell_1_1 = row.createCell(0);//第一个单元格
cell_1_1.setCellValue("");//值
cell_1_1.setCellStyle(headStyle);//样式
有时候可能版本不一样,可以根据后缀判断:
//根据后缀名判断Excel是03版还是07版
if(suffix.equalsIgnoreCase(".xls")){
wb=new HSSFWorkbook(stream);
sheet = wb.getSheetAt(0);
}
if(suffix.equalsIgnoreCase(".xlsx")){
wb=new XSSFWorkbook(stream);
sheet = wb.getSheetAt(0);
}
我这边客户反映打印有问题,会打印好几份,如果是一份,需要如下设置
当然如果数量比较多,可已在代码中设置如下
HSSFPrintSetup ps = sheet.getPrintSetup();
ps.setLandscape(true); // 打印方向,true:横向,false:纵向
ps.setPaperSize(HSSFPrintSetup.A4_PAPERSIZE); //纸张
sheet.setMargin(HSSFSheet.BottomMargin,( double ) 0.5 );// 页边距(下)
sheet.setMargin(HSSFSheet.LeftMargin,( double ) 0.1 );// 页边距(左)
sheet.setMargin(HSSFSheet.RightMargin,( double ) 0.1 );// 页边距(右)
sheet.setMargin(HSSFSheet.TopMargin,( double ) 0.5 );// 页边距(上)
sheet.setHorizontallyCenter(true);//设置打印页面为水平居中
sheet.setVerticallyCenter(true);//设置打印页面为垂直居中使用POI输出Excel时打印页面
// 的设置 - TOUGHGUYNEU - @EXPLORER使用POI输出Excel时打印页面的设置 - TOUGHGUYNEU - @EXPLORER