jxl导出excel问题

Tommyzcg 2011-08-05 11:11:56
我用jxl导出excel,一开始是可以导出的,在模板上设置了分列后,再导出的的excel文件就打不开了,提示文件格式无效,在网上查了查,workbook.write()也写了啊。
另外,拷贝一个好用的模板到自己机器上,导出后,打开还是提示文件格式无效。
郁闷了,各位大牛帮帮忙。
谢谢了
...全文
140 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
CaptainGan 2011-08-05
  • 打赏
  • 举报
回复
参数分别的意思是:
列明数组
导出的SQL结果集数组
sheet的名字数组
导出的Ecxel路径
excel名称
-===========
注意结果集数组的大小要和sheet名称数组大小相等。
CaptainGan 2011-08-05
  • 打赏
  • 举报
回复
给个方法给你看看。

public void export2ExcelWithoutDialog(String[] coloumNames,
ResultSet[] rSets, String[] sheetNames, String path,
String excelName) {
try {
WritableWorkbook book = Workbook.createWorkbook((new File(path
+ "\\" + excelName)));
for (int h = 0; h < sheetNames.length; h++) {
// 设置单元格样式
WritableFont wFont = new WritableFont(WritableFont.TAHOMA);
// 设置字体、大小
wFont.setColour(Colour.BLACK);
wFont.setBoldStyle(WritableFont.BOLD);
wFont.setPointSize(10);
WritableCellFormat wcf = new WritableCellFormat(wFont);
wcf.setBackground(Colour.YELLOW);
WritableSheet sheet = book.createSheet(sheetNames[h], h);
for (int i = 0; i < coloumNames.length; i++) {
Label label = new Label(i, 0, coloumNames[i], wcf);
sheet.addCell(label);
}
int i = 0;
wFont = new WritableFont(WritableFont.TAHOMA);
wFont.setColour(Colour.BLACK);
wFont.setPointSize(8);
wcf = new WritableCellFormat(wFont);
while (rSets[h].next()) {
i = i + 1;
sheet.setColumnView(i, 25);
Label label1A = new Label(0, i, rSets[h].getRow() + "");
sheet.addCell(label1A);
for (int j = 0; j < coloumNames.length; j++) {
if (j == 0) {
Label label = new Label(j, i, rSets[h].getRow()
+ "", wcf);
sheet.addCell(label);
} else {
Label label = new Label(j, i,
rSets[h].getString(j), wcf);
sheet.addCell(label);
}
}
}
}
book.write();
book.close();
} catch (Exception ex) {
ex.printStackTrace();
}
}


CaptainGan 2011-08-05
  • 打赏
  • 举报
回复
贴出代码来看看
Tommyzcg 2011-08-05
  • 打赏
  • 举报
回复

File temFile = new File(templeFile); // 模版文件
File newexcelFile = new File(newFile); // 新文件
Workbook rwb = null;
WritableWorkbook workbook = null;
try {
try {
// 取得模板文件
rwb = Workbook.getWorkbook(temFile);
} catch (Exception ex) {
// ex.printStackTrace();
result = 0;
}
try {
// 通过模板创建一个文件
workbook = Workbook.createWorkbook(newexcelFile, rwb);
} catch (IOException e) {
// e.printStackTrace();
result = 0;
}
// 读取工作表的内容
WritableSheet ws = workbook.getSheet(0);
// 设置字体格式
WritableFont font = new WritableFont(WritableFont.createFont("宋体"), 10, WritableFont.NO_BOLD);
// 把字体,和数字格式加到表格中
WritableCellFormat cellFormat1 = new WritableCellFormat(font);
cellFormat1.setBorder(Border.ALL, BorderLineStyle.THIN);

try {
// 居中对齐
cellFormat1.setBorder(jxl.format.Border.BOTTOM, BorderLineStyle.MEDIUM);
cellFormat1.setAlignment(jxl.format.Alignment.LEFT);
} catch (WriteException we) {
// we.printStackTrace();
result = 0;
}
if(list!=null&&list.size()>0){
// 下面开始添加单元格 代表行数据(从0开始(0,0))
for (int i = 0; i < list.size(); i++) {
TrainUser bean = (TrainUser) list.get(i);


// 这里需要注意的是,在Excel中,第一个参数表示列,第二个表示行
Label labelA = new Label(0, i + 1, bean.getId().toString());
Label labelB = new Label(1, i + 1, bean.getFullName());
Label labelC = new Label(2, i + 1, bean.getUserName());
Label labelD = new Label(3, i + 1, bean.getPassword());
Label labelE = new Label(4, i + 1, bean.getEntryDate().toLocaleString());
Label labelF = new Label(5, i + 1, bean.getLevelNo());
Label labelG = new Label(6, i + 1, bean.getCardNo());
Label labelH = new Label(7, i + 1, bean.getBirthday().toLocaleString());
Label labelI = new Label(8, i + 1, bean.getRegionNo());
Label labelJ = new Label(9, i + 1, bean.getAgentNo());
Label labelK = new Label(10, i + 1, bean.getContact());
Label labelL = new Label(11, i + 1, bean.getNation());
Label labelM = new Label(12, i + 1, bean.getEducation());
Label labelN = new Label(13, i + 1, bean.getSex());
Label labelO = new Label(14, i + 1, bean.getIsMisstion().toString());
Label labelP = new Label(15, i + 1, bean.getContent());
try {
// 将生成的单元格添加到工作表中
labelA.setCellFormat(cellFormat1);
labelB.setCellFormat(cellFormat1);
labelC.setCellFormat(cellFormat1);
labelD.setCellFormat(cellFormat1);
labelE.setCellFormat(cellFormat1);
labelF.setCellFormat(cellFormat1);
labelG.setCellFormat(cellFormat1);
labelH.setCellFormat(cellFormat1);
labelI.setCellFormat(cellFormat1);
labelJ.setCellFormat(cellFormat1);
labelK.setCellFormat(cellFormat1);
labelL.setCellFormat(cellFormat1);
labelM.setCellFormat(cellFormat1);
labelN.setCellFormat(cellFormat1);
labelO.setCellFormat(cellFormat1);
labelP.setCellFormat(cellFormat1);

ws.addCell(labelA);
ws.addCell(labelB);
ws.addCell(labelC);
ws.addCell(labelD);
ws.addCell(labelE);
ws.addCell(labelF);
ws.addCell(labelG);
ws.addCell(labelH);
ws.addCell(labelI);
ws.addCell(labelJ);
ws.addCell(labelK);
ws.addCell(labelL);
ws.addCell(labelM);
ws.addCell(labelN);
ws.addCell(labelO);
ws.addCell(labelP);

} catch (RowsExceededException e) {
// e.printStackTrace();
result = 0;
} catch (WriteException e) {
// e.printStackTrace();
result = 0;
}
}
}

try {
workbook.write();
workbook.close();
} catch (IOException e) {
// e.printStackTrace();
result = 0;
}
result = 1;
}catch(Exception e){
result = 0;
}finally {
if (workbook != null) {
try {
workbook.close();
} catch (WriteException e) {
// e.printStackTrace();
result = 0;
} catch (IOException e) {
// e.printStackTrace();
result = 0;
}
}
if (rwb != null) {
rwb.close();
}
}
Tommyzcg 2011-08-05
  • 打赏
  • 举报
回复
感谢,下午没上。我去试试

81,095

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧