读取数据库文件用POI生成Excel

读取数据库中的数据导出成Excel在页面可供用户下载,代码如下:

/**
* 读取数据库文件生成Excel
*
*/
public String paymentsToExcel(List<VerifyCode> verifyCodesList) {
//verifyCodesList是读取数据库数据存入List中
String sheetName = "随机码列表";
String xlsName = System.currentTimeMillis()+".xls";
//创建Excel的工作册 Workbook,对应到一个excel文档
HSSFWorkbook workbook = new HSSFWorkbook();
//创建Excel的工作sheet,对应到一个excel文档的tab
HSSFSheet sheet = workbook.createSheet();
workbook.setSheetName(0,sheetName);
HSSFRow row= sheet.createRow((short)0);;
HSSFCell cell;
int nColumn=fields.length;
//excel列名
row = sheet.createRow((short)0);
for(int j=1;j<=nColumn;j++)
{
//序列ID
cell = row.createCell(j-1);
cell.setCellType(HSSFCell.CELL_TYPE_STRING);
Object objReturnValue = fieldsName[j-1] ;
cell.setCellValue(objReturnValue+"");
}
int iRow=1;
//写入各条记录,每条记录对应Excel中的一行
for (LicaiVerifyCode liCaiVerifyCode:verifyCodesList){
row = sheet.createRow((short)iRow);
for(int j=1;j<=nColumn;j++)
{
//序列ID
cell = row.createCell(j-1);
String objReturnValue = "" ;
cell.setCellType(HSSFCell.CELL_TYPE_STRING);
try {
Method currentMethod = liCaiVerifyCode.getClass().getMethod(fields[j-1]);
if(fields[j-1].equals("getEffectiveTime")||fields[j-1].equals("getFailureTime")||fields[j-1].equals("getCreateTime")||fields[j-1].equals("getLastModifyTime")){
SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd hh-mm-ss");
objReturnValue = sd.format(currentMethod.invoke(liCaiVerifyCode));
}else{
objReturnValue = String.valueOf(currentMethod.invoke(liCaiVerifyCode));
}
} catch (Exception ex) {
ex.printStackTrace();
}
cell.setCellValue(objReturnValue+"");
}
iRow++;
}
try {
//输出
ActionContext context = ActionContext.getContext();
HttpServletResponse response = (HttpServletResponse) context.get(ServletActionContext.HTTP_RESPONSE);
response.setHeader("Content-disposition", "attachment; filename="+xlsName);//设定输出文件头
response.setContentType("application/vnd.ms-excel");//定义输出类型
OutputStream os = response.getOutputStream();
workbook.write(os);
os.close();
} catch (Exception ex) {
ex.printStackTrace();
}
return SUCCESS;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值