Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit ce1c1d3

Browse files
committed
write large excel file using xml StAX api
1 parent 786a850 commit ce1c1d3

File tree

10 files changed

+624
-24
lines changed

10 files changed

+624
-24
lines changed

common/src/main/java/com/robin/comm/util/xls/ExcelBaseOper.java

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -333,6 +333,14 @@ private static short getAlignment(int align) {
333333
return (short) align;
334334
}
335335

336+
private static Cell createCell(Row row, int column, CellStyle cellStyle, CreationHelper helper, String objvalue) {
337+
Cell cell = row.createCell(column);
338+
339+
cell.setCellValue(objvalue);
340+
cell.setCellStyle(cellStyle);
341+
return cell;
342+
}
343+
336344
public static Cell createCell(Row row1,int j, String value, String colType, CellStyle cellStyle, CreationHelper helper) {
337345
Cell cell;
338346
if (colType.equals(Const.META_TYPE_STRING)) {
@@ -363,14 +371,6 @@ public static Cell createCell(Row row1,int j, String value, String colType, Cell
363371
return cell;
364372
}
365373

366-
private static Cell createCell(Row row, int column, CellStyle cellStyle, CreationHelper helper, String objvalue) {
367-
Cell cell = row.createCell(column);
368-
369-
cell.setCellValue(objvalue);
370-
cell.setCellStyle(cellStyle);
371-
return cell;
372-
}
373-
374374
private static Cell createCell(Row row, int column, CellStyle cellStyle, CreationHelper helper, double value) {
375375
Cell cell = row.createCell(column);
376376

@@ -402,7 +402,7 @@ private static Cell createCell(Row row, int column, CellStyle cellStyle, Creatio
402402

403403
private static Cell createCellDate(Row row, int column, CellStyle cellStyle, CreationHelper helper, String value) {
404404
Cell cell = row.createCell(column);
405-
cellStyle.setDataFormat(helper.createDataFormat().getFormat("yyyy-MM-dd hh:mm:ss"));
405+
//cellStyle.setDataFormat(helper.createDataFormat().getFormat("yyyy-MM-dd hh:mm:ss"));
406406

407407
cell.setCellValue(new Date(Long.parseLong(value)));
408408
cell.setCellStyle(cellStyle);

common/src/main/java/com/robin/comm/util/xls/ExcelCellStyleUtil.java

Lines changed: 32 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -39,19 +39,20 @@ public static CellStyle getNoBorderCellType(Workbook wb, String metaType) {
3939
cs.setFillForegroundColor(IndexedColors.WHITE.getIndex());
4040
cs.setFillPattern(FillPatternType.SOLID_FOREGROUND);
4141
cs.setWrapText(true);
42-
extractMeta(metaType, cs);
42+
extractMeta(wb,metaType, cs);
4343
return cs;
4444
}
4545

46-
private static void extractMeta(String metaType, CellStyle cs) {
46+
private static void extractMeta(Workbook wb,String metaType, CellStyle cs) {
4747
switch (metaType) {
4848
case Const.META_TYPE_NUMERIC:
4949
case Const.META_TYPE_DOUBLE:
5050
case Const.META_TYPE_FLOAT:
5151
cs.setDataFormat(HSSFDataFormat.getBuiltinFormat("0.00"));
5252
break;
5353
case Const.META_TYPE_DATE:
54-
cs.setDataFormat(HSSFDataFormat.getBuiltinFormat("yyyy-MM-dd hh:mm:ss"));
54+
case Const.META_TYPE_TIMESTAMP:
55+
cs.setDataFormat(wb.getCreationHelper().createDataFormat().getFormat("yyyy-MM-dd hh:mm:ss"));
5556
break;
5657
case Const.META_TYPE_INTEGER:
5758
cs.setDataFormat(HSSFDataFormat.getBuiltinFormat("0"));
@@ -76,10 +77,36 @@ public static CellStyle getBorderCellType(Workbook wb, String metaType) {
7677
Font font = wb.createFont();
7778
font.setFontName(ExcelBaseOper.defaultFontName);
7879
cs.setFont(font);
79-
extractMeta(metaType, cs);
80+
extractMeta(wb,metaType, cs);
8081
return cs;
8182

8283
}
84+
public static CellStyle getCellStyle(Workbook wb,String metaType,Map<String, CellStyle> cellMap){
85+
if(cellMap.containsKey(metaType)){
86+
return cellMap.get(metaType);
87+
}else{
88+
CellStyle cs = wb.createCellStyle();
89+
cs.setVerticalAlignment(VerticalAlignment.CENTER);
90+
cs.setAlignment(HorizontalAlignment.CENTER);
91+
cs.setBorderBottom(BorderStyle.THIN);
92+
cs.setBottomBorderColor(IndexedColors.BLACK.getIndex());
93+
cs.setBorderLeft(BorderStyle.THIN);
94+
cs.setLeftBorderColor(IndexedColors.BLACK.getIndex());
95+
cs.setBorderRight(BorderStyle.THIN);
96+
cs.setRightBorderColor(IndexedColors.BLACK.getIndex());
97+
cs.setBorderTop(BorderStyle.THIN);
98+
cs.setTopBorderColor(IndexedColors.BLACK.getIndex());
99+
cs.setFillForegroundColor(IndexedColors.WHITE.getIndex());
100+
Font font = wb.createFont();
101+
font.setFontName(ExcelBaseOper.defaultFontName);
102+
cs.setFont(font);
103+
cs.setFillPattern(FillPatternType.SOLID_FOREGROUND);
104+
cs.setWrapText(true);
105+
extractMeta(wb,metaType,cs);
106+
cellMap.put(metaType,cs);
107+
return cs;
108+
}
109+
}
83110

84111
public static CellStyle getCellStyle(Workbook wb, int rowspan, int colspan, String metaType, TableConfigProp header, Map<String, CellStyle> cellMap) {
85112
CellStyle cs = null;
@@ -114,7 +141,7 @@ public static CellStyle getCellStyle(Workbook wb, int rowspan, int colspan, Stri
114141
cs.setFont(font);
115142
cs.setFillPattern(FillPatternType.SOLID_FOREGROUND);
116143
cs.setWrapText(true);
117-
extractMeta(metaType,cs);
144+
extractMeta(wb,metaType,cs);
118145
cellMap.put("C_" + rowspan + "_" + colspan + "_" + metaType, cs);
119146
}
120147
return cs;

common/src/main/java/com/robin/core/fileaccess/writer/JsonFileWriter.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717

1818
import com.google.gson.stream.JsonWriter;
1919
import com.robin.core.base.util.Const;
20+
import com.robin.core.fileaccess.fs.AbstractFileSystemAccessor;
2021
import com.robin.core.fileaccess.meta.DataCollectionMeta;
2122

2223
import javax.naming.OperationNotSupportedException;
@@ -32,6 +33,10 @@ public JsonFileWriter(DataCollectionMeta colmeta) {
3233
super(colmeta);
3334
this.identifier= Const.FILEFORMATSTR.JSON.getValue();
3435
}
36+
public JsonFileWriter(DataCollectionMeta colmeta, AbstractFileSystemAccessor accessor) {
37+
super(colmeta,accessor);
38+
this.identifier= Const.FILEFORMATSTR.JSON.getValue();
39+
}
3540

3641
@Override
3742
public void beginWrite() throws IOException{

common/src/main/java/com/robin/core/fileaccess/writer/PlainTextFileWriter.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import java.util.Map;
2222

2323
import com.robin.core.base.util.Const;
24+
import com.robin.core.fileaccess.fs.AbstractFileSystemAccessor;
2425
import org.apache.commons.lang3.StringUtils;
2526

2627
import com.robin.core.fileaccess.meta.DataCollectionMeta;
@@ -37,6 +38,10 @@ public PlainTextFileWriter(DataCollectionMeta colmeta) {
3738
super(colmeta);
3839
this.identifier= Const.FILEFORMATSTR.CSV.getValue();
3940
}
41+
public PlainTextFileWriter(DataCollectionMeta colmeta, AbstractFileSystemAccessor accessor) {
42+
super(colmeta,accessor);
43+
this.identifier= Const.FILEFORMATSTR.CSV.getValue();
44+
}
4045

4146
@Override
4247
public void beginWrite() throws IOException {

common/src/main/java/com/robin/core/fileaccess/writer/TextBasedFileWriter.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
package com.robin.core.fileaccess.writer;
1717

1818
import com.robin.core.base.util.StringUtils;
19+
import com.robin.core.fileaccess.fs.AbstractFileSystemAccessor;
1920
import com.robin.core.fileaccess.meta.DataCollectionMeta;
2021

2122
import java.io.BufferedWriter;
@@ -31,6 +32,9 @@ public TextBasedFileWriter(){
3132
protected TextBasedFileWriter(DataCollectionMeta colmeta) {
3233
super(colmeta);
3334
}
35+
protected TextBasedFileWriter(DataCollectionMeta colmeta, AbstractFileSystemAccessor accessor) {
36+
super(colmeta,accessor);
37+
}
3438
@Override
3539
public void setOutputStream(OutputStream out) {
3640
super.setOutputStream(out);

common/src/main/java/com/robin/core/fileaccess/writer/TextFileWriterFactory.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ public static IResourceWriter getWriterByType(DataCollectionMeta colmeta, Buffer
4242
}
4343
return fileWriter;
4444
}
45+
4546
public static IResourceWriter getWriterByType(DataCollectionMeta colmeta, BufferedWriter writer,AbstractFileSystemAccessor accessor) throws IOException {
4647
IResourceWriter fileWriter = getWriterByType(colmeta,accessor);
4748
if(!ObjectUtils.isEmpty(fileWriter) && writer!=null) {
@@ -96,7 +97,7 @@ public static IResourceWriter getWriterByType(DataCollectionMeta colmeta, Abstra
9697

9798
Class<? extends IResourceWriter> writerClass=fileWriterMap.get(fileSuffix);
9899
if (!ObjectUtils.isEmpty(writerClass)) {
99-
fileWriter = writerClass.getConstructor(DataCollectionMeta.class).newInstance(colmeta);
100+
fileWriter = writerClass.getDeclaredConstructor(DataCollectionMeta.class, AbstractFileSystemAccessor.class).newInstance(colmeta,accessor);
100101
fileWriter.setAccessUtil(accessor);
101102
logger.info("using resource writer {}",writerClass.getCanonicalName());
102103
}

0 commit comments

Comments
 (0)