1、Java编程中Excel常用格式汇总
第一行标题的格式定义
WritableWorkbook workbook = Workbook.createWorkbook(file);
WritableSheet sheet = workbook.createSheet("报表统计", 0); //单元格
WritableFont wf2 =new WritableFont(WritableFont.ARIAL,14,WritableFont.BOLD,false,UnderlineStyle.NO_UNDERLINE,jxl.format.Colour.BLACK);
// 定义字体格式 、字体大小 、下划线、 斜体 、粗体、 颜色
WritableCellFormat wcfTitle= new WritableCellFormat(wf2); //把定义的字体格式赋到单元格格式上,单元格样式用于新建单元格时
wcfTitle.setBackground(jxl.format.Colour.IVORY); //定义单元格 的背景色象牙白
wcfTitle.setBorder(jxl.format.Border.ALL, jxl.format.BorderLineStyle.THIN,jxl.format.Colour.BLACK); // 定义单元格的BorderLineStyle边框样式
wcfTitle.setAlignment(Alignment.CENTRE); // 定义单元格的设置垂直对齐
CellView navCellView = new CellView(); //定义一个列显示的样式,用于sheet全部的样式设置
navCellView.setAutosize(true); //设置自动大小
navCellView.setSize(18);
lab = new Label(0,0,title,wcfTitle); //定义一个单元格,某列,某行,内容值,单元格样式
sheet.mergeCells(0,0,navTitle.length-1,0);
sheet.setColumnView(0, navCellView); // 针对一个sheet,设置col显示样式
sheet.setRowView(0, 1600, false); //设置行高
sheet.addCell(lab);
2、自动调整列宽
private static void setColumnAutoSize(WritableSheet ws, int extraWith) {
// 获取本列的最宽单元格的宽度
for (int i = 0; i < ws.getColumns(); i++) {
int colWith = 0;
for (int j = 0; j < ws.getRows(); j++) {
String content = ws.getCell(i, j).getContents().toString();
// int cellWith = content.length();
byte[] bstrLength = content.getBytes();
int cellWith = bstrLength.length;
if (colWith < cellWith) {
colWith = cellWith;
}
}
// 设置单元格的宽度为最宽宽度+额外宽度
ws.setColumnView(i, colWith + extraWith);
}
}
注意问题:
a、计算方式是由列至行
即先从第1列第一行,第1列第二行,第1列第三行。。。。。。
到第2列第一行,第2列第二行,第2列第三行。。。。。。
b、获取某个单元格内容的宽度
第一次使用的是content.length(),这样不准确,得不到效果
第二次使用的是先转为字节,再获取字节的长度,这样才对。