下载输出到CSV文件

原文地址

开发工具:eclipse+apache2.2+Tomcat6.0

开发环境:webwork+spring+iBatis

TestBO.java

/**
  * CSVダウンロード
  *
  * @param inputParam 画面検索入力条件
  * @return InputStream
  * @throws IOException
  */

public InputStream downloadCSV(String inputParam) throws IOException {

           //将数据以list<bean>的方式从DB中取出

           List<OutputVO> outputList = TestDAO.selectAllTestData(inputParam);

           FileOutputStream fos = null;

           try {
                     File temFile = File.createTempFile("tmp", ".csv");
                     temFile.deleteOnExit();
                     fos = new FileOutputStream(temFile);
                     OutputStreamWriter osw = new OutputStreamWriter(fos, "MS932");
                     BufferedWriter bw = new BufferedWriter(osw);
                     StringBuilder sb = null;

                     if (null != outputList) {

                           sb = new StringBuilder();

                           sb.append("項目1,");

            sb.append("項目2,");

             sb.append("項目3,");

                           sb.append("項目4,");

                           ...

                           sb.append("項目n");

                           String header = sb.toString();
                           bw.write(header);
                           bw.newLine();

                           for (OutputVO vo : outputList) {

                                     sb = new StringBuilder();

                                     sb.append(vo.getXXX() + ",");

                                     sb.append(vo.getYYY() + ",");

                                     sb.append(vo.getZZZ() + ",");

                                     ...

                                     sb.append(vo.getWWW());

                                     bw.write(sb.toString());
                                     bw.newLine();

                            }

                            bw.flush();
                            bw.close();
                            osw.close();
                            fos.close();
                            return new FileInputStream(temFile);
                } catch (IOException e) {
                      return null;
                } finally {
                       try {
                                if(output != null)
                                output.close();
                        }  catch(IOException ioe) { }               

                }

     }

TestAction.java

private TestBO testBO;

private InputStream inputStream;

/**
  * CSVファイルダウンロード
  * @param
  * @return String
  */
 public String downloadCSV() throws Exception {
  try {
           inputStream = testBO.downloadCSV(inputParam);
        } catch (Exception e) {
           log.error(e, e);
           throw e;
        }

        return SUCCESS;

 }

xwork.xml

<action name="downloadCSV" class="jp.zhuzhu.TestAction" method="downloadCSV">
   <result name="success" type="stream">
         <param name="inputName">inputStream</param>
         <param name="contentType">application/x-msdownload; charset=Windows31J</param>
         <param name="contentDisposition">attachment; filename="test.csv"</param>
         <param name="bufferSize">1024</param>
   </result>
</action>

test.jsp

<script type="text/javascript">

      function download(){

           document.searchForm.target = "downloadFrm";
           document.searchForm.action = "downloadCSV.action";
           document.searchForm.submit();

      }

</script>

<form method="get" name="searchForm" action="">

<div class="download"><input type="button" value="Download" οnclick="javawscript:download()"/></div>

</form>

<iframe id="downloadFrm" name="downloadFrm" style="display:none" scrolling="no" frameborder="0"></iframe>

 

 如果数据自身有逗号,显示在csv里会出现自动分割的现象。

解决办法是在该列里加上引号。

sb.append("\"" + vo.getSupportNote() + "\"");

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
推荐,HR人力资源的数据思维工具包合集,共40份。 一、数据分析PPT 【绩效】绩效管理数据分析 【培训】培训数据分析报告(PPT-63页) 【述职】HR年底漂亮的述职报告模板(拿来即用) 【通用】人力资源常用分析数据 【通用】人力资源数据分析 【通用】数据分析师培训(1) 【通用】数据分析师培训(2) 【通用】数据分析师培训(3) 【通用】HR管理数据分析-基础篇 【薪酬】龙湖地产企业薪酬数据分析报告 【招聘】招聘数据分析报告 【培训】大数据时代的人力资源管理 【通用】大数据与人力资源管理 【通用】企业人力资源数据分析 【通用】人力资源数据中心建设探讨 二、数据分析表格 部门绩效考核统计分析表 工作周报数据分析表excel模板 公司人力成本分析表(siow) 年度入职与离职人员统计 培训看板 人力资源汇总表(基础数据、结构分析、离职分析、保险、费用、绩效等) 人力资源结构分析表 人力资源结构分析表 人力资源数据分析指标 人力资源统计分析表 人力资源预算分析表 人事信息看板 人员业绩分析表 人员业绩分析表Excel图表 入离职数据分析更新版 薪酬看板 薪酬总额测算表(部门) 员工离职统计及分析表 员工入职统计及分析表 员工招聘、离职成本核算表 月度绩效指标及月度绩效分析表 招聘看板 招聘员工统计分析表 招聘员工统计分析Excel表格 HR月分析数据模板
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值