excel的导入导出是程序开发过程中非常常见的问题,常用的解析excel工具有poi或者jxl,下面看一下用jxl如何创建一个新的excel表格文件。
private LinkedHashMap<String, Map<String, String>> tableHeader;//表头信息
private String tableName;
private String tableHeaderCN; // 中文表头
private List<?> exportData;
@SuppressWarnings({ "rawtypes", "deprecation" })
public void createExcel() throws Throwable {
File path = new File("exportTmp");
if (!path.exists()) {
path.mkdir();
}
File file = new File("exportTmp", fileName + ".xls");
WritableWorkbook book = Workbook.createWorkbook(file);
WritableSheet sheet = book.createSheet("sheet1", 0);
// 设置格式
jxl.write.WritableFont font1 = new jxl.write.WritableFont(
jxl.write.WritableFont.TIMES, 16, jxl.write.WritableFont.BOLD);
jxl.write.WritableFont font3 = new jxl.write.WritableFont(
jxl.write.WritableFont.TIMES, 10, jxl.write.WritableFont.BOLD);
jxl.write.WritableCellFormat CBwcfF1 = new jxl.write.WritableCellFormat(
font1);
jxl.write.WritableCellFormat CBwcfF2 = new jxl.write.WritableCellFormat(
font3);
jxl.write.WritableCellFormat CBwcfF3 = new jxl.write.WritableCellFormat();
CBwcfF1.setAlignment(jxl.write.Alignment.CENTRE);
CBwcfF2.setAlignment(jxl.write.Alignment.CENTRE);
CBwcfF2.setBorder(Border.ALL, jxl.format.BorderLineStyle.THIN,
Colour.BLACK);
CBwcfF3.setBorder(Border.ALL, jxl.format.BorderLineStyle.THIN,
Colour.BLACK);
// 填充内容
Label label = new Label(0, 0, tableName, CBwcfF1);
Set<String> headers = tableHeader.keySet();
String[] headersCN = tableHeaderCN.split(",");
int columnCount = headers.size();
sheet.addCell(label);
sheet.mergeCells(0, 0, columnCount - 1, 0);
for (int i = 0; i < columnCount; i++) {
Label headLabel = new Label(i, 1, headersCN[i], CBwcfF2);
sheet.addCell(headLabel);
}
int recordCount = exportData.size();
List list = new ArrayList();
list = getDataValues();
for (int lineCount = 1; lineCount <= recordCount; lineCount++) {
for (int j = 0; j < columnCount; j++) {
Label valueLabel = new Label(j, lineCount + 1,
(String) list.get((lineCount - 1) * columnCount + j),
CBwcfF3);
sheet.addCell(valueLabel);
}
}
book.write();
book.close();
}
搞定!是不是很简单、实用。