JAVA 将数据以EXCEL的形式存到本地

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA 将数据以EXCEL的形式存到本地相关的知识,希望对你有一定的参考价值。

我现在有这么个问题:
我先读取一个EXCEL文件,并对EXCEL数据进行验证。将正确的数据存入数据库,将错误的数据提供下载。现在的问题是如何将错误的数据提供下载?我是想把错误的数据先以EXCEL的形式存到本地,点下载错误数据时再读取并下载。但错误数据读取后我是以LIST形式保存的,如何转成EXCEL保存到本地?各位大侠有没好的思路和参考代码?
现在已经能将EXCEL存到本地,需要实现下载功能。即不用读取EXCEL里的数据,直接提供下载就可以了。我参考网上以流的形式下载文件,都没成功。有没其他好的方法参考?

把一个list<JavaBean> 保存成excel ,希望能帮助你,哈哈。

package com.xxx.omsvr.softwaremanager.ifc;

import java.io.IOException;
import java.io.OutputStream;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.Collection;
import java.util.Date;
import java.util.Iterator;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import org.apache.commons.lang.time.FastDateFormat;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFClientAnchor;
import org.apache.poi.hssf.usermodel.HSSFComment;
import org.apache.poi.hssf.usermodel.HSSFFont;
import org.apache.poi.hssf.usermodel.HSSFPatriarch;
import org.apache.poi.hssf.usermodel.HSSFRichTextString;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.util.HSSFColor;

/**
* 来自CSDN博客 http://blog.csdn.net/lenotang/archive/2008/08/24/2823230.aspx
* @author leno,slieer
* @version v1.0
* @param <T> 应用泛型,代表任意一个符合javabean风格的类
* 注意这里为了简单起见,boolean型的属性xxx的get器方式为getXxx(),而不是isXxx()
* byte[]表jpg格式的图片数据
*/
public class ExportExcelUtil<T>
private static FastDateFormat dateFormat = FastDateFormat.getInstance("yyyy-MM-dd hh:mm:ss");

/**
*
* 这是一个通用的方法,利用了JAVA的反射机制,可以将放置在JAVA集合中并且符号一定条件的数据以EXCEL 的形式输出到指定IO设备上
* @param title 表格标题名
* @param headers 表格属性列名数组
* @param dataset 需要显示的数据集合,集合中一定要放置符合javabean风格的类的对象。此方法支持的
* javabean属性的数据类型有基本数据类型及String,Date,byte[](图片数据)
* @param out 与输出设备关联的流对象,可以将EXCEL文档导出到本地文件或者网络中
* @param pattern 如果有时间数据,设定输出格式。默认为"yyy-MM-dd"
*/
@SuppressWarnings("unchecked")
public void exportExcel(String title, String[] headers,
Collection<T> dataset, OutputStream out)

// 声明一个工作薄
HSSFWorkbook workbook = new HSSFWorkbook();
// 生成一个表格
HSSFSheet sheet = workbook.createSheet(title);

// 设置表格默认列宽度为15个字节
sheet.setDefaultColumnWidth(15);

// 生成一个样式
HSSFCellStyle style = workbook.createCellStyle();
// 设置这些样式
style.setFillForegroundColor(HSSFColor.WHITE.index);
style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
style.setBorderBottom(HSSFCellStyle.BORDER_THIN);
style.setBorderLeft(HSSFCellStyle.BORDER_THIN);
style.setBorderRight(HSSFCellStyle.BORDER_THIN);
style.setBorderTop(HSSFCellStyle.BORDER_THIN);
style.setAlignment(HSSFCellStyle.ALIGN_CENTER);

// 生成一个字体
HSSFFont font = workbook.createFont();
font.setColor(HSSFColor.BLACK.index);
font.setFontHeightInPoints((short) 12);
font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);

// 把字体应用到当前的样式
style.setFont(font);

// 声明一个画图的顶级管理器
HSSFPatriarch patriarch = sheet.createDrawingPatriarch();

// 产生表格标题行
HSSFRow row = sheet.createRow(0);
for (short i = 0; i < headers.length; i++)
HSSFCell cell = row.createCell(i);
cell.setCellStyle(style);
HSSFRichTextString text = new HSSFRichTextString(headers[i]);
cell.setCellValue(text);


// 遍历集合数据,产生数据行
Iterator<T> it = dataset.iterator();
int index = 0;
while (it.hasNext())
index++;
row = sheet.createRow(index);
T t = (T) it.next();

// 利用反射,根据javabean属性的先后顺序,动态调用getXxx()方法得到属性值
Field[] fields = t.getClass().getDeclaredFields();

for (int i = 0; i < fields.length; i++)
HSSFCell cell = row.createCell(i);
//cell.setCellStyle(style);
Field field = fields[i];
String fieldName = field.getName();

String getMethodName = "get" + fieldName.substring(0, 1).toUpperCase() + fieldName.substring(1);

try
Class tCls = t.getClass();
Method getMethod = tCls.getMethod(getMethodName,new Class[] );
Object value = getMethod.invoke(t, new Object[] );

cell.setCellValue(value != null ? value.toString() : "");
catch (Exception e)
e.printStackTrace();
finally
// 清理资源



try
workbook.write(out);
out.close();
catch (IOException e)
e.printStackTrace();


参考技术A 是JSP 写的吗? JSP 好像不能直接写到客户端本地吧。。。。应该先以文件的形式保存到服务器.在下载本回答被提问者采纳 参考技术B 给你个建议你去查查jxl.jar这个jar包的使用方法,非常方便

04基础:将采集结果转成Excel

技术分享

前面的教程说了,数据抓取完毕之后,数据以xml格式的形式存储在本地文件夹中。

下面简单地说一下如何将保存在本地的XML文件转成Excel格式。

第一步:压缩文件

进入本地DataScraperWorks>相应规则主题名文件下,将里头的所有XML文件进行压缩。

技术分享
 

第二步:点击导入数据

进入集搜客官网个人中心主页中的爬虫管理页面,点击数据管理,再点击相应主题名右侧的“导入数据”,将刚刚压缩的包以附件的形式导入。

技术分享
 

第三步:点击导出数据

技术分享
 


系统提示导入成功,返回后,点击相应主题名右侧的“导出数据”,程序就会对数据格式进行一次转换。这一步不要忘记了。

第四步:点击历史纪录

点击相应主题名右侧的“历史记录”,对转换好后的Excel数据进行下载。

技术分享
 


打开下载的结果文件,你就能看到新鲜出炉的数据啦~轻松搞定。

技术分享

以上是关于JAVA 将数据以EXCEL的形式存到本地的主要内容,如果未能解决你的问题,请参考以下文章

Java中如何读取excel文件内容并且将内容以表格的形式显示在窗体里?

PHP中导出Excel,将数据以Excel形式导出

java使用POI,以excel文件的形式,导出前端表格数据

java 模拟登陆带验证码的网页,就想知道怎么将验证码以图片的形式下载到本地。。。。。

怎样把excel中所有以文本形式存储的数字转换为数字啊???

java中如何实现网页以Excel的形式下载的功能?