Skip to content

Commit cb7a5a8

Browse files
committed
test read excel
1 parent 477b010 commit cb7a5a8

File tree

4 files changed

+63
-16
lines changed

4 files changed

+63
-16
lines changed

pom.xml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
2323
<jfinal.version>4.8</jfinal.version>
2424
<freemarker.version>2.3.30</freemarker.version>
25+
<poi.version>4.1.2</poi.version>
2526
</properties>
2627

2728
<dependencies>
@@ -101,7 +102,7 @@
101102
<dependency>
102103
<groupId>org.apache.poi</groupId>
103104
<artifactId>poi</artifactId>
104-
<version>3.13</version>
105+
<version>${poi.version}</version>
105106
</dependency>
106107
<dependency>
107108
<groupId>junit</groupId>

src/main/java/cn/netbuffer/jfinal_bootstrap_table/controller/IndexController.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ public void export() {
103103
titles.add("phone");
104104
titles.add("sex");
105105
String file = projectPath + format.format(new Date()) + "." + ConfigConstant.EXCELSTR;
106-
POIExcelUtil.export(titles, mps, file);
106+
POIExcelUtil.write(titles, mps, file);
107107
renderFile(new File(file));
108108
}
109109

src/main/java/cn/netbuffer/jfinal_bootstrap_table/util/POIExcelUtil.java

Lines changed: 47 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,56 @@
11
package cn.netbuffer.jfinal_bootstrap_table.util;
22

3+
import lombok.extern.slf4j.Slf4j;
34
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
45
import org.apache.poi.ss.usermodel.*;
56

7+
import java.io.File;
8+
import java.io.FileInputStream;
69
import java.io.FileOutputStream;
710
import java.io.IOException;
8-
import java.util.Iterator;
9-
import java.util.List;
10-
import java.util.Map;
11-
import java.util.Set;
11+
import java.util.*;
1212

13+
@Slf4j
1314
public class POIExcelUtil {
1415

15-
public static void export(List<String> titles, List<Map<String, Object>> datas, String path) {
16+
public static List<List<String>> read(String path) {
17+
Workbook workbook = null;
18+
try {
19+
workbook = new HSSFWorkbook(new FileInputStream(new File(path)));
20+
} catch (IOException e) {
21+
log.error(e.getMessage());
22+
}
23+
if (workbook == null) {
24+
return null;
25+
}
26+
// for (int sheetNum = 0; sheetNum < workbook.getNumberOfSheets(); sheetNum++) {
27+
// }
28+
Sheet sheet = workbook.getSheetAt(0);
29+
int firstRowNum = sheet.getFirstRowNum();
30+
Row firstRow = sheet.getRow(firstRowNum);
31+
if (null == firstRow) {
32+
log.warn("解析Excel失败,在第一行没有读取到任何数据!");
33+
}
34+
// 解析每一行的数据,构造数据对象
35+
int rowStart = firstRowNum + 1;
36+
int rowEnd = sheet.getPhysicalNumberOfRows();
37+
List<List<String>> data = new ArrayList<>();
38+
for (int rowNum = rowStart; rowNum < rowEnd; rowNum++) {
39+
Row row = sheet.getRow(rowNum);
40+
if (null == row) {
41+
continue;
42+
}
43+
int cells = row.getPhysicalNumberOfCells();
44+
List<String> arr = new ArrayList<>(cells);
45+
for (int i = 0; i < cells; i++) {
46+
arr.add(row.getCell(i).getStringCellValue());
47+
}
48+
data.add(arr);
49+
}
50+
return data;
51+
}
52+
53+
public static void write(List<String> titles, List<Map<String, Object>> datas, String path) {
1654
Workbook wb = new HSSFWorkbook();
1755
Sheet sheet = wb.createSheet(titles.get(0));
1856
// 冻结该行,使其无法移动
@@ -30,17 +68,17 @@ public static void export(List<String> titles, List<Map<String, Object>> datas,
3068
titleFont.setBold(true);
3169
titleFont.setColor(IndexedColors.AQUA.getIndex());
3270
CellStyle cellStyle = wb.createCellStyle();
33-
cellStyle.setAlignment(CellStyle.ALIGN_CENTER);
34-
cellStyle.setVerticalAlignment(CellStyle.VERTICAL_CENTER);
71+
cellStyle.setAlignment(HorizontalAlignment.CENTER);
72+
cellStyle.setVerticalAlignment(VerticalAlignment.CENTER);
3573
cellStyle.setFont(titleFont);
3674
for (int i = 0; i < titleCount; i++) {
3775
Cell cell = row.createCell(i);
3876
cell.setCellValue(titles.get(i));
3977
cell.setCellStyle(cellStyle);
4078
}
4179
CellStyle contentStyle = wb.createCellStyle();
42-
cellStyle.setAlignment(CellStyle.ALIGN_CENTER);
43-
cellStyle.setVerticalAlignment(CellStyle.VERTICAL_CENTER);
80+
cellStyle.setAlignment(HorizontalAlignment.CENTER);
81+
cellStyle.setVerticalAlignment(VerticalAlignment.CENTER);
4482
int dataCount = datas.size();
4583
for (int i = 1; i < dataCount + 1; i++) {
4684
Row rowIndex = sheet.createRow((short) i);
Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package cn.netbuffer.jfinal_bootstrap_table.util;
22

3+
import lombok.extern.slf4j.Slf4j;
34
import org.junit.Test;
45

56
import java.io.File;
@@ -8,11 +9,18 @@
89
import java.util.List;
910
import java.util.Map;
1011

12+
@Slf4j
1113
public class TestPOI {
1214

15+
String path = System.getProperty("user.dir") + File.separator + "test.xlsx";
16+
17+
@Test
18+
public void testReadFile() {
19+
log.info("read {}:\n{}", path, POIExcelUtil.read(path));
20+
}
21+
1322
@Test
1423
public void testExportFile() {
15-
String dir = System.getProperty("user.dir");
1624
List<String> titles = new ArrayList<>();
1725
titles.add("昵称");
1826
titles.add("姓名");
@@ -21,12 +29,12 @@ public void testExportFile() {
2129
for (int i = 0; i < 4; i++) {
2230
//保障顺序
2331
Map<String, Object> mp = new LinkedHashMap<String, Object>();
24-
mp.put("n", "tt" + i);
25-
mp.put("x", "行ing" + i);
26-
mp.put("b", "" + i);
32+
mp.put("nick", "nick" + i);
33+
mp.put("name", "name" + i);
34+
mp.put("sex", "sex" + i);
2735
datas.add(mp);
2836
}
29-
POIExcelUtil.export(titles, datas, dir + File.separator + "test.xls");
37+
POIExcelUtil.write(titles, datas, path);
3038
}
3139

3240
}

0 commit comments

Comments
 (0)