Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit cb7a5a8

Browse files
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)

AltStyle によって変換されたページ (->オリジナル) /