数据写入到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包下面的类我们需要熟练掌握。
开始我们的实验:
第一步、新建对象类: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包下面的类我们需要熟练掌握。
相关文章推荐
- php导出csv数据在浏览器中输出提供下载或保存到文件的示例
- php导出csv数据在浏览器中输出提供下载或保存到文件的示例
- php导出csv数据在浏览器中输出提供下载或保存到文件的示例
- 字节流写入浏览器做导出功能,在Chorme下载文件时“失败-网络错误”
- Asscess 通过DataTable写入数据到Excel现有模板 ,流文件导出
- PHP导出MySQL数据到Excel或者CSV文件
- 将数据导出csv文件并下载
- csv 导出数据到csv或者xls文件
- 导出(下载)数据库查询的数据生成csv文件
- 直接客户端浏览器下载文件,不必通过回传服务器再下载(例如将table内容导出excel)
- 【POI】导出excel文件,不生成中间文件,直接将内存中的数据创建对象下载到浏览器
- datagrid数据导出到excel文件给客户端下载的几种方法 (xls,csv,html)
- datagrid数据导出到excel文件给客户端下载的几种方法 (xls,csv,html)
- C#通过流写入一行数据到文件
- [源码分享]NPOI导出数据到EXCEl(输出文件,web输出下载)
- 工作总结 用, 隔开数据 后台不可以用 List<string> 接收 get请求直接通过浏览器发请求传数组或者list到后台
- php对csv文件的读取,写入,输出下载操作
- asp.net 通过 Handler 导出数据至excel (让用户下载)
- PHP 生成.csv 文件并下载到浏览器
- C#中将DataTable中数据导出到csv文件中