最近做项目要用到poi将数据导成excel文件,就遇到的几点麻烦的问题,发表下自己的意见。一般的用法,请使用google搜索,答案很多。
1,sheet选项卡的中文乱码问题,解决办法
HSSFWorkbook wb = new HSSFWorkbook(); // create the new Workbook
HSSFSheet sheet0 = null;
HSSFSheet sheet1 = null;
sheet0 = wb.createSheet(); // create 1-2sheet
sheet1 = wb.createSheet();
wb.setSheetName(0, "接受委托迁改", HSSFCell.ENCODING_UTF_16); //为sheet命名,避免中文乱码
wb.setSheetName(1, "迁改方案", HSSFCell.ENCODING_UTF_16);

2,cell.setCellValue();时出现中文乱码,解决方法:
cell.setEncoding(HSSFCell.ENCODING_UTF_16); //这是解决这个问题的关键
cell.setCellValue("迁改方案审查日期:");
3,单元格合并后,不显示边框的问题,解决方法
不显现边框是由于,你合并后,没有为边缘部分的cell设置边框,而导致:
例如:
合并一个2行3列的 cell
先设置样式:

/**//**
* setCellStyle 方法
* <p>设置普通样式</p>
* @param style
*/
private static void setCellStyle(HSSFCellStyle style) ...{
style.setAlignment(HSSFCellStyle.ALIGN_CENTER); //水平居中
style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER); //垂直居中
//设置单无格的边框为粗体,边框颜色
style.setBorderBottom(HSSFCellStyle.BORDER_THIN);
style.setBottomBorderColor(HSSFColor.BLACK.index);
style.setBorderLeft(HSSFCellStyle.BORDER_THIN);
style.setLeftBorderColor(HSSFColor.BLACK.index);
style.setBorderRight(HSSFCellStyle.BORDER_THIN);
style.setRightBorderColor(HSSFColor.BLACK.index);
style.setBorderTop(HSSFCellStyle.BORDER_THIN);
style.setTopBorderColor(HSSFColor.BLACK.index);
style.setFillForegroundColor(HSSFColor.GREY_25_PERCENT.index); // 设置单元格背景色;
style.setWrapText(true); //文本区域随内容多少自动调整
}
设置字体:

private static void setFontStyle1(HSSFFont font) ...{
font.setColor(HSSFFont.COLOR_NORMAL); // 设置单元格字体的颜色.
font.setFontHeight((short) 180); // 设置字体大小
font.setFontName("Courier New"); // 设置单元格字体
}合并:

public static void twoRowThreeCon(HSSFWorkbook wb , HSSFSheet sheet){
//设置1-3列的宽度
sheet.setColumnWidth((short) 0, (short) ((30 * 8) / ((double) 1 / 115)));
sheet.setColumnWidth((short) 1, (short) ((30 * 8) / ((double) 1 / 15)));
sheet.setColumnWidth((short) 2, (short) ((30 * 8) / ((double) 1 / 15)));
// 创建字体格式
HSSFFont font = wb.createFont();
setFontStyle(font);
// 创建单元格风格
HSSFCellStyle style = wb.createCellStyle();
style.setFont(font);
setCellStyle(style);

for( int i = 0 ; i < 2 ; i ++){
row = sheet.createRow(countrow);
row.setHeight((short) 0x200); //设置行高
for(int j = 0 ; j < 3 ; j++){
cell = row.createCell((short)k);
cell.setEncoding(HSSFCell.ENCODING_UTF_16);cell.setCellStyle(style); 
if(i==0&&j==0){
cell.setCellValue(".........................."); //给合并后的单元格赋值
}
}
}
//合并,指定合并区域,前二个参数为开始处X,Y坐标.后二个为结束的坐标.
sheet.addMergedRegion(new Region(0, (short) 0,1 , (short) 2));
}
本文介绍使用Apache POI库处理Excel时遇到的常见问题及其解决方案,包括如何解决sheet选项卡中文乱码、cell单元格中文乱码问题,并提供了解决单元格合并后不显示边框的方法。
355

被折叠的 条评论
为什么被折叠?



