数据写入到csv文件或者通过浏览器导出到下载文件

本文介绍了一种将查询结果导出为CSV文件的方法,包括将数据写入本地CSV文件及通过浏览器下载CSV文件的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    项目中有这个需求:将查询出来的数据通过浏览器可以下载成csv文件。这里给出了两种做法,一、将数据写入到本地csv文件二、通过浏览器可以下载生成的csv文件。

开始我们的实验:

第一步、新建对象类:Person.java

 

package com.figo.onlinemarket.web.model;

 

/**

 * @author zhuzhifei

 *

 */

public class Person {

         String name;

         String age;

 

         public StringgetName() {

                   return name;

         }

 

         public voidsetName(String name) {

                   this.name =name;

         }

 

         public String getAge(){

                   return age;

         }

 

         public voidsetAge(String age) {

                   this.age =age;

         }

}

第二步、实现数据写入到csv文件或者下载

1、 写入csv文件

packagecom.figo.onlinemarket.test;

importjava.io.FileWriter;

importjava.io.IOException;

importjava.io.UnsupportedEncodingException;

importjava.util.ArrayList;

importjava.util.List;

 

/**

 * @author zhuzhifei

 *

 */

publicclass Test {

public static void main(String[] args) {

           try {

           System.out.print(fullFileName);

                    exportCsv();

           } catch (Exception e) {

                    // TODO Auto-generated catchblock

                    e.printStackTrace();

           }

           // equalTest();

}

 

 

private static void exportCsv() {

           FileWriter f = null;

           try {

                    f = newFileWriter("E:\\test.csv");

                    List<Person>personList = new ArrayList<Person>();

                    Person person1 = newPerson();

                    person1.setAge("17");

                    person1.setName("a");

                    Person person2 = newPerson();

                    person2.setAge("17");

                    person2.setName("a");

                    Person person3 = newPerson();

                    person3.setAge("17");

                    person3.setName("a");

                    Person person4 = newPerson();

                    person4.setAge("17");

                    person4.setName("a");

                    personList.add(person1);

                    personList.add(person2);

                    personList.add(person3);

                    personList.add(person4);

                    for (Person person :personList) {

                             f.write(person.getName());

                             f.write(",");

                             f.write(person.getAge());

                             f.write("\n");

                             f.flush();

                    }

                    f.close();

           } catch (IOException e) {

                    // TODO Auto-generated catchblock

                    e.printStackTrace();

           }

        }

}

2、 通过浏览器导出csv文件

 

package com.figo.onlinemarket.web.action;

 

import java.io.IOException;

import java.io.OutputStream;

import java.util.ArrayList;

import java.util.Date;

import java.util.List;

 

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

 

import org.springframework.stereotype.Controller;

import org.springframework.ui.ModelMap;

import org.springframework.web.bind.annotation.RequestMapping;

 

import com.figo.onlinemarket.web.model.Person;

 

@Controller

public class ExportAction {

    @RequestMapping(value = "/file/exportFile.htm")

    public void exportFile(HttpServletRequest request,

           HttpServletResponse response, ModelMap model) {

       OutputStream o = null;

       try {

           List<com.figo.onlinemarket.web.model.Person>personList = new ArrayList<Person>();

           com.figo.onlinemarket.web.model.Person person1 = new Person();

           person1.setAge("17");

           person1.setName("a");

           Person person2 = new Person();

           person2.setAge("18");

           person2.setName("a");

           Person person3 = new Person();

           person3.setAge("19");

           person3.setName("a");

           Person person4 = new Person();

           person4.setAge("20");

           person4.setName("a");

           personList.add(person1);

           personList.add(person2);

           personList.add(person3);

           personList.add(person4);

           String exportString = "客户姓名,年龄";

           exportString += "\n";

           if (personList.size() > 0) {

              for (int i = 0; i < personList.size(); i++) {

                  Person person = personList.get(i);

                  exportString += person.getName() + ",";

                  exportString += person.getAge();

                  exportString += "\n";

              }

 

              response.setContentType("application/download;charset=GBK");

              response.setContentType("Content-type:application/vnd.ms-excel;charset=GBK");

              response.setHeader("Content-disposition",

                     "attachment;filename=\"" + new Date() + ".csv\"");

 

              o = response.getOutputStream();

 

              o.write(exportString.toString().getBytes("GBK"));

 

           }

       } catch (IOException e) {

           e.printStackTrace();

       } finally {

           if (o != null) {

              try {

                  o.close();

              } catch (IOException e) {

                  // TODO Auto-generatedcatch block

                  e.printStackTrace();

              }

           }

       }

 

    }

}

 

第三步、总结

实验中我们可以看到还是io相关的类在起作用,写入数据呢,就通过FileWriterfileWriter.flush()方法,导出呢,则使用OutputStreamoutputStream.write()方法。Io包下面的类我们需要熟练掌握。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值