java使用poi包将数据写入Excel表格

1、Excel相关操作代码

  1 import java.io.File;
  2 import java.io.FileInputStream;
  3 import java.io.FileNotFoundException;
  4 import java.io.FileOutputStream;
  5 import java.io.IOException;
  6 import java.lang.reflect.Field;
  7 import java.lang.reflect.Method;
  8 import java.util.ArrayList;
  9 import java.util.List;
 10
 11 import org.apache.poi.hssf.usermodel.HSSFRow;
 12 import org.apache.poi.hssf.usermodel.HSSFSheet;
 13 import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 14 import org.apache.poi.ss.usermodel.Cell;
 15 import org.apache.poi.ss.usermodel.Row;
 16 import org.springframework.stereotype.Component;
 17
 18 /**
 19  * @Description:
 20  * @author [email protected]
 21  * @date 创建时间:2016年12月8日下午2:38:47
 22  * @version 1.0
 23  */
 24 @Component
 25 public class ExcelManage {
 26 private HSSFWorkbook workbook = null;
 27
 28     /**
 29      * 判断文件是否存在
 30      * @param filePath  文件路径
 31      * @return
 32      */
 33     public boolean fileExist(String filePath){
 34          boolean flag = false;
 35          File file = new File(filePath);
 36          flag = file.exists();
 37          return flag;
 38     }
 39
 40     /**
 41      * 判断文件的sheet是否存在
 42      * @param filePath   文件路径
 43      * @param sheetName  表格索引名
 44      * @return
 45      */
 46     public boolean sheetExist(String filePath,String sheetName){
 47          boolean flag = false;
 48          File file = new File(filePath);
 49          if(file.exists()){    //文件存在
 50             //创建workbook
 51              try {
 52                 workbook = new HSSFWorkbook(new FileInputStream(file));
 53                 //添加Worksheet(不添加sheet时生成的xls文件打开时会报错)
 54                 HSSFSheet sheet = workbook.getSheet(sheetName);
 55                 if(sheet!=null)
 56                     flag = true;
 57             } catch (Exception e) {
 58                 e.printStackTrace();
 59             }
 60          }else{    //文件不存在
 61              flag = false;
 62          }
 63          return flag;
 64     }
 65  /**
 66      * 创建新Sheet并写入第一行数据
 67      * @param filePath  excel的路径
 68      * @param sheetName 要创建的表格索引
 69      * @param titleRow excel的第一行即表格头
 70      * @throws IOException
 71      * @throws FileNotFoundException
 72      */
 73     public void createSheet(String filePath,String sheetName,String titleRow[]) throws FileNotFoundException, IOException{
 74         FileOutputStream out = null;
 75         File excel = new File(filePath);  // 读取文件
 76         FileInputStream in = new FileInputStream(excel); // 转换为流
 77         workbook = new HSSFWorkbook(in); // 加载excel的 工作目录
 78
 79         workbook.createSheet(sheetName); // 添加一个新的sheet
 80         //添加表头
 81         Row row = workbook.getSheet(sheetName).createRow(0);    //创建第一行
 82         try {
 83             for(int i = 0;i < titleRow.length;i++){
 84                 Cell cell = row.createCell(i);
 85                 cell.setCellValue(titleRow[i]);
 86             }
 87             out = new FileOutputStream(filePath);
 88             workbook.write(out);
 89        }catch (Exception e) {
 90            e.printStackTrace();
 91        }finally {
 92            try {
 93                out.close();
 94            } catch (IOException e) {
 95                e.printStackTrace();
 96            }
 97        }
 98     }
 99 /**
100      * 创建新excel.
101      * @param filePath  excel的路径
102      * @param sheetName 要创建的表格索引
103      * @param titleRow excel的第一行即表格头
104      */
105     public void createExcel(String filePath,String sheetName,String titleRow[]){
106         //创建workbook
107         workbook = new HSSFWorkbook();
108         //添加Worksheet(不添加sheet时生成的xls文件打开时会报错)
109         workbook.createSheet(sheetName);
110         //新建文件
111         FileOutputStream out = null;
112         try {
113             //添加表头
114             Row row = workbook.getSheet(sheetName).createRow(0);    //创建第一行
115             for(int i = 0;i < titleRow.length;i++){
116                 Cell cell = row.createCell(i);
117                 cell.setCellValue(titleRow[i]);
118             }
119             out = new FileOutputStream(filePath);
120             workbook.write(out);
121         } catch (Exception e) {
122             e.printStackTrace();
123         } finally {
124             try {
125                 out.close();
126             } catch (IOException e) {
127                 e.printStackTrace();
128             }
129         }
130     }
131  /**
132      * 删除文件.
133      * @param filePath  文件路径
134      */
135     public boolean deleteExcel(String filePath){
136         boolean flag = false;
137         File file = new File(filePath);
138         // 判断目录或文件是否存在
139         if (!file.exists()) {
140             return flag;
141         } else {
142             // 判断是否为文件
143             if (file.isFile()) {  // 为文件时调用删除文件方法
144                 file.delete();
145                 flag = true;
146             }
147         }
148         return flag;
149     }
150   /**
151      * 往excel中写入.
152      * @param filePath    文件路径
153      * @param sheetName  表格索引
154      * @param object
155      */
156     public void writeToExcel(String filePath,String sheetName, Object object,String titleRow[]){
157         //创建workbook
158         File file = new File(filePath);
159         try {
160             workbook = new HSSFWorkbook(new FileInputStream(file));
161         } catch (FileNotFoundException e) {
162             e.printStackTrace();
163         } catch (IOException e) {
164             e.printStackTrace();
165         }
166         FileOutputStream out = null;
167         HSSFSheet sheet = workbook.getSheet(sheetName);
168         // 获取表格的总行数
169         int rowCount = sheet.getLastRowNum() + 1; // 需要加一
170         try {
171             Row row = sheet.createRow(rowCount);     //最新要添加的一行
172             //通过反射获得object的字段,对应表头插入
173             // 获取该对象的class对象
174             Class<? extends Object> class_ = object.getClass();
175
176             for(int i = 0;i < titleRow.length;i++){
177                 String title = titleRow[i];
178                 String UTitle = Character.toUpperCase(title.charAt(0))+ title.substring(1, title.length()); // 使其首字母大写;
179                 String methodName  = "get"+UTitle;
180                 Method method = class_.getDeclaredMethod(methodName); // 设置要执行的方法
181                 String data = method.invoke(object).toString(); // 执行该get方法,即要插入的数据
182                 Cell cell = row.createCell(i);
183                 cell.setCellValue(data);
184             }
185             out = new FileOutputStream(filePath);
186             workbook.write(out);
187         } catch (Exception e) {
188             e.printStackTrace();
189         } finally {
190             try {
191                 out.close();
192             } catch (IOException e) {
193                 e.printStackTrace();
194             }
195         }
196     }
197 }

2、main方法调用方式

 1 public static void main(String[] args) {
 2         String filePath = "result/数据汇总.xls";
 3         String sheetName = "测试";
 4         //Excel文件易车sheet页的第一行
 5         String title[] = {"日期", "城市","新发布车源数"};
 6         //Excel文件易车每一列对应的数据
 7         String titleDate[] = {"date", "city","newPublish"};
 8
 9         ExcelManage em = new ExcelManage();
10         //判断该名称的文件是否存在
11         boolean fileFlag = em.fileExist(filePath);
12         if(!fileFlag){
13             em.createExcel(filePath,sheetName,title);
14         }
15         //判断该名称的Sheet是否存在
16         boolean sheetFlag = em.sheetExist(filePath,sheetName);
17         //如果该名称的Sheet不存在,则新建一个新的Sheet
18           if(!sheetFlag){
19               try {
20                 em.createSheet(filePath,sheetName,title);
21             } catch (FileNotFoundException e) {
22                 e.printStackTrace();
23             } catch (IOException e) {
24                 e.printStackTrace();
25             }
26         }
27
28         YiCheData user = new YiCheData();
29         user.setDate("206-12-21");
30         user.setCity("北京");
31         user.setNewPublish("5");
32         //写入到excel
33         em.writeToExcel(filePath,sheetName,user,titleDate);
34     } 

3、用于测试的bean类

 1 public class YiCheData {
 2     private String date;
 3         private String city;
 4         private String newPublish;
 5
 6     public String getDate() {
 7         return date;
 8     }
 9     public void setDate(String date) {
10         this.date = date;
11     }
12     public String getCity() {
13         return city;
14     }
15     public void setCity(String city) {
16         this.city = city;
17     }
18     public String getNewPublish() {
19         return newPublish;
20     }
21 }

时间: 2024-10-09 22:25:23

java使用poi包将数据写入Excel表格的相关文章

《程序实现》从xml、txt文件里读取数据写入excel表格

直接上码 import java.io.BufferedReader; import java.io.DataInputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.FileReader; import java.io.FileWriter; impo

java使用POI解析2007以上的Excel表格

来自http://hao0610.iteye.com/blog/1160678 使用poi来解析Excel的xls和xlsx. 解析xls: Java代码   package xls; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.

Java 从数据库中查找信息导入Excel表格中

前端js function Excel (){ //ajax请求 $.ajax({ url : "outPutAboutShopInfo", type : "post", dataType : "json", data:{ "basicShop.shopId" : shopId, "basicShop.shopMemo" : stringType //不方便增加字段所以使用门店的一个"备注&quo

MySQL---数据库从入门走向大神系列(十一)-Java获取数据库/结果集的元信息、将数据表写入excel表格

数据库的元信息: 首先介绍一下数据库的元信息(元数据): 元数据(Metadata)是关于数据的数据. 元数据是描述数据仓库内数据的结构和建立方法的数据. 存储的数据是什么类型,什么驱动等等,这些描述数据的数据,就是元数据! 准备: package cn.hncu.pool3; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.lang.reflect.Proxy; i

java利用poi包 为excel生成超链接

转载自:http://www.blogjava.net/leekiang/archive/2008/10/21/235794.html 1,一个需求, 要求报表生成的Excel表格支持超链接.例如点击Excel内的公司名, 自动打开浏览器并连到该公司的网站上去.在Excel里面选中所需的单元格, 右键弹出属性, 选超链接就能输入相应的地址了,既然Excel支持超链接.那就没有什么借口说不能实现了.:). 翻了翻POI的文档, 很容易就找到了解决方案.在POI中让单元格实现超链接功能, 可以用Hy

使用poi导出大量数据到excel遇到的问题

最近在工作遇到利用poi导出大量数据到excel并提供下载的运用场景,并遇到了一个问题,当数据量过大时(几十万),后台在进行数据写入excel中的过程会非常耗时,导致迟迟没有响应前台,结果数据还没导完,前台页面就已经崩掉了. 解决思路:接收到前台导出excel请求之后,开一个线程,在线程里进行数据的写入和将写入完成的excel保存到服务器中等耗时操作,前台定时发送ajax请求检测是否已经导出完成,如果完成则提供一个下载链接到前台供用户下载. 想到解决思路之后,自己写了一个小demo,顺便学习下利

java导出数据库里的数据至Excel进行数据备份

调用部分: package com.otdrmsys.action; import com.otdrmsys.util.ResultSetToExcel; public class ExcelExport { public static void main(String[] args) { // String fileName = "otdr";//文件名,不带路径,不带.xls后缀 // String [] coloumItems = {"otdr编号",&quo

Java的poi技术读取和导入Excel

报表输出是Java应用开发中经常涉及的内容,而一般的报表往往缺乏通用性,不方便用户进行个性化编辑.Java程序由于其跨平台特性,不能直接操纵Excel.因此,本文探讨一下POI视线Java程序进行Excel的读取和导入. AD:WOT2014:用户标签系统与用户数据化运营培训专场 项目结构: 用到的Excel文件: XlsMain .java 类 //该类有main方法,主要负责运行程序,同时该类中也包含了用poi读取Excel(2003版) import java.io.FileInputSt

spring boot 使用POI导出数据到Excel表格

摘自:https://www.cnblogs.com/hopeofthevillage/p/12099807.html spring boot 使用POI导出数据到Excel表格 2019-12-26 00:17  全me村的希望  阅读(42)  评论(0)  编辑收藏 在spring boot 的项目经常碰到将数据导出到Excel表格的需求,而POI技术则对于java操作Excel表格提供了API,POI中对于多种类型的文档都提供了操作的接口,但是其对于Excel表格的操作无疑是最强大的.