duhuizhe
2024-04-17 c389984b5d3e5523e1b22de1fc045dc415261330
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
package com.yqzx.common.util;
 
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
 
import java.io.IOException;
import java.io.InputStream;
import java.text.DecimalFormat;
 
/**
 * Author: Dreamer-1
 * Date: 2019-03-01
 * Time: 10:21
 * Description: 读取Excel内容
 */
public class ExcelReader {
 
 
 private static final String XLS = "xls";
 private static final String XLSX = "xlsx";
 
 /**
 * 根据文件后缀名类型获取对应的工作簿对象
 * @param inputStream 读取文件的输入流
 * @param fileType 文件后缀名类型(xls或xlsx)
 * @return 包含文件数据的工作簿对象
 * @throws IOException
 */
 public static Workbook getWorkbook(InputStream inputStream, String fileType) throws IOException {
 Workbook workbook = null;
 if (fileType.equalsIgnoreCase(XLS)) {
  workbook = new HSSFWorkbook(inputStream);
 } else if (fileType.equalsIgnoreCase(XLSX)) {
  workbook = new XSSFWorkbook(inputStream);
 }
 return workbook;
 }
 
// /**
// * 读取Excel文件内容
// * @param fileName 要读取的Excel文件所在路径
// * @return 读取结果列表,读取失败时返回null
// */
// public static List<ExcelDataVO> readExcel(String fileName) {
//
// Workbook workbook = null;
// FileInputStream inputStream = null;
//
// try {
//  // 获取Excel后缀名
//  String fileType = fileName.substring(fileName.lastIndexOf(".") + 1, fileName.length());
//  // 获取Excel文件
//  File excelFile = new File(fileName);
//  if (!excelFile.exists()) {
//  logger.warning("指定的Excel文件不存在!");
//  return null;
//  }
//
//  // 获取Excel工作簿
//  inputStream = new FileInputStream(excelFile);
//  workbook = getWorkbook(inputStream, fileType);
//
//  // 读取excel中的数据
//  List<ExcelDataVO> resultDataList = parseExcel(workbook);
//
//  return resultDataList;
// } catch (Exception e) {
//  logger.warning("解析Excel失败,文件名:" + fileName + " 错误信息:" + e.getMessage());
//  return null;
// } finally {
//  try {
//  if (null != workbook) {
//   workbook.close();
//  }
//  if (null != inputStream) {
//   inputStream.close();
//  }
//  } catch (Exception e) {
//  logger.warning("关闭数据流出错!错误信息:" + e.getMessage());
//  return null;
//  }
// }
// }
 
// /**
// * 解析Excel数据
// * @param workbook Excel工作簿对象
// * @return 解析结果
// */
// private static List<String> parseExcel(Workbook workbook) {
// List<String> resultDataList = new ArrayList<>();
// // 解析sheet
// for (int sheetNum = 0; sheetNum < workbook.getNumberOfSheets(); sheetNum++) {
//  Sheet sheet = workbook.getSheetAt(sheetNum);
//  // 校验sheet是否合法
//  if (sheet == null) {
//  continue;
//  }
//
//  // 获取第一行数据
//  int firstRowNum = sheet.getFirstRowNum();
//  Row firstRow = sheet.getRow(firstRowNum);
//  if (null == firstRow) {
//  logger.warning("解析Excel失败,在第一行没有读取到任何数据!");
//  }
//
//  // 解析每一行的数据,构造数据对象
//  int rowStart = firstRowNum + 1;
//  int rowEnd = sheet.getPhysicalNumberOfRows();
//  for (int rowNum = rowStart; rowNum < rowEnd; rowNum++) {
//  Row row = sheet.getRow(rowNum);
//
//  if (null == row) {
//   continue;
//  }
//
//  ExcelDataVO resultData = convertRowToData(row);
//  if (null == resultData) {
//   logger.warning("第 " + row.getRowNum() + "行数据不合法,已忽略!");
//   continue;
//  }
//  resultDataList.add(resultData);
//  }
// }
//
// return resultDataList;
// }
 
 /**
 * 将单元格内容转换为字符串
 * @param cell
 * @return
 */
 /*public static String convertCellValueToString(Cell cell) {
 if(cell==null){
  return null;
 }
 String returnValue = null;
 switch (cell.getCellType()) {
  case NUMERIC: //数字
  Double doubleValue = cell.getNumericCellValue();
 
  // 格式化科学计数法,取一位整数
  DecimalFormat df = new DecimalFormat("0");
  returnValue = df.format(doubleValue);
  break;
  case STRING: //字符串
  returnValue = cell.getStringCellValue();
  break;
  case BOOLEAN: //布尔
  Boolean booleanValue = cell.getBooleanCellValue();
  returnValue = booleanValue.toString();
  break;
  case BLANK: // 空值
  break;
  case FORMULA: // 公式
  returnValue = cell.getCellFormula();
  break;
  case ERROR: // 故障
  break;
  default:
  break;
 }
 return returnValue;
 }
*/
 
}