如何实现从JSP页面通过点击按钮将数据导出到excel,也可以将execl中的内容导入
跪求详细方法
跪求详细方法
解决方案 »
- 我是菜鸟,我设计了三个界面,关闭一个,其他两个也退出了。
- Tomcat 5.5与Tomcat5.0当中,server.xml的配置有什么不同啊
- 请问spring如何动态实例化对象?
- Lucene如何建立FTP上文件的索引
- struts如何实现上传文件的重命名????
- Eclipse怎么样才能和JBOSS配置在一起
- 用Web Services怎么样验证用户身份登陆?小弟不才,请各位大虾指点。
- 谁有http://bbs.et8.net的注册用户或是其版主给弄个注册用户!!!
- 为了配合iReport新出的0.3版本,放出我整理的JasperReport与iReport配置与使用说明
- 那为可以告诉我怎么在Websphere 5.0里面怎么写Structs呀!!!
- jquery jqgrid 问题
- IE和火狐对相对路径的解析不同?java web
只能告诉你个我解决的思路吧。
首先使用struts2的action接受页面发来的数据(注意这个数据建议放到一个对象当中,直接接受这个对象就可以了),导入execl在2010之后可以用POI的方式,2010之前的可以选择lxt(好像是,不确定)。
写入。
将execl的内容导入jsp基本就差不多,传入一个对象,用foreach遍历输出应该就可以了吧。
//接收数据 //读取文件路径
String userfile = request.getParameter("userfile");
//上传文件的类型:1内卡,2外卡 3. 易宝交易数据(内卡),4.中行交易数据(内卡)
String postype = request.getParameter("postype");
String fileType = request.getParameter("fileType"); Timestamp now = new Timestamp(System.currentTimeMillis()); File read = new File(userfile);
//固定数据
//
//java.text.NumberFormat nf = java.text.NumberFormat.getInstance();
//DecimalFormat idf = new DecimalFormat("#,###");
DecimalFormat ddf = new DecimalFormat("#,##0.00");
//SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
//max num of per sheet:min( sheetMaxRowNum ,MAX_ROW_NUM_OF_EXCEL)
int sheetMaxRowNum = 30001; //total sheet num
int totalSheetNum = 0;
//total row num
int totalRowNum = 0; //creat workbook
jxl.write.WritableWorkbook wwb = Workbook.createWorkbook(response.getOutputStream());
//define sheet
jxl.write.WritableSheet ws = null; //set font format for title
jxl.write.WritableFont ww = new jxl.write.WritableFont(WritableFont.TAHOMA, 11, WritableFont.BOLD, false, jxl.format.UnderlineStyle.NO_UNDERLINE);
jxl.write.WritableCellFormat wwf = new jxl.write.WritableCellFormat(ww); //set font format for content
jxl.write.WritableFont wfc = new jxl.write.WritableFont(WritableFont.ARIAL, 10, WritableFont.NO_BOLD, false, jxl.format.UnderlineStyle.NO_UNDERLINE, jxl.format.Colour.BLACK);
jxl.write.WritableCellFormat wcfFC = new jxl.write.WritableCellFormat(wfc);
导出就是上面的逆过程
支持xls和xlsx
private HSSFWorkbook fillDataToExcel(List<AppDownload> list, HttpServletResponse response){
HSSFWorkbook workbook = null;
try{
if(null != list && list.size() > 0){
workbook = new HSSFWorkbook();
HSSFSheet sheet = workbook.createSheet("Sheet1");
HSSFRow row = sheet.createRow(0);
row.setHeight((short)300);
this.setColumnWidth(workbook, sheet, 0);
this.setColumnWidth(workbook, sheet, 1);
this.setColumnWidth(workbook, sheet, 2);
this.setColumnWidth(workbook, sheet, 3);
this.setColumnWidth(workbook, sheet, 4);
this.createTitleCell(workbook,row, 0, "编号");
this.createTitleCell(workbook,row, 1, "游戏名称");
this.createTitleCell(workbook,row, 2, "下载数");
this.createTitleCell(workbook,row, 3, "分值");
this.createTitleCell(workbook,row, 4, "接入时间");
HSSFCellStyle style = workbook.createCellStyle();
HSSFFont font = workbook.createFont();
AppDownload app = null;
for(int i = 0; i < list.size(); i++){
app = list.get(i);
row = sheet.createRow(i+1);
this.createCell(workbook,row, style,font, 0, String.valueOf(app.getId()));
this.createCell(workbook,row, style, font,1, app.getAppName());
this.createCell(workbook,row, style,font, 2, String.valueOf(app.getDownCount()));
this.createCell(workbook,row, style,font, 3, String.valueOf(app.getAppScore()));
this.createCell(workbook,row, style,font, 4, app.getAppRegtime());
}
row = sheet.createRow(list.size()+2);
this.createTitleCell(workbook,row, 0, "总计");
this.createCell(workbook,row, style, font, 1, "--");
this.createTitleCell(workbook,row, 2, list.size() > 0 ? String.valueOf(app.getDownTotal()) : String.valueOf(0));
this.createCell(workbook,row, style,font, 3, "--");
this.createCell(workbook,row, style,font, 4, "--");
} else {
this.getPrintWrite(response, "请先执行查询操作后再导出数据");
return null;
}
} catch(Exception ex){
ex.printStackTrace();
}
return workbook;
}
最后再用outputstream来输入就OK了!private void downloadExcel(HSSFWorkbook workbook, HttpServletResponse response, String fileName){
try{
OutputStream output = response.getOutputStream();
response.setHeader("Content-disposition", "attachment;filename="+URLEncoder.encode(fileName,"utf-8"));
response.setContentType("application/msexcel;charset=UTF-8");
workbook.write(output);
} catch (IOException ex){
ex.printStackTrace();
}
}