Skip to content

Commit 15d0f37

Browse files
committed
优化csv文件拆分。
1 parent e3cfa9d commit 15d0f37

3 files changed

Lines changed: 13 additions & 8 deletions

File tree

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ private void initView() {
3838
}
3939

4040
private void initEvent() {
41-
selectFileTextField.setText("C:\\Users\\Administrator\\Desktop\\file.csv");
41+
selectFileTextField.setText("C:\\Users\\5FDSJ068\\Desktop\\test\\file.csv");
4242
FileChooserUtil.setOnDrag(selectFileTextField, FileChooserUtil.FileType.FILE);
4343
FileChooserUtil.setOnDrag(saveFilePathTextField, FileChooserUtil.FileType.FOLDER);
4444
}

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

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ public void splitExcel() throws Exception { //拆分Excel表格
6565
newFilePath = StringUtils.appendIfMissing(excelSplitToolController.getSaveFilePathTextField().getText(), "/", "/", "\\") + Paths.get(newFilePath).getFileName();
6666
}
6767
if (excelSplitToolController.getSplitType1RadioButton().isSelected()) {
68-
splitNumber = lastRowIndex / (excelSplitToolController.getSplitType1Spinner().getValue() - 1);
68+
splitNumber = (int) Math.ceil((double) lastRowIndex / excelSplitToolController.getSplitType1Spinner().getValue());
6969
saveSplitWorkbook(sheet, splitNumber, newFilePath);
7070
} else if (excelSplitToolController.getSplitType2RadioButton().isSelected()) {
7171
splitNumber = excelSplitToolController.getSplitType2Spinner().getValue();
@@ -93,7 +93,7 @@ public void splitCsv() throws Exception {
9393
int splitNumber = 0;
9494
if (excelSplitToolController.getSplitType1RadioButton().isSelected()) {
9595
List<CSVRecord> csvRecordList = parser.getRecords();
96-
splitNumber = csvRecordList.size() / (excelSplitToolController.getSplitType1Spinner().getValue() - 1);
96+
splitNumber = (int) Math.ceil((double) csvRecordList.size() / excelSplitToolController.getSplitType1Spinner().getValue());
9797
saveSplitCsv(csvRecordList.iterator(), splitNumber, newFilePath);
9898
} else if (excelSplitToolController.getSplitType2RadioButton().isSelected()) {
9999
splitNumber = excelSplitToolController.getSplitType2Spinner().getValue();
@@ -209,17 +209,19 @@ private void saveSplitCsv(Iterator<CSVRecord> iterator, int splitNumber, String
209209
CSVRecord firstRecord = null;
210210
while (iterator.hasNext()) {
211211
CSVRecord record = iterator.next();
212-
if (isAddHead && addRowIndex == 0 && saveFileIndex == 0) {
212+
if (isAddHead && firstRecord == null) {
213213
firstRecord = record;
214214
}
215215
if (printer == null) {
216216
printer = CSVFormat.DEFAULT.print(new PrintWriter(newFilePath + "-" + (saveFileIndex++) + ".csv"));
217-
if (isAddHead && saveFileIndex != 0) {
218-
printer.printRecord(IteratorUtils.toList(record.iterator()).toArray());
217+
if (isAddHead && saveFileIndex != 1) {
218+
printer.printRecord(IteratorUtils.toList(firstRecord.iterator()).toArray());
219+
addRowIndex++;
219220
}
220221
}
221222
printer.printRecord(IteratorUtils.toList(record.iterator()).toArray());
222-
if ((addRowIndex++ - splitNumber) == (isAddHead ? 1 : 0)) {
223+
addRowIndex++;
224+
if ((addRowIndex - splitNumber) == (isAddHead ? 1 : 0)) {
223225
printer.flush();
224226
printer.close();
225227
printer = null;
@@ -239,6 +241,9 @@ private void saveSplitCsv(Iterator<CSVRecord> iterator, String newFilePath, Stri
239241
CSVRecord record = iterator.next();
240242
if (firstRecord == null) {
241243
firstRecord = record;
244+
if (excelSplitToolController.getIncludeHandCheckBox().isSelected()) {
245+
continue;
246+
}
242247
}
243248
String rowString = "";
244249
for (String cellIndex : splitCellIndex) {

src/main/resources/com/xwintop/xJavaFxTool/fxmlView/littleTools/ExcelSplitTool.fxml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
<TextField fx:id="selectFileTextField" layoutX="99.0" layoutY="20.0" />
1818
<Button fx:id="selectFileButton" layoutX="256.0" layoutY="20.0" mnemonicParsing="false" onAction="#selectFileAction" text="选择" />
1919
<Label layoutX="31.0" layoutY="82.0" text="文件分隔方式:" />
20-
<CheckBox fx:id="includeHandCheckBox" layoutX="31.0" layoutY="107.0" mnemonicParsing="false" selected="true" text="Excel包含标题行" />
20+
<CheckBox fx:id="includeHandCheckBox" layoutX="31.0" layoutY="107.0" mnemonicParsing="false" selected="true" text="包含标题行" />
2121
<RadioButton fx:id="splitType1RadioButton" layoutX="33.0" layoutY="132.0" mnemonicParsing="false" selected="true" text="按平均分成">
2222
<toggleGroup>
2323
<ToggleGroup fx:id="splitTypeToggleGroup" />

0 commit comments

Comments
 (0)