Skip to content

Commit e8999b3

Browse files
committed
完善文件合并工具。
1 parent 2bc4164 commit e8999b3

8 files changed

Lines changed: 180 additions & 226 deletions

File tree

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,7 @@ Mac OS X x64 [xJavaFxTool-0.1.6-macosx-x64.pkg](https://dev.tencent.com/s/c5ffd1
123123

124124
40、ZookeeperTool:Zookeeper工具(方便对zookeeper的一系列操作,包括新增、修改、删除(包括子文件)、重命名、复制、添加变更通知);
125125

126-
41、ExcelSplitTool:Excel拆分工具(对xls、xlsx、csv及文件进行拆分操作);
126+
41、ExcelSplitTool:Excel拆分工具(支持对xls、xlsx、csv及文件进行拆分操作);
127127

128128
42、PathWatchTool:文件夹监控工具;
129129

@@ -133,7 +133,7 @@ Mac OS X x64 [xJavaFxTool-0.1.6-macosx-x64.pkg](https://dev.tencent.com/s/c5ffd1
133133

134134
45、ScanPortTool:端口扫描工具;
135135

136-
46、FileMergeTool:文件合并工具;
136+
46、FileMergeTool:文件合并工具(支持对xls、xlsx、csv及文件进行合并操作)
137137

138138
传输工具目前支持功能如下:
139139

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
<groupId>com.xwintop</groupId>
66
<artifactId>xJavaFxTool</artifactId>
7-
<version>0.1.6-SNAPSHOT</version>
7+
<version>0.1.7</version>
88
<packaging>jar</packaging>
99
<name>xJavaFxTool</name>
1010
<description>基于JavaFx搭建的实用小工具集合</description>

src/main/java/com/xwintop/xJavaFxTool/controller/littleTools/FileMergeToolController.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,14 @@ private void selectFileAction(ActionEvent event) {
7373
}
7474
}
7575

76+
@FXML
77+
private void selectFolderAction(ActionEvent event) {
78+
File file = FileChooserUtil.chooseDirectory();
79+
if (file != null) {
80+
selectFileTextField.setText(file.getPath());
81+
}
82+
}
83+
7684
@FXML
7785
private void saveFilePathAction(ActionEvent event) {
7886
File file = FileChooserUtil.chooseDirectory();

src/main/java/com/xwintop/xJavaFxTool/services/littleTools/ExcelSplitToolService.java

Lines changed: 44 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -56,50 +56,53 @@ public void splitAction() throws Exception { //拆分表格
5656
public void splitExcel() throws Exception { //拆分Excel表格
5757
String filePath = excelSplitToolController.getSelectFileTextField().getText();
5858
FileInputStream fileInputStream = new FileInputStream(filePath);
59-
60-
Workbook workbook = null;
61-
if (filePath.endsWith(".xls")) {
62-
POIFSFileSystem fileSystem = new POIFSFileSystem(fileInputStream);
63-
workbook = new HSSFWorkbook(fileSystem);
64-
} else if (filePath.endsWith(".xlsx")) {
65-
workbook = new XSSFWorkbook(fileInputStream);
66-
} else {
67-
throw new RuntimeException("错误提示: 您设置的Excel文件名不合法!");
68-
}
69-
String sheetSelectString = excelSplitToolController.getSheetSelectTextField().getText();
70-
Sheet[] sheets = null;
71-
if (StringUtils.isEmpty(sheetSelectString)) {
72-
sheets = new Sheet[]{workbook.getSheetAt(0)};
73-
} else {
74-
String[] sheetSelectStrings = sheetSelectString.split(",");
75-
sheets = new Sheet[sheetSelectStrings.length];
76-
for (int i = 0; i < sheetSelectStrings.length; i++) {
77-
sheets[i] = workbook.getSheetAt(Integer.valueOf(sheetSelectStrings[i]));
78-
}
79-
}
80-
String newFilePath = StringUtils.appendIfMissing(filePath, "", ".xls", ".xlsx");
81-
if (StringUtils.isNotEmpty(excelSplitToolController.getSaveFilePathTextField().getText())) {
82-
newFilePath = StringUtils.appendIfMissing(excelSplitToolController.getSaveFilePathTextField().getText(), "/", "/", "\\") + Paths.get(newFilePath).getFileName();
83-
}
84-
if (excelSplitToolController.getSplitType1RadioButton().isSelected()) {
85-
int allRowNumber = 0;
86-
for (Sheet sheet : sheets) {
87-
allRowNumber += sheet.getLastRowNum();// 行数
59+
try {
60+
Workbook workbook = null;
61+
if (filePath.endsWith(".xls")) {
62+
POIFSFileSystem fileSystem = new POIFSFileSystem(fileInputStream);
63+
workbook = new HSSFWorkbook(fileSystem);
64+
} else if (filePath.endsWith(".xlsx")) {
65+
workbook = new XSSFWorkbook(fileInputStream);
66+
} else {
67+
throw new RuntimeException("错误提示: 您设置的Excel文件名不合法!");
8868
}
89-
int splitNumber = (int) Math.ceil((double) allRowNumber / excelSplitToolController.getSplitType1Spinner().getValue());
90-
saveSplitWorkbook(sheets, splitNumber, newFilePath);
91-
} else if (excelSplitToolController.getSplitType2RadioButton().isSelected()) {
92-
int splitNumber = excelSplitToolController.getSplitType2Spinner().getValue();
93-
saveSplitWorkbook(sheets, splitNumber, newFilePath);
94-
} else if (excelSplitToolController.getSplitType3RadioButton().isSelected()) {
95-
String splitType3String = excelSplitToolController.getSplitType3TextField().getText();
96-
String[] splitCellIndex = null;
97-
if (StringUtils.isEmpty(splitType3String)) {
98-
splitCellIndex = new String[]{"0"};
69+
String sheetSelectString = excelSplitToolController.getSheetSelectTextField().getText();
70+
Sheet[] sheets = null;
71+
if (StringUtils.isEmpty(sheetSelectString)) {
72+
sheets = new Sheet[]{workbook.getSheetAt(0)};
9973
} else {
100-
splitCellIndex = splitType3String.split(",");
74+
String[] sheetSelectStrings = sheetSelectString.split(",");
75+
sheets = new Sheet[sheetSelectStrings.length];
76+
for (int i = 0; i < sheetSelectStrings.length; i++) {
77+
sheets[i] = workbook.getSheetAt(Integer.valueOf(sheetSelectStrings[i]));
78+
}
10179
}
102-
saveSplitWorkbook(sheets, newFilePath, splitCellIndex);
80+
String newFilePath = StringUtils.appendIfMissing(filePath, "", ".xls", ".xlsx");
81+
if (StringUtils.isNotEmpty(excelSplitToolController.getSaveFilePathTextField().getText())) {
82+
newFilePath = StringUtils.appendIfMissing(excelSplitToolController.getSaveFilePathTextField().getText(), "/", "/", "\\") + Paths.get(newFilePath).getFileName();
83+
}
84+
if (excelSplitToolController.getSplitType1RadioButton().isSelected()) {
85+
int allRowNumber = 0;
86+
for (Sheet sheet : sheets) {
87+
allRowNumber += sheet.getLastRowNum();// 行数
88+
}
89+
int splitNumber = (int) Math.ceil((double) allRowNumber / excelSplitToolController.getSplitType1Spinner().getValue());
90+
saveSplitWorkbook(sheets, splitNumber, newFilePath);
91+
} else if (excelSplitToolController.getSplitType2RadioButton().isSelected()) {
92+
int splitNumber = excelSplitToolController.getSplitType2Spinner().getValue();
93+
saveSplitWorkbook(sheets, splitNumber, newFilePath);
94+
} else if (excelSplitToolController.getSplitType3RadioButton().isSelected()) {
95+
String splitType3String = excelSplitToolController.getSplitType3TextField().getText();
96+
String[] splitCellIndex = null;
97+
if (StringUtils.isEmpty(splitType3String)) {
98+
splitCellIndex = new String[]{"0"};
99+
} else {
100+
splitCellIndex = splitType3String.split(",");
101+
}
102+
saveSplitWorkbook(sheets, newFilePath, splitCellIndex);
103+
}
104+
} finally {
105+
fileInputStream.close();
103106
}
104107
}
105108

0 commit comments

Comments
 (0)