servlet生成Excel格式的数据:首先导入jxl.jar包。
在servlet中处理:
public void doPost(HttpServletRequrequest, HttpServletResponse response)
throws ServletException, IOException {
List theDataList = new ArrayList();
response.setContentType("text/html");
response.addHeader("Content-Disposition", "inline; filename="名称".xls");
JxlExcelWriter jxlExcelWriter = new JxlExcelWriter();
//封装数据
Object [] data = {temap.get("标题1内容"),temap.get("标题2内容"),temap.get("标题3内容"),temap.get("标题4内容"),temap.get("标题5内容"),temap.get("标题6内容")};
theDataList.add(data); //数据对象添加到List对象中
String[] theFirstCells = { "标题1", "标题2","标题3", "标题4", "标题5", "标题6"};
jxlExcelWriter.writerExcel(out, theDataList, theFirstCells);
out.flush();
out.close();
}
jxlExcelWriter类:
import java.io.File;
import java.io.IOException;
import java.io.OutputStream;
import java.util.List;
import jxl.Workbook;
import jxl.write.Label;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.write.WriteException;
import jxl.write.biff.RowsExceededException;
public class JxlExcelWriter {
public void writerExcel(OutputStream out, List list, String[] title) throws IOException {
if (list == null)
throw new IllegalArgumentException("写excel流需要List参数!!!");
try {
WritableWorkbook workbook = Workbook.createWorkbook(out);
WritableSheet ws = workbook.createSheet("sheet1", 0);
int rowNum = 0;
if (title != null) {
putRow(ws, 0, title);
rowNum = 1;
}
for (int i = 0; i < list.size(); i++, rowNum++) {
Object[] cells = (Object[]) list.get(i);
putRow(ws, rowNum, cells);
}
workbook.write();
workbook.close();
} catch (IOException e) {
System.out.println("jxl write file exception, cause by" + e.getMessage());
} catch (RowsExceededException e) {
System.out.println("RowsExceededException, cause by" + e.getMessage());
} catch (WriteException e) {
System.out.println("writeException,cause by" + e.getMessage());
}
}
private void putRow(WritableSheet ws, int rowNum, Object[] cells) throws RowsExceededException, WriteException {
for (int j = 0; j < cells.length; j++) {
Label cell = new Label(j, rowNum, "" + cells[j]);
ws.addCell(cell);
}
}
/**
* 将二维数组的数据写到excel
* @author cyb
* @throws WriteException
* @throws RowsExceededException */
public void writeToExcel(File theFile, List theDataList, String[] title) throws RowsExceededException, WriteException {
WritableWorkbook theExcelFileWorkbook;
try {
theExcelFileWorkbook = Workbook.createWorkbook(theFile);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("创建excel异常!!");
return;
}
WritableSheet theExcelFileSheet = theExcelFileWorkbook.createSheet("sheet1", 0);
int rowNum = 0;
if (title != null) {
putRow(theExcelFileSheet, 0, title);
rowNum = 1;
}
for (int i = 0; i < theDataList.size(); i++, rowNum++) {
Object[] cells = (Object[]) theDataList.get(i);
try {
putRow(theExcelFileSheet, rowNum, cells);
} catch (RowsExceededException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("超出excel的最大行数!!");
} catch (WriteException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("写入excel异常!!");
return;
}
}
try {
theExcelFileWorkbook.write();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
theExcelFileWorkbook.close();
} catch (WriteException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}