import jxl.Workbook;
import jxl.write.Label;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.write.WriteException;
import jxl.write.biff.RowsExceededException;
/**
* 创建Excel文件
* @param dataList(数据)
* @param path (路径名)
* @param fileName (文件名)
* @param sheetName (sheet名)
* @return (excel文件完整文件名)
*/
public static String creatExcel(List dataList, String path,
String fileName, String sheetName) {
String file = path + fileName + ".xls";
File dir = new File(FileTool.PATH_REAL_ROOT + path);
if (!dir.exists())
dir.mkdirs();
File excelFile = new File(FileTool.PATH_REAL_ROOT + file);// 要创建的excel文件
WritableWorkbook excel;
try {
excel = Workbook.createWorkbook(excelFile);
WritableSheet sheet = excel.createSheet(sheetName, 0);
for (int i = 0; i < dataList.size(); i++) {
ArrayList datas = (ArrayList) dataList.get(i);
for (int j = 0; j < datas.size(); j++) {
Label label2 = new Label(j, i, (String) datas.get(j));
sheet.addCell(label2);
}
}
// log.debug("开始写入");
excel.write();
// log.debug("写入完毕");
excel.close();
// log.debug("关闭");
excelFile = null;
} catch (IOException e) {
log.exception(e);
} catch (RowsExceededException e) {
log.exception(e);
} catch (WriteException e) {
log.exception(e);
}
return file;
}
/**
* 压缩文件
* @param inputFileName
* @param zipFileName
*/
public static void zip(String inputFileName, String zipFileName) {
try {
ZipOutputStream out = new ZipOutputStream(new FileOutputStream(
FileTool.PATH_REAL_ROOT + zipFileName));
File f = new File(FileTool.PATH_REAL_ROOT + inputFileName);
String base = f.getName();
out.putNextEntry(new org.apache.tools.zip.ZipEntry(base));
FileInputStream in = new FileInputStream(f);
int b;
while ((b = in.read()) != -1) {
out.write(b);
}
in.close();
out.close();
} catch (IOException e) {
log.exception(e);
}
}
/**
* 下载文件
* @param file(文件)
* @param displayName(下载时显示的文件名)
* @param response
*/
public static void download(String file, String displayName,
HttpServletResponse response) {
try {
displayName = URLEncoder.encode(displayName, "UTF-8");
} catch (UnsupportedEncodingException e1) {
log.exception(e1);
}
response.setContentType("application/x-download");// 设置为下载application/x-download
response.addHeader("Content-Disposition", "attachment;filename="
+ displayName);
BufferedInputStream bis = null;
BufferedOutputStream bos = null;
try {
bis = new BufferedInputStream(new FileInputStream(
FileTool.PATH_REAL_ROOT + file));
bos = new BufferedOutputStream(response.getOutputStream());
byte[] buff = new byte[1024];
int bytesRead;
while (-1 != (bytesRead = bis.read(buff, 0, buff.length))) {
bos.write(buff, 0, bytesRead);
}
} catch (final IOException e) {
log.exception(e);
} finally {
if (bis != null)
try {
bis.close();
} catch (IOException e) {
log.exception(e);
}
bis = null;
if (bos != null)
try {
bos.close();
} catch (IOException e) {
log.exception(e);
}
bos = null;
}
}