java实现Excel数据导出

java实现Excel数据导出:

目前,比较常用的实现Java导入、导出Excel的技术有两种Jakarta POI和Java Excel

Jakarta POI 是一套用于访问微软格式文档的Java API。Jakarta POI有很多组件组成,其中有用于操作Excel格式文件的HSSF和用于操作Word的HWPF,在各种组件中目前只有用于操作Excel的HSSF相对成熟。官方主页http://poi.apache.org/index.html,API文档http://poi.apache.org/apidocs/index.html

Jakarta POI HSSF API组件

HSSF(用于操作Excel的组件)提供给用户使用的对象在rg.apache.poi.hssf.usermodel包中,主要部分包括Excel对象,样式和格式,还有辅助操作。有以下几种对象:

2.3 基本操作步骤

首先,理解一下一个Excel的文件的组织形式,一个Excel文件对应于一个workbook(HSSFWorkbook),一个workbook可以有多个sheet(HSSFSheet)组成,一个sheet是由多个row(HSSFRow)组成,一个row是由多个cell(HSSFCell)组成。

基本操作步骤:

下面来看一个动态生成Excel文件的例子:

 1 //创建HSSFWorkbook对象
 2 HSSFWorkbook wb = new HSSFWorkbook();
 3 //创建HSSFSheet对象
 4 HSSFSheet sheet = wb.createSheet("sheet0");
 5 //创建HSSFRow对象
 6 HSSFRow row = sheet.createRow(0);
 7 //创建HSSFCell对象
 8 HSSFCell cell=row.createCell(0);
 9 //设置单元格的值
10 cell.setCellValue("单元格中的中文");
11 //输出Excel文件
12 FileOutputStream output=new FileOutputStream("d:\\workbook.xls");
13 wkb.write(output);
14 output.flush();

HSSF读取文件同样还是使用这几个对象,只是把相应的createXXX方法变成了getXXX方法即可。可见只要理解了其中原理,不管是读还是写亦或是特定格式都可以轻松实现,正所谓知其然更要知其所以然。

2:导出Excel应用实例:

请参考:https://blog.csdn.net/xunwei0303/article/details/53213130



3:导出表格的工具类:

excelUtil:

 1  public static void downLoadUtil(HttpServletResponse response, List<List<String>> data) {
 2         //文件名字--时间戳
 3         long timeMillis = System.currentTimeMillis();
 4         String name = Long.toString(timeMillis);
 5         //响应文件的格式
 6         response.setContentType("application/vnd.ms-excel");
 7         //创建excel对象
 8         HSSFWorkbook workbook = new HSSFWorkbook();
 9
10         ServletOutputStream outputStream = null;
11         try {
12             // 进行转码,使其支持中文文件名
13             String codedFileName = new String(name.getBytes("gbk"), "iso-8859-1");
14             response.setHeader("content-disposition", "attachment;filename=" + codedFileName + ".xls");
15             //往表格中装入数据:
16             //创建Excel 表格
17             HSSFSheet sheet = workbook.createSheet("sheet1");
18             //遍历数据:
19             for (int i = 0; i < data.size(); i++) {
20                 //  取出一行数据
21                 List<String> rowData = data.get(i);
22                 //创建一行
23                 HSSFRow row = sheet.createRow(1);
24                 for (int j = 0; j < rowData.size(); j++) {
25                     //取出一行中的一个数据
26                     String str = rowData.get(j);
27                     //创建表格一行的一个格子(列)
28                     HSSFCell cell = row.createCell(j);
29                     //把数据装入表格:
30                     cell.setCellValue(str);
31                 }
32             }
33             outputStream = response.getOutputStream();
34             workbook.write(outputStream);
35
36         } catch (Exception e) {
37             e.printStackTrace();
38             System.out.println("文件下载失败!");
39         } finally {
40             try {
41                 //清除缓存
42                 outputStream.flush();
43                 //关闭输出流
44                 outputStream.close();
45             } catch (IOException e) {
46                 e.printStackTrace();
47             }
48         }
49         System.out.println("文件下载成功!");
50     }

3-2:将对象转换为String数组:

工具类:

 1 /*
 2      * 把Java对象转换成String数组
 3      */
 4     public static String[] getValueRow(Object bean) throws Exception {
 5       //运用反射
 6         //获取字节码:
 7         Class<?> aClass = bean.getClass();
 8         //拿到字段:
 9         Field[] declaredFields = aClass.getDeclaredFields();
10         int length = declaredFields.length;
11         String[] row = new String[length];
12         //从字段里面取值:
13         for(int i=0;i<length;i++){
14             Field declaredField = declaredFields[i];
15             String fieldName = declaredField.getName();
16             //String methodName ="getUserName";
17             String methodName = "get"+fieldName.substring(0,1).toUpperCase()+
18                     fieldName.substring(1);
19             Method getUserName = aClass.getMethod(methodName);
20             Object invoke = getUserName.invoke(bean);
21             String value="";
22             if(invoke!=null){
23                 value=String.valueOf(invoke);
24             }
25             row[i]=value;
26         }
27         return row;
28     }

原文地址:https://www.cnblogs.com/dw3306/p/9522880.html

时间: 2024-08-28 16:08:23

java实现Excel数据导出的相关文章

java jxl excel 导入导出的 总结(建立超链接,以及目录sheet的索引)

最近项目要一个批量导出功能,而且要生成一个单独的sheet页,最后后面所有sheet的索引,并且可以点击进入连接.网上搜索了一下,找到一个方法,同时把相关的excel导入导出操作记录一下!以便以后使用! 简单先写一下目录的建立的主要代码,测试用的 List ls = new ArrayList();//报表名称列表  ls.add("BB_BB03");  ls.add("BB_BB05");  ls.add("BB_BB06"); try { 

java把excel数据批量导入到数据库

java把excel数据批量导入到数据库中,java导入excel数据代码如下 1.    public List<Choice> GetFromXls(String xlsname){ 2. 3.        List<Choice> choices = new ArrayList<Choice>(); 4.        Choice choice=null; 5.        try { 6.            java.io.File file=new

【基于WinForm+Access局域网共享数据库的项目总结】之篇二:WinForm开发扇形图统计和Excel数据导出

篇一:WinForm开发总体概述与技术实现 篇二:WinForm开发扇形图统计和Excel数据导出 篇三:Access远程连接数据库和窗体打包部署 [小记]:最近基于WinForm+Access数据库完成一个法律咨询管理系统.本系统要求类似网页后台管理效果,并且基于局域网内,完成多客户端操作同一数据库,根据权限不同分别执行不同功能模块.核心模块为级联统计类型管理.数据库咨询数据扇形统计.树的操作.咨询数据的管理.手写分页.Excel数据的导出.多用户操作服务器数据等.并支持多用户同时操作,远程连

java poi excel 导入导出数据

背景:1.pringmvc 框架下 的excel 导入导出   2.OI 操作office. 页面代码: <div class="modal fade bs-example-modal-lg" tabindex="-1" role="dialog" aria-labelledby="myLargeModalLabel" aria-hidden="true"> <div class=&quo

用java实现excel数据批量导入数据库

不管是做软件还是做网站,相信很多人在做的时候都要用到数据库,而数据库的数据从何而来呢,可以使手动添加的,但是大多数情况下我们使用的是已有的数据,我们想借助开发的工具管理目前已有的数据,如果是小量的数据,手动录入也无妨,但是对于大量数据呢,手动录入显然已经不显示,而且,更多的时候,我们呢想在软件上增加一个数据的批量导入,这样不管是谁在用这款软件,都可以方便的管理已有数据,那么我们最常用的数据管理器是什么呢,毫无疑问Excel,但是我们做软件是几乎没有人会使用Excel作为DB,所以我们遇到的问题就

java实现EXCEL数据导入到数据库中的格式问题的解决

之前作为项目甲方,加之java接触不多,在java web开发方面都是打下手的份. 对于EXCEL数据导入到数据库这个问题一直老是出现格式原因而导入失败也是未免惆怅,开发团队也是只说回去检查一下格式. 但是,每次导入的时候还会因为格式问题而惴惴不安,最近把代码拿来研究了一下,网上查了一下. 原来是从cell里取出数据后没有做格式匹配直接赋值导致的.因此,在取出数据写入数据库前做一下格式匹配就好了. SO FRUSTRATED BY THE PREVIOUS IGNORANCE! 1 //把EXC

Java将list数据导出到Excel——(八)

Java实体类 1 package bean; 2 3 public class Question { 4 5 private String timu; //题干 6 private String leixing; //类型 7 private String axuanxiang; //A选项 8 private String bxuanxiang; //B选项 9 private String cxuanxiang; //C选项 10 private String dxuanxiang; //

java实现excel表格导出数据

/** * 导出清单 eb中 firstRow(EntityBean) 列表第一行数据,键值对(不包含序号)例:("name","姓名") * data(EntityBean[]) 列表数据 * * @author zhaojq */ public PR exportData(EntityBean eb) { if (eb == null) { return new PR(0, "参数为空", null); } try { // 创建表格文件 S

Java代码将数据导出Excel表格(Maven版本)

第一步,添加依赖: <!--poi-excel--><dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.6</version></dependency> 引入ExcelUtil 工具类:   public class ExcelUtil { /** * 导出Excel * @pa