java 用 jxl poi 进行excel 解析 >>>>>>>>>>> 最爱那水货

  1     /**
  2      * 解析excel文件 ,并把数据放入数组中  格式 xlsx xls
  3      * @param path 从ftp上下载到本地的文件的路径
  4      * @return 数据数组集合
  5      */
  6     public List<String[]> readExcelPublic(String path){
  7         List<String[]> list = new ArrayList<String[]>();
  8             log.info("开始解析"+path.substring(path.lastIndexOf("\\")+1)+"文件");
  9
 10             try {
 11                 FileInputStream is = new FileInputStream(path); //文件流
 12                 Workbook workbook = WorkbookFactory.create(is); //这种方式 Excel 2003/2007/2010 都是可以处理的
 13                 Sheet sheet = workbook.getSheetAt(0);//得到excel第一页的内容
 14                 for (int i = 0; i < sheet.getPhysicalNumberOfRows(); i++) {
 15                     //循环行数
 16                     Row row = sheet.getRow(i);
 17                     //获取当前行的列长度
 18                     int cols_length = row.getPhysicalNumberOfCells();
 19                     //设置当前数组长度 5
 20                     String[] str = new String[cols_length];
 21                     for (int j = 0; j < row.getPhysicalNumberOfCells(); j++) {
 22                         Cell cell = row.getCell(j);
 23                         str[j] = this.getValue(cell);
 24                     }
 25                     list.add(str);
 26                 }
 27                 log.info("文件"+path.substring(path.lastIndexOf("\\")+1)+"解析完毕!");
 28             } catch (FileNotFoundException e) {
 29                 log.error("!!!!!!! 未找到文件!文件为: 【"+path+"】");
 30                 e.printStackTrace();
 31             } catch (InvalidFormatException e) {
 32                 log.error("!!!!!!! 解析文件出错!文件为: 【"+path+"】");
 33                 e.printStackTrace();
 34             } catch (IOException e) {
 35                 log.error("!!!!!!! 解析文件出错!文件为: 【"+path+"】");
 36                 e.printStackTrace();
 37             }
 38         return list;
 39     }
 40
 41
 42     /**
 43      * 解析excel 文件<br>
 44      *   格式为:xls
 45      * @param path 文件的路径
 46      * @return List<String[]>
 47      */
 48     public List<String[]> xlsReadExcel(String path){
 49         List<String[]> list = new ArrayList<String[]>();
 50             log.info("开始解析"+path.substring(path.lastIndexOf("\\")+1)+"文件");
 51             try {
 52                 FileInputStream is = new FileInputStream(path); //文件流
 53                 HSSFWorkbook workbook = new HSSFWorkbook(is);
 54                 HSSFSheet  sheet = workbook.getSheetAt(0);//得到excel第一页的内容
 55                 for (int i = 0; i < sheet.getLastRowNum(); i++) {
 56                     //循环行数
 57                     HSSFRow  row = sheet.getRow(i);
 58                     //获取当前行的列长度
 59                     int cols_length = row.getLastCellNum();
 60                     //设置当前数组长度 5
 61                     String[] str = new String[cols_length];
 62                     for (int j = 0; j < row.getLastCellNum(); j++) {
 63                         HSSFCell  cell = row.getCell(j);
 64                         str[j] = this.getValue(cell);
 65                     }
 66                     list.add(str);
 67                     log.info("文件"+path.substring(path.lastIndexOf("\\")+1)+"解析完毕!");
 68                 }
 69             } catch (FileNotFoundException e) {
 70                 log.error("!!!!!!! 未找到文件!文件为: 【"+path+"】");
 71                 e.printStackTrace();
 72             } catch (IOException e) {
 73                 log.error("!!!!!!! 解析文件出错!文件为: 【"+path+"】");
 74                 e.printStackTrace();
 75             }
 76         return list;
 77     }
 78
 79
 80
 81
 82     /**
 83      * 解析excel 文件<br>
 84      *   格式为:xlsx
 85      * @param path 文件的路径
 86      * @return List<String[]>
 87      */
 88     public List<String[]> xlsxAnalysisExcexl(String path){
 89         List<String[]> list = new ArrayList<String[]>();
 90             log.info("开始解析"+path.substring(path.lastIndexOf("\\")+1)+"文件");
 91             try {
 92                 FileInputStream is = new FileInputStream(path); //文件流
 93                 XSSFWorkbook workbook = new XSSFWorkbook( is);
 94                 XSSFSheet  sheet = workbook.getSheetAt(0);//得到excel第一页的内容
 95                 for (int i = 0; i < sheet.getLastRowNum(); i++) {
 96                     //循环行数
 97                     XSSFRow  row = sheet.getRow(i);
 98                     //获取当前行的列长度
 99                     int cols_length = row.getLastCellNum();
100                     //设置当前数组长度 5
101                     String[] str = new String[cols_length];
102                     for (int j = 0; j < row.getLastCellNum(); j++) {
103                         XSSFCell  cell = row.getCell(j);
104                         str[j] = this.getValue(cell);
105                     }
106                     list.add(str);
107                     log.info("文件"+path.substring(path.lastIndexOf("\\")+1)+"解析完毕!");
108                 }
109             } catch (FileNotFoundException e) {
110                 log.error("!!!!!!! 未找到文件!文件为: 【"+path+"】");
111                 e.printStackTrace();
112             } catch (IOException e) {
113                 log.error("!!!!!!! 解析文件出错!文件为: 【"+path+"】");
114                 e.printStackTrace();
115             }
116         return list;
117     }
118
119
120
121     /**
122      * JXL 解析excel 【只适用于 xls格式 的文件解析】 <br>
123      * JXL 不支持 xlsx 文件的解析
124      * @param path 文件的路径
125      * @return
126      */
127     public List<String[]> jxlReadExcel(String path){
128         List<String[]> list = new ArrayList<String[]>();
129         try {
130             InputStream is = new FileInputStream(path);
131             jxl.Workbook rwb = jxl.Workbook.getWorkbook(is);
132             jxl.Sheet sheet = rwb.getSheet(0);
133             for (int i = 0; i < sheet.getRows(); i++) {
134                 jxl.Cell[] cell = sheet.getRow(i);
135                 String[] strs = new String[cell.length];
136                 for (int j = 0; j < cell.length; j++) {
137                     strs[j] = cell[j].getContents();
138                 }
139                 list.add(strs);
140             }
141         } catch (FileNotFoundException e) {
142             e.printStackTrace();
143         } catch (BiffException e) {
144             e.printStackTrace();
145         } catch (IndexOutOfBoundsException e) {
146             e.printStackTrace();
147         } catch (IOException e) {
148             e.printStackTrace();
149         }
150         return list;
151     }
152
153
154
155
156     /**
157      * 根据不同的cell格式数据 来转换为string的数据
158      * @param cell 单元格内容
159      * @return
160      */
161     private String getValue(Cell cell) {
162          int cellType = cell.getCellType();
163          String cellValue = null;
164          switch(cellType) {
165              case Cell.CELL_TYPE_STRING: //文本
166                  cellValue = cell.getStringCellValue();
167                  break;
168              case Cell.CELL_TYPE_NUMERIC: //数字、日期
169                  if(DateUtil.isCellDateFormatted(cell)) {
170                      cellValue = new SimpleDateFormat("yyyyMMdd").format(cell.getDateCellValue()); //日期型
171                  }
172                  else {
173                      String num = String.valueOf(cell.getNumericCellValue()); //数字
174                      if(num.contains("E")){
175                          cellValue = num.substring(0,num.indexOf("E")).replaceAll("\\.", "");
176                      }else if(num.endsWith(".0")){
177                          cellValue = num.split("\\.")[0];
178                      }else{
179                          cellValue = num;
180                      }
181                  }
182                  break;
183              case Cell.CELL_TYPE_BOOLEAN: //布尔型
184                  cellValue = String.valueOf(cell.getBooleanCellValue());
185                  break;
186              case Cell.CELL_TYPE_BLANK: //空白
187                  cellValue = cell.getStringCellValue();
188                  break;
189              case Cell.CELL_TYPE_ERROR: //错误
190                  cellValue = "";
191                  break;
192              case Cell.CELL_TYPE_FORMULA: //公式
193                  cellValue = "";
194                  break;
195              default:
196                  cellValue = "";
197
198         }
199          return cellValue;
200     }
201
202
203     /**
204      * 转换类型 <br>
205      * 支持xls 格式的excel文件
206      * @param hssfCell
207      * @return
208      */
209     @SuppressWarnings("static-access")
210     private String getValue(HSSFCell hssfCell){
211         if(hssfCell.getCellType() == hssfCell.CELL_TYPE_BOOLEAN){
212           return String.valueOf( hssfCell.getBooleanCellValue());
213         }else if(hssfCell.getCellType() == hssfCell.CELL_TYPE_NUMERIC){
214             String num = String.valueOf( hssfCell.getNumericCellValue());
215             if(num.contains("E")){//科学计数法  去掉. 和E及E后面的
216                 return num.substring(0,num.indexOf("E")).replaceAll("\\.", "");
217             }else if(num.endsWith(".0")){// 自动转成 .0的,去掉.0
218                     return num.split("\\.")[0];
219             }else{
220                 return num;
221             }
222         }else{
223           return String.valueOf( hssfCell.getStringCellValue());
224         }
225     }
226
227
228     /**
229      * 转换类型 <br>
230      * 支持 xlsx 格式的excel文件
231      * @param xssfCell
232      * @return
233      */
234     @SuppressWarnings("static-access")
235       private String getValue(XSSFCell xssfCell){
236         if(xssfCell.getCellType() == xssfCell.CELL_TYPE_BOOLEAN){
237           return String.valueOf( xssfCell.getBooleanCellValue());
238         }else if(xssfCell.getCellType() == xssfCell.CELL_TYPE_NUMERIC){
239           String num = String.valueOf( xssfCell.getNumericCellValue());
240           if(num.contains("E")){//科学计数法  去掉. 和E及E后面的
241                 return num.substring(0,num.indexOf("E")).replaceAll("\\.", "");
242           }else if(num.endsWith(".0")){// 自动转成 .0的,去掉.0
243                   return num.split("\\.")[0];
244           }else{
245               return num;
246           }
247         }else{
248           return String.valueOf( xssfCell.getStringCellValue());
249         }
250       }
251     
时间: 2024-08-05 16:48:07

java 用 jxl poi 进行excel 解析 >>>>>>>>>>> 最爱那水货的相关文章

java 使用jxl poi 操作excel

java操作excel  创建.修改 xls 文件 JAVA操作Excel文件 Java生成和操作Excel文件 java导出Excel通用方法 Java 实现导出excel表 POI Java POI导出excel经典实现

Excel导出学习之道:Java Web利用POI导出Excel简单例子

采用Spring mvc架构: Controller层代码如下 [java] view plaincopy @Controller public class StudentExportController{ @Autowired private StudentExportService studentExportService; @RequestMapping(value = "/excel/export") public void exportExcel(HttpServletReq

Java中用Apache POI生成excel和word文档

概述: 最近在做项目的过程中遇到了excel的数据导出和word的图文表报告的导出功能,最后决定用Apache POI来完成该项功能.本文就项目实现过程中的一些思路与代码与大家共享,同时,也作为自己的一个总结,以备后用. 功能: 1.从数据库查询数据导出为excel: 2.导出word的包括,内容有文字,图片,表格等. 效果: 导出excel 导出word 实现代码: 1.导出excel package beans.excel; import java.io.FileOutputStream;

java中使用poi导出excel表格数据并且可以手动修改导出路径

在我们开发项目中,很多时候会提出这样的需求:将前端的某某数据以excel表格导出,今天就给大家写一个简单的模板. 这里我们选择使用poi导出excel: 第一步:导入需要的jar包到 lib 文件夹下 jar包下载路径:http://download.csdn.net/download/pumpkin09/7077011 第二步:添加poi导出工具类 1 package com.yjd.admin.util; 2 3 import java.io.IOException; 4 import ja

JAVA利用JXL导出/生成 EXCEL

/** * 导出导出采暖市场部收入.成本.利润明细表 * @author JIA-G-Y */ public String exporExcel(String str) { String path = str + "收入.成本.利润明细表.xls"; try { List<WholesaleAgreementMaterialExportExcelTemplate> list = agreementDao.selectAllWholeDetails(); // 打开文件 Wr

java 通过Apache poi导出excel代码demo实例

package com.zuidaima.excel.util; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.

java编程之POI读取excel表格的内容

07版本的excel需要另外加一个jar包.xbean.jar的jar包 读取代码模板.利用模板介绍读取excel的一些poi的api这是重点 1 /** 2 * 读取excel文件 3 * @Title: readExcel 4 * @Description: TODO(这里用一句话描述这个方法的作用) 5 * @author 尚晓飞 6 * @date 2014-11-10 上午8:58:01 7 * @param readPath 读取电脑硬盘上某个excel的绝对路径 例如:C://20

java使用Apache POI操作excel文件

官方介绍 HSSF is the POI Project's pure Java implementation of the Excel '97(-2007) file format. XSSF is the POI Project's pure Java implementation of the Excel 2007 OOXML (.xlsx) file format. 从官方文档中了解到:POI提供的HSSF包用于操作 Excel '97(-2007)的.xls文件,而XSSF包则用于操作

Java使用jxl修改现有Excel文件内容,并验证其是否对公式的结果产生影响

jxl的maven坐标: <!-- https://mvnrepository.com/artifact/net.sourceforge.jexcelapi/jxl --> <dependency> <groupId>net.sourceforge.jexcelapi</groupId> <artifactId>jxl</artifactId> <version>2.6.12</version> </de