java 将页面内容写入excel文件中并可以将其下载到本地任意位置

 我来答
samismiling
2017-06-22 · 知道合伙人软件行家
samismiling
知道合伙人软件行家
采纳数:1340 获赞数:5604

向TA提问 私信TA
展开全部
java本身要生成excel文件必然是在后台做的,通过poi库生成excel文件并制作表格。
无法直接通过网页保存生成excel。
至于下载到本地任意位置,也是后台生成了excel文件发送到前台(浏览器),由用户选择要存在哪儿,不能直接存储(这是web沙箱限制,不允许网页直接访问本地硬盘,不然你想想,如果你打开一个网页,网页代码可以任意访问你的硬盘,你还敢开网页吗)。
要绕过沙箱限制必须装插件,也就是,你必须开发一个com或plugin插件,可以访问本地硬盘,但这需要用户手工安装(比如flash的插件,你之所以能用网页看flash是因为装了它的插件,但这是你手工装的,它不能绕过你直接给你装,它必须询问你行不行,你要手工点了OK,才能装)
趣事情
2015-12-04 · 知道合伙人互联网行家
趣事情
知道合伙人互联网行家
采纳数:517 获赞数:5452
电脑技术,软件开发。移动开发。网站建设相关专业知识。都可以提供解答和相关技术指导。

向TA提问 私信TA
展开全部
在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
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
在太平湖钓鱼的金雀花
2017-06-22 · TA获得超过320个赞
知道小有建树答主
回答量:330
采纳率:100%
帮助的人:151万
展开全部
//将你要导出的数据放入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) {

}

导出时浏览器会提示下载,可以自己指定保存位置

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yonghyun
2015-12-03 · TA获得超过461个赞
知道小有建树答主
回答量:685
采纳率:0%
帮助的人:206万
展开全部
可以用Apache POI来实现
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式