java 将页面内容写入excel文件中并可以将其下载到本地任意位置
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 将页面内容写入excel文件中并可以将其下载到本地任意位置相关的知识,希望对你有一定的参考价值。
java本身要生成excel文件必然是在后台做的,通过poi库生成excel文件并制作表格。无法直接通过网页保存生成excel。
至于下载到本地任意位置,也是后台生成了excel文件发送到前台(浏览器),由用户选择要存在哪儿,不能直接存储(这是web沙箱限制,不允许网页直接访问本地硬盘,不然你想想,如果你打开一个网页,网页代码可以任意访问你的硬盘,你还敢开网页吗)。
要绕过沙箱限制必须装插件,也就是,你必须开发一个com或plugin插件,可以访问本地硬盘,但这需要用户手工安装(比如flash的插件,你之所以能用网页看flash是因为装了它的插件,但这是你手工装的,它不能绕过你直接给你装,它必须询问你行不行,你要手工点了OK,才能装) 参考技术A 在Java中向Excel文件写入内容
四、导出数据到Excel文件中
下面的例子,设置了数字、日期的格式,还有字体,颜色等。
File tempFile=new File("d:/temp/output.xls");
WritableWorkbook workbook = Workbook.createWorkbook(tempFile);
WritableSheet sheet = workbook.createSheet("TestCreateExcel", 0);
//一些临时变量,用于写到excel中
Label l=null;
jxl.write.Number n=null;
jxl.write.DateTime d=null;
//预定义的一些字体和格式,同一个Excel中最好不要有太多格式
WritableFont headerFont = new WritableFont(WritableFont.ARIAL, 12, WritableFont.BOLD, false, UnderlineStyle.NO_UNDERLINE, jxl.format.Colour.BLUE);
WritableCellFormat headerFormat = new WritableCellFormat (headerFont);
WritableFont titleFont = new WritableFont(WritableFont.ARIAL, 10, WritableFont.NO_BOLD, false, UnderlineStyle.NO_UNDERLINE, jxl.format.Colour.RED);
WritableCellFormat titleFormat = new WritableCellFormat (titleFont);
WritableFont detFont = new WritableFont(WritableFont.ARIAL, 10, WritableFont.NO_BOLD, false, UnderlineStyle.NO_UNDERLINE, jxl.format.Colour.BLACK);
WritableCellFormat detFormat = new WritableCellFormat (detFont);
NumberFormat nf=new NumberFormat("0.00000"); //用于Number的格式
WritableCellFormat priceFormat = new WritableCellFormat (detFont, nf);
DateFormat df=new DateFormat("yyyy-MM-dd");//用于日期的
WritableCellFormat dateFormat = new WritableCellFormat (detFont, df);
//剩下的事情,就是用上面的内容和格式创建一些单元格,再加到sheet中
l=new Label(0, 0, "用于测试的Excel文件", headerFormat);
sheet.addCell(l);
//add Title
int column=0;
l=new Label(column++, 2, "标题", titleFormat);
sheet.addCell(l);
l=new Label(column++, 2, "日期", titleFormat);
sheet.addCell(l);
l=new Label(column++, 2, "货币", titleFormat);
sheet.addCell(l);
l=new Label(column++, 2, "价格", titleFormat);
sheet.addCell(l);
//add detail
int i=0;
column=0;
l=new Label(column++, i+3, "标题 "+i, detFormat);
sheet.addCell(l);
d=new DateTime(column++, i+3, newjava.util.Date(), dateFormat);
sheet.addCell(d);
l=new Label(co 参考技术B //将你要导出的数据放入list
List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
try
HttpServletResponse response = ServletActionContext.getResponse();
// 创建HSSFWorkbook对象(excel的文档对象)
HSSFWorkbook wb = new HSSFWorkbook();
// 建立新的sheet对象(excel的表单)
HSSFSheet sheet = wb.createSheet("表名");
// 在sheet里创建第一行,参数为行索引(excel的行),可以是0~65535之间的任何一个
String[] colNameArray = colNames.split(",");
HSSFRow rowHeader = sheet.createRow(0);
for (int i = 0; i < colNameArray.length; i++)
rowHeader.createCell(i).setCellValue(colNameArray[i]);
// 取出所有有列表数据。
String[] colModels = colModel.split(",");
for (int i = 0; i < list.size(); i++)
HSSFRow row = sheet.createRow(i + 1);//从第二行开始创建
Map<String, Object> map = list.get(i);
int k = 0;
// 只导出选中的数据。
for (String s : colModels)
row.createCell(k++).setCellValue(String.valueOf(map.get(s)));
// 输出Excel文件
OutputStream output;
output = response.getOutputStream();
response.reset();
String exportName="execlExport"+new SimpleDateFormat("yyyyMMdd").format(new Date());
String str = new String(exportName.getBytes("gbk"),"ISO-8859-1");
response.setContentType("application/vnd.ms-excel;charset=UTF-8"); // 下载文版类型
//response.setContentType("application/x-download");
response.setHeader("Content-disposition", "attachment; filename=" + str + ".xls");
response.setCharacterEncoding("UTF-8");
wb.write(output);
output.close();
catch(Exception e)
导出时浏览器会提示下载,可以自己指定保存位置
参考技术C 可以用Apache POI来实现以上是关于java 将页面内容写入excel文件中并可以将其下载到本地任意位置的主要内容,如果未能解决你的问题,请参考以下文章
java使用poi读取excel时,因一些格式问题,执行excel函数错误