jexcelapi使用小記
jexcelapi是一個開源項目,主要用來操作excel.
主頁地址:
http://www.andykhan.com/jexcelapi/
現在做一個項目用到了它,根據不同的公司生成不同的文件夾,
在相應的文件夾下生成對應的xls. 這里只帖出生成xls部分核心代碼:
public void generateXls()
{
try
{
/** **********創建工作簿************ */
WritableWorkbook workbook = Workbook.createWorkbook(new File("d:/test.xls"));
/** **********創建工作表************ */
WritableSheet sheet = workbook.createSheet("工作表名稱", 0);

/** *********設置列寬**************** */
sheet.setColumnView(0, 15); // 第1列
sheet.setColumnView(1, 18); // 第2列
sheet.setColumnView(2, 13);
sheet.setColumnView(3, 13);
sheet.setColumnView(4, 15);
sheet.setColumnView(5, 15);
//設置行高
sheet.setRowView(0, 600, false);
sheet.setRowView(1, 400, false);
sheet.setRowView(7, 400, false);
//設置頁邊距
sheet.getSettings().setRightMargin(0.5);
//設置頁腳
sheet.setFooter("", "", "測試頁腳");
/** ************設置單元格字體************** */
//字體
WritableFont NormalFont = new WritableFont(WritableFont.ARIAL, 10);
WritableFont BoldFont = new WritableFont(WritableFont.ARIAL, 14,
WritableFont.BOLD);
WritableFont tableFont = new WritableFont(WritableFont.ARIAL, 12,
WritableFont.NO_BOLD);
WritableFont baodanFont = new WritableFont(WritableFont.ARIAL, 10,
WritableFont.BOLD);

/** ************以下設置幾種格式的單元格************ */
// 用于標題
WritableCellFormat wcf_title = new WritableCellFormat(BoldFont);
wcf_title.setBorder(Border.NONE, BorderLineStyle.THIN); // 線條
wcf_title.setVerticalAlignment(VerticalAlignment.CENTRE); // 垂直對齊
wcf_title.setAlignment(Alignment.CENTRE); // 水平對齊
wcf_title.setWrap(true); // 是否換行

// 用于表格標題
WritableCellFormat wcf_tabletitle = new WritableCellFormat(
tableFont);
wcf_tabletitle.setBorder(Border.NONE, BorderLineStyle.THIN); // 線條
wcf_tabletitle.setVerticalAlignment(VerticalAlignment.CENTRE); // 垂直對齊
wcf_tabletitle.setAlignment(Alignment.CENTRE); // 水平對齊
wcf_tabletitle.setWrap(true); // 是否換行

// 用于正文左
WritableCellFormat wcf_left = new WritableCellFormat(NormalFont);
wcf_left.setBorder(Border.ALL, BorderLineStyle.THIN); // 線條
wcf_left.setVerticalAlignment(VerticalAlignment.CENTRE); // 垂直對齊
wcf_left.setAlignment(Alignment.LEFT);
wcf_left.setWrap(true); // 是否換行

// 用于正文左
WritableCellFormat wcf_center = new WritableCellFormat(NormalFont);
wcf_center.setBorder(Border.ALL, BorderLineStyle.THIN); // 線條
wcf_center.setVerticalAlignment(VerticalAlignment.CENTRE); // 垂直對齊
wcf_center.setAlignment(Alignment.CENTRE);
wcf_center.setWrap(true); // 是否換行

// 用于正文右
WritableCellFormat wcf_right = new WritableCellFormat(NormalFont);
wcf_right.setBorder(Border.ALL, BorderLineStyle.THIN); // 線條
wcf_right.setVerticalAlignment(VerticalAlignment.CENTRE); // 垂直對齊
wcf_right.setAlignment(Alignment.RIGHT);
wcf_right.setWrap(false); // 是否換行

// 用于跨行
WritableCellFormat wcf_merge = new WritableCellFormat(NormalFont);
wcf_merge.setBorder(Border.ALL, BorderLineStyle.THIN); // 線條
wcf_merge.setVerticalAlignment(VerticalAlignment.TOP); // 垂直對齊
wcf_merge.setAlignment(Alignment.LEFT);
wcf_merge.setWrap(true); // 是否換行

WritableCellFormat wcf_table = new WritableCellFormat(NormalFont);
wcf_table.setBorder(Border.ALL, BorderLineStyle.THIN); // 線條
wcf_table.setVerticalAlignment(VerticalAlignment.CENTRE); // 垂直對齊
wcf_table.setAlignment(Alignment.CENTRE);
wcf_table.setBackground(Colour.GRAY_25);
wcf_table.setWrap(true); // 是否換行

/** ************單元格格式設置完成****************** */
//合并單元格,注意mergeCells(col0,row0,col1,row1) --列從0開始,col1為你要合并到第幾列,行也一樣
sheet.mergeCells(0, 0, 5, 0);

sheet.addCell(new Label(0, 0, "這里是大標題,自定義格式",
wcf_title));

sheet.mergeCells(0, 1, 1, 1);
sheet.mergeCells(2, 1, 5, 1);

sheet.addCell(new Label(0, 1, "", wcf_center));
sheet.addCell(new Label(2, 1, "姓名:" + "supercrsky",
wcf_center));

sheet.mergeCells(0, 2, 1, 2);
sheet.mergeCells(2, 2, 3, 2);

sheet.addCell(new Label(0, 2, "單位:", wcf_center));
sheet.addCell(new Label(2, 2, "ChinaLong", wcf_center));
sheet.addCell(new Label(4, 2, "薪水", wcf_center));
sheet.addCell(new Label(5, 2, "5000", wcf_center));

sheet.mergeCells(0, 3, 1, 3);
sheet.mergeCells(2, 3, 3, 3);

sheet.addCell(new Label(0, 3, "性別:", wcf_center));
sheet.addCell(new Label(2, 3, "男", wcf_center));
sheet.addCell(new Label(4, 3, "婚否:", wcf_center));
sheet.addCell(new Label(5, 3, "否", wcf_center));

sheet.mergeCells(0, 4, 1, 4);
sheet.mergeCells(2, 4, 3, 4);

sheet.addCell(new Label(0, 4, "是否在職:", wcf_center));
sheet.addCell(new Label(2, 4,"是",
wcf_center));
sheet.addCell(new Label(4, 4,"工作經驗:", wcf_center));
sheet.addCell(new Label(5, 4, "4",wcf_center));

sheet.mergeCells(0, 5, 1, 5);
sheet.mergeCells(2, 5, 3, 5);

sheet.addCell(new Label(0, 5, "保險費:", wcf_center));
sheet.addCell(new Label(2, 5,"50",
wcf_center));
sheet.addCell(new Label(4, 5, "保險金額:", wcf_center));
sheet.addCell(new Label(5, 5, "50000",
wcf_center));

sheet.mergeCells(0, 6, 1, 6);
sheet.mergeCells(2, 6, 3, 6);

sheet.addCell(new Label(0, 6, "工作地點:", wcf_center));
sheet.addCell(new Label(2, 6, "北京", wcf_center));
sheet.addCell(new Label(4, 6, "開心度:", wcf_center));
sheet.addCell(new Label(5, 6, "一般", wcf_center));

// 另起一table
sheet.mergeCells(0, 7, 5, 7);
sheet.addCell(new Label(0, 7, "詳細數據", wcf_tabletitle));
// table標題
sheet.addCell(new Label(0, 8, "序號", wcf_table));
sheet.addCell(new Label(1, 8, "姓名", wcf_table));
sheet.addCell(new Label(2, 8, "年齡", wcf_table));
sheet.addCell(new Label(3, 8, "性別", wcf_table));
sheet.addCell(new Label(4, 8, "婚否", wcf_table));
sheet.addCell(new Label(5, 8, "在職", wcf_table));
// table內容
//這里用你的dao
TestDAO dao = new TestDAO();
List list = dao.findBy(user.getUserId());
System.out.println("此保單擁有防疫碼數量:" + list.size());
for (int i = 0; i < list.size(); i++)
{
//對應你的vo類
User data = (User) list.get(i);

sheet.addCell(new Label(0, 9 + i, String.valueOf(i + 1),
wcf_center));
sheet.addCell(new Label(1, 9 + i, data.getDlEPCode(),
wcf_center));
sheet
.addCell(new Label(2, 9 + i, data.getDlType(),
wcf_center));
sheet.addCell(new Label(3, 9 + i, String.valueOf(data
.getDlPigAge()), wcf_center));
sheet.addCell(new Label(4, 9 + i, "", wcf_center));
sheet.addCell(new Label(5, 9 + i, "", wcf_center));
}
/** **********以上所寫的內容都是寫在緩存中的,下一句將緩存的內容寫到文件中******** */
workbook.write();
/** *********關閉文件************* */
workbook.close();
System.out.println("導出成功");
// 存放url地址
} catch (Exception e)
{
System.out.println("在輸出到EXCEL的過程中出現錯誤,錯誤原因:" + e.toString());
}
}
完整源碼可以在這里下載
主頁地址:
http://www.andykhan.com/jexcelapi/
現在做一個項目用到了它,根據不同的公司生成不同的文件夾,
在相應的文件夾下生成對應的xls. 這里只帖出生成xls部分核心代碼:

























































































































































































完整源碼可以在這里下載