论坛首页 Java企业应用论坛

关于Struts环境下POI与Excel交互的问题

浏览 5968 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-11-15  
求教:
Struts1.X环境下,POI与Excel交互的问题.
说明:我已经能够根据数据生成Excel文件后保存到相应的目录.
希望改进:
1.点击导出按钮后,是否能跳出一个像下载一样的对话框,然后根据我选择的保存路劲来保存Excel文件,而不是在程序中写死.
2.是否可以先生成一个模板,然后我根据模板来填充数据。这样的话对负责表头格式的Excel处理将会很方便。
如果有相应的代码的话,能贴出来分享一下是最好不过的了。
先谢过了!
鞠躬!
   发表时间:2007-11-15  
1.弹出对话框,用户保存选择路径,会保存到需要的目录,不知道你说的是什么意思

2.可以自己手工作或程序生成一个模板,放到某个目录,导出时读那个excel往里写数据就行了,没什么特别的。
0 请登录后投票
   发表时间: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();
}
就可以下载, 然后选择保存路径了
0 请登录后投票
   发表时间:2007-11-16  
楼主所说的第一个问题我遇到过,好像无法通过页面直接向客户端的硬盘写东西。最后只好现在服务器的固定路径下生成文件,然后通过浏览器再让他下载。
0 请登录后投票
   发表时间:2007-11-16  
JaNer 写道
求教:
1.点击导出按钮后,是否能跳出一个像下载一样的对话框,然后根据我选择的保存路劲来保存Excel文件,而不是在程序中写死.


不用poi做..用application/vnd.ms-excel做,简单方便!

JaNer 写道

2.是否可以先生成一个模板,然后我根据模板来填充数据。这样的话对负责表头格式的Excel处理将会很方便。


如果用application/vnd.ms-excel做,不会有你说的这个问题.


个人感觉导入使用POI比较不错...导出如果没有及特殊的情况..poi相对来说好麻烦的!
0 请登录后投票
   发表时间:2007-11-16  
mocoffee 写道

好像无法通过页面直接向客户端的硬盘写东西



这个可以实现的, vbscript就行..! 只是我认为麻烦些..!
0 请登录后投票
   发表时间:2007-11-16  
引用
1.点击导出按钮后,是否能跳出一个像下载一样的对话框,然后根据我选择的保存路劲来保存Excel文件,而不是在程序中写死.
2.是否可以先生成一个模板,然后我根据模板来填充数据。这样的话对负责表头格式的Excel处理将会很方便。

1, 你的意思我理解没有错误的话就是点击就弹出保存对话框,这个是可以的,生成到一个目录然后用smartupload,他有一个属性是设置不自动打开而是弹出对话框。
2, 这个我帮公司刚刚做了,问了个问题刚刚被评为新手帖,郁闷了 不知道你具体情况,不过我们是这样做的,你把excel表头,一般都是汉字,定义在一个xml中(当然可能还有其他信息或者读表直接生成),然后根据xml用POI生成模板到一个固定的目录供用户下载填写数据。上传解析存入DB。
0 请登录后投票
   发表时间:2007-11-17  
引用
1, 你的意思我理解没有错误的话就是点击就弹出保存对话框,这个是可以的,生成到一个目录然后用smartupload,他有一个属性是设置不自动打开而是弹出对话框。
2, 这个我帮公司刚刚做了,问了个问题刚刚被评为新手帖,郁闷了 不知道你具体情况,不过我们是这样做的,你把excel表头,一般都是汉字,定义在一个xml中(当然可能还有其他信息或者读表直接生成),然后根据xml用POI生成模板到一个固定的目录供用户下载填写数据。上传解析存入DB。

1.我是要将Excel下载到客户端,不明白和SmartUpload有何关系!我是想点了到处按钮后,跳出一个像点了下载链接后的下载对话窗口,然后选择保存路劲进行保存Excel.
2.你说的这种实现方式好像过于复杂了吧。
引用
楼主所说的第一个问题我遇到过,好像无法通过页面直接向客户端的硬盘写东西。最后只好现在服务器的固定路径下生成文件,然后通过浏览器再让他下载。

这个办事似乎很可行!
0 请登录后投票
   发表时间:2007-11-17  
1.我是要将Excel下载到客户端,不明白和SmartUpload有何关系!我是想点了到处按钮后,跳出一个像点了下载链接后的下载对话窗口,然后选择保存路劲进行保存Excel.
------------------------------------------
SmartUpload也有下载功能的。
SmartUpload su = new SmartUpload();
su.initialize(pageContext);
// 设定contentDisposition为null以禁止浏览器自动打开文件,
//保证点击链接后是下载文件。
su.setContentDisposition(null);
你生成到一个目录下然后在用SmartUpload下载,这个我以前做过,也是从页面导出数据到excel然后下载。
0 请登录后投票
   发表时间:2007-11-17  
java虫 写道
1.弹出对话框,用户保存选择路径,会保存到需要的目录,不知道你说的是什么意思

2.可以自己手工作或程序生成一个模板,放到某个目录,导出时读那个excel往里写数据就行了,没什么特别的。

你要是嫌复杂,他的第二个方法就可以实现了,不过如果模板要生成很多的话,手工做一个模板不太现实。
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics