浏览 5968 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-11-15
Struts1.X环境下,POI与Excel交互的问题. 说明:我已经能够根据数据生成Excel文件后保存到相应的目录. 希望改进: 1.点击导出按钮后,是否能跳出一个像下载一样的对话框,然后根据我选择的保存路劲来保存Excel文件,而不是在程序中写死. 2.是否可以先生成一个模板,然后我根据模板来填充数据。这样的话对负责表头格式的Excel处理将会很方便。 如果有相应的代码的话,能贴出来分享一下是最好不过的了。 先谢过了! 鞠躬! 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2007-11-15
1.弹出对话框,用户保存选择路径,会保存到需要的目录,不知道你说的是什么意思
2.可以自己手工作或程序生成一个模板,放到某个目录,导出时读那个excel往里写数据就行了,没什么特别的。 |
|
返回顶楼 | |
发表时间:2007-11-15
1.用Servlet, 里面使用IO流. 例:
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String model = request.getParameter("fileName"); logger.info("model is: " + model); String fileName = new String(model.getBytes("GBK"), "ISO-8859-1"); logger.info("fileName is: " + fileName); response.addHeader("content-type", "application/x-msdownload;"); response.addHeader("content-disposition", "attachment; filename=" + fileName); String path = this.getServletContext().getRealPath("/"); String downloadFile = path + "xml/" + model + ".zip"; InputStream inputStream = new FileInputStream(downloadFile); OutputStream toClient = response.getOutputStream(); byte[] buffer = new byte[1024]; int i = -1; while ((i = inputStream.read(buffer)) != -1) { toClient.write(buffer, 0, i); } toClient.flush(); toClient.close(); inputStream.close(); } 就可以下载, 然后选择保存路径了 |
|
返回顶楼 | |
发表时间:2007-11-16
楼主所说的第一个问题我遇到过,好像无法通过页面直接向客户端的硬盘写东西。最后只好现在服务器的固定路径下生成文件,然后通过浏览器再让他下载。
|
|
返回顶楼 | |
发表时间:2007-11-16
JaNer 写道 求教:
1.点击导出按钮后,是否能跳出一个像下载一样的对话框,然后根据我选择的保存路劲来保存Excel文件,而不是在程序中写死. 不用poi做..用application/vnd.ms-excel做,简单方便! JaNer 写道 2.是否可以先生成一个模板,然后我根据模板来填充数据。这样的话对负责表头格式的Excel处理将会很方便。 如果用application/vnd.ms-excel做,不会有你说的这个问题. 个人感觉导入使用POI比较不错...导出如果没有及特殊的情况..poi相对来说好麻烦的! |
|
返回顶楼 | |
发表时间:2007-11-16
mocoffee 写道 好像无法通过页面直接向客户端的硬盘写东西 这个可以实现的, vbscript就行..! 只是我认为麻烦些..! |
|
返回顶楼 | |
发表时间:2007-11-16
引用 1.点击导出按钮后,是否能跳出一个像下载一样的对话框,然后根据我选择的保存路劲来保存Excel文件,而不是在程序中写死.
2.是否可以先生成一个模板,然后我根据模板来填充数据。这样的话对负责表头格式的Excel处理将会很方便。 1, 你的意思我理解没有错误的话就是点击就弹出保存对话框,这个是可以的,生成到一个目录然后用smartupload,他有一个属性是设置不自动打开而是弹出对话框。 2, 这个我帮公司刚刚做了,问了个问题刚刚被评为新手帖,郁闷了 不知道你具体情况,不过我们是这样做的,你把excel表头,一般都是汉字,定义在一个xml中(当然可能还有其他信息或者读表直接生成),然后根据xml用POI生成模板到一个固定的目录供用户下载填写数据。上传解析存入DB。 |
|
返回顶楼 | |
发表时间:2007-11-17
引用 1, 你的意思我理解没有错误的话就是点击就弹出保存对话框,这个是可以的,生成到一个目录然后用smartupload,他有一个属性是设置不自动打开而是弹出对话框。 2, 这个我帮公司刚刚做了,问了个问题刚刚被评为新手帖,郁闷了 不知道你具体情况,不过我们是这样做的,你把excel表头,一般都是汉字,定义在一个xml中(当然可能还有其他信息或者读表直接生成),然后根据xml用POI生成模板到一个固定的目录供用户下载填写数据。上传解析存入DB。 1.我是要将Excel下载到客户端,不明白和SmartUpload有何关系!我是想点了到处按钮后,跳出一个像点了下载链接后的下载对话窗口,然后选择保存路劲进行保存Excel. 2.你说的这种实现方式好像过于复杂了吧。 引用 楼主所说的第一个问题我遇到过,好像无法通过页面直接向客户端的硬盘写东西。最后只好现在服务器的固定路径下生成文件,然后通过浏览器再让他下载。 这个办事似乎很可行! |
|
返回顶楼 | |
发表时间:2007-11-17
1.我是要将Excel下载到客户端,不明白和SmartUpload有何关系!我是想点了到处按钮后,跳出一个像点了下载链接后的下载对话窗口,然后选择保存路劲进行保存Excel.
------------------------------------------ SmartUpload也有下载功能的。 SmartUpload su = new SmartUpload(); su.initialize(pageContext); // 设定contentDisposition为null以禁止浏览器自动打开文件, //保证点击链接后是下载文件。 su.setContentDisposition(null); 你生成到一个目录下然后在用SmartUpload下载,这个我以前做过,也是从页面导出数据到excel然后下载。 |
|
返回顶楼 | |
发表时间:2007-11-17
java虫 写道 1.弹出对话框,用户保存选择路径,会保存到需要的目录,不知道你说的是什么意思
2.可以自己手工作或程序生成一个模板,放到某个目录,导出时读那个excel往里写数据就行了,没什么特别的。 你要是嫌复杂,他的第二个方法就可以实现了,不过如果模板要生成很多的话,手工做一个模板不太现实。 |
|
返回顶楼 | |