您的位置:首页 > 其它

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

2013-03-19 17:10 756 查看
项目中有这个需求:将查询出来的数据通过浏览器可以下载成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相关的类在起作用,写入数据呢,就通过FileWriter,fileWriter.flush()方法,导出呢,则使用OutputStream的outputStream.write()方法。Io包下面的类我们需要熟练掌握。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: