Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
不停的脚步
easyexcel
提交
76fbb782
E
easyexcel
项目概览
不停的脚步
/
easyexcel
与 Fork 源项目一致
从无法访问的项目Fork
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
E
easyexcel
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
76fbb782
编写于
8月 02, 2019
作者:
Z
zhuangjiaju
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
优化读写逻辑
上级
a9b2f480
变更
33
隐藏空白更改
内联
并排
Showing
33 changed file
with
648 addition
and
44 deletion
+648
-44
src/main/java/com/alibaba/excel/ExcelWriter.java
src/main/java/com/alibaba/excel/ExcelWriter.java
+4
-3
src/main/java/com/alibaba/excel/annotation/write/style/ColumnWidth.java
...com/alibaba/excel/annotation/write/style/ColumnWidth.java
+2
-4
src/main/java/com/alibaba/excel/context/AnalysisContextImpl.java
...n/java/com/alibaba/excel/context/AnalysisContextImpl.java
+6
-2
src/main/java/com/alibaba/excel/metadata/TableStyle.java
src/main/java/com/alibaba/excel/metadata/TableStyle.java
+2
-2
src/main/java/com/alibaba/excel/read/metadata/holder/ReadWorkbookHolder.java
...libaba/excel/read/metadata/holder/ReadWorkbookHolder.java
+16
-0
src/main/java/com/alibaba/excel/support/ExcelTypeEnum.java
src/main/java/com/alibaba/excel/support/ExcelTypeEnum.java
+1
-1
src/main/java/com/alibaba/excel/util/StyleUtil.java
src/main/java/com/alibaba/excel/util/StyleUtil.java
+2
-0
src/main/java/com/alibaba/excel/write/ExcelBuilderImpl.java
src/main/java/com/alibaba/excel/write/ExcelBuilderImpl.java
+2
-2
src/main/java/com/alibaba/excel/write/builder/ExcelWriterBuilder.java
...a/com/alibaba/excel/write/builder/ExcelWriterBuilder.java
+3
-2
src/main/java/com/alibaba/excel/write/handler/DefaultWriteHandlerLoader.java
...libaba/excel/write/handler/DefaultWriteHandlerLoader.java
+2
-2
src/main/java/com/alibaba/excel/write/metadata/WriteSheet.java
...ain/java/com/alibaba/excel/write/metadata/WriteSheet.java
+2
-2
src/main/java/com/alibaba/excel/write/metadata/WriteTable.java
...ain/java/com/alibaba/excel/write/metadata/WriteTable.java
+3
-3
src/main/java/com/alibaba/excel/write/metadata/holder/AbstractWriteHolder.java
...baba/excel/write/metadata/holder/AbstractWriteHolder.java
+10
-9
src/main/java/com/alibaba/excel/write/property/ExcelWriteHeadProperty.java
.../alibaba/excel/write/property/ExcelWriteHeadProperty.java
+3
-0
src/main/java/com/alibaba/excel/write/style/AbstractVerticalCellStyleStrategy.java
.../excel/write/style/AbstractVerticalCellStyleStrategy.java
+1
-1
src/main/java/com/alibaba/excel/write/style/HorizontalCellStyleStrategy.java
...libaba/excel/write/style/HorizontalCellStyleStrategy.java
+3
-3
src/main/java/com/alibaba/excel/write/style/column/AbstractHeadColumnWidthStyleStrategy.java
...te/style/column/AbstractHeadColumnWidthStyleStrategy.java
+3
-4
src/main/java/com/alibaba/excel/write/style/column/SimpleColumnWidthStyleStrategy.java
...el/write/style/column/SimpleColumnWidthStyleStrategy.java
+1
-3
src/test/java/com/alibaba/easyexcel/test/core/annotation/AnnotationData.java
...libaba/easyexcel/test/core/annotation/AnnotationData.java
+1
-1
src/test/java/com/alibaba/easyexcel/test/core/compatibility/AnnotationDataListener.java
...excel/test/core/compatibility/AnnotationDataListener.java
+42
-0
src/test/java/com/alibaba/easyexcel/test/core/compatibility/CompatibilityData.java
.../easyexcel/test/core/compatibility/CompatibilityData.java
+17
-0
src/test/java/com/alibaba/easyexcel/test/core/compatibility/CompatibilityDataTest.java
...yexcel/test/core/compatibility/CompatibilityDataTest.java
+133
-0
src/test/java/com/alibaba/easyexcel/test/core/repetition/RepetitionData.java
...libaba/easyexcel/test/core/repetition/RepetitionData.java
+14
-0
src/test/java/com/alibaba/easyexcel/test/core/repetition/RepetitionDataListener.java
...asyexcel/test/core/repetition/RepetitionDataListener.java
+34
-0
src/test/java/com/alibaba/easyexcel/test/core/repetition/RepetitionDataTest.java
...ba/easyexcel/test/core/repetition/RepetitionDataTest.java
+88
-0
src/test/java/com/alibaba/easyexcel/test/core/style/StyleData.java
...java/com/alibaba/easyexcel/test/core/style/StyleData.java
+16
-0
src/test/java/com/alibaba/easyexcel/test/core/style/StyleDataListener.java
.../alibaba/easyexcel/test/core/style/StyleDataListener.java
+34
-0
src/test/java/com/alibaba/easyexcel/test/core/style/StyleDataTest.java
.../com/alibaba/easyexcel/test/core/style/StyleDataTest.java
+84
-0
src/test/java/com/alibaba/easyexcel/test/core/template/TemplateData.java
...om/alibaba/easyexcel/test/core/template/TemplateData.java
+16
-0
src/test/java/com/alibaba/easyexcel/test/core/template/TemplateDataListener.java
...ba/easyexcel/test/core/template/TemplateDataListener.java
+34
-0
src/test/java/com/alibaba/easyexcel/test/core/template/TemplateDataTest.java
...libaba/easyexcel/test/core/template/TemplateDataTest.java
+69
-0
src/test/resources/template/template03.xls
src/test/resources/template/template03.xls
+0
-0
src/test/resources/template/template07.xlsx
src/test/resources/template/template07.xlsx
+0
-0
未找到文件。
src/main/java/com/alibaba/excel/ExcelWriter.java
浏览文件 @
76fbb782
...
...
@@ -21,12 +21,12 @@ import com.alibaba.excel.write.metadata.WriteWorkbook;
/**
* Excel Writer This tool is used to write value out to Excel via POI. This object can perform the following two
* functions.
*
*
* <pre>
* 1. Create a new empty Excel workbook, write the value to the stream after the value is filled.
* 2. Edit existing Excel, write the original Excel file, or write it to other places.}
* </pre>
*
*
* @author jipengfei
*/
public
class
ExcelWriter
{
...
...
@@ -34,7 +34,7 @@ public class ExcelWriter {
/**
* Create new writer
*
*
* @param writeWorkbook
*/
public
ExcelWriter
(
WriteWorkbook
writeWorkbook
)
{
...
...
@@ -197,6 +197,7 @@ public class ExcelWriter {
writeSheet
.
setClazz
(
sheet
.
getClazz
());
writeSheet
.
setHead
(
sheet
.
getHead
());
writeSheet
.
setTableStyle
(
sheet
.
getTableStyle
());
writeSheet
.
setRelativeHeadRowIndex
(
sheet
.
getHeadLineMun
());
writeSheet
.
setColumnWidthMap
(
sheet
.
getColumnWidthMap
());
}
...
...
src/main/java/com/alibaba/excel/annotation/write/style/ColumnWidth.java
浏览文件 @
76fbb782
...
...
@@ -8,7 +8,7 @@ import java.lang.annotation.Target;
/**
* Set the width of the table
*
*
* @author zhuangjiaju
*/
@Target
({
ElementType
.
FIELD
,
ElementType
.
TYPE
})
...
...
@@ -16,9 +16,7 @@ import java.lang.annotation.Target;
@Inherited
public
@interface
ColumnWidth
{
/**
* Using the Calibri font as an example, the maximum digit width of 11 point font size is 7 pixels (at 96 dpi). If
* you set a column width to be 8 characters wide, e.g. <code>8*256</code>
*
* Column width
* <p>
* -1 mean the auto set width
*/
...
...
src/main/java/com/alibaba/excel/context/AnalysisContextImpl.java
浏览文件 @
76fbb782
...
...
@@ -55,11 +55,15 @@ public class AnalysisContextImpl implements AnalysisContext {
@Override
public
void
currentSheet
(
ExcelExecutor
excelExecutor
,
ReadSheet
readSheet
)
{
if
(
readSheet
==
null
)
{
throw
new
IllegalArgumentException
(
"Sheet argument cannot be null"
);
throw
new
IllegalArgumentException
(
"Sheet argument cannot be null
.
"
);
}
readSheetHolder
=
new
ReadSheetHolder
(
readSheet
,
readWorkbookHolder
);
currentReadHolder
=
readSheetHolder
;
selectSheet
(
excelExecutor
);
if
(
readWorkbookHolder
.
getHasReadSheet
().
contains
(
readSheetHolder
.
getSheetNo
()))
{
throw
new
ExcelAnalysisException
(
"Cannot read sheet repeatedly."
);
}
readWorkbookHolder
.
getHasReadSheet
().
add
(
readSheetHolder
.
getSheetNo
());
if
(
LOGGER
.
isDebugEnabled
())
{
LOGGER
.
debug
(
"Began to read:{}"
,
readSheetHolder
);
}
...
...
@@ -135,7 +139,7 @@ public class AnalysisContextImpl implements AnalysisContext {
@Override
public
ReadHolder
currentReadHolder
()
{
return
readSheet
Holder
;
return
currentRead
Holder
;
}
@Override
...
...
src/main/java/com/alibaba/excel/metadata/TableStyle.java
浏览文件 @
76fbb782
...
...
@@ -2,11 +2,11 @@ package com.alibaba.excel.metadata;
import
org.apache.poi.ss.usermodel.IndexedColors
;
import
com.alibaba.excel.write.style.
Row
CellStyleStrategy
;
import
com.alibaba.excel.write.style.
Horizontal
CellStyleStrategy
;
/**
* @author jipengfei
* @deprecated please use {@link
Row
CellStyleStrategy}
* @deprecated please use {@link
Horizontal
CellStyleStrategy}
*/
@Deprecated
public
class
TableStyle
{
...
...
src/main/java/com/alibaba/excel/read/metadata/holder/ReadWorkbookHolder.java
浏览文件 @
76fbb782
...
...
@@ -2,6 +2,8 @@ package com.alibaba.excel.read.metadata.holder;
import
java.io.File
;
import
java.io.InputStream
;
import
java.util.HashSet
;
import
java.util.Set
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
...
...
@@ -76,6 +78,11 @@ public class ReadWorkbookHolder extends AbstractReadHolder {
@Deprecated
private
Boolean
convertAllFiled
;
/**
* Prevent repeating sheet
*/
private
Set
<
Integer
>
hasReadSheet
;
public
ReadWorkbookHolder
(
ReadWorkbook
readWorkbook
)
{
super
(
readWorkbook
,
null
,
readWorkbook
.
getConvertAllFiled
());
this
.
readWorkbook
=
readWorkbook
;
...
...
@@ -107,6 +114,7 @@ public class ReadWorkbookHolder extends AbstractReadHolder {
if
(
readCache
!=
null
&&
ExcelTypeEnum
.
XLS
==
excelType
)
{
LOGGER
.
warn
(
"Xls not support 'readCache'!"
);
}
this
.
hasReadSheet
=
new
HashSet
<
Integer
>();
}
public
ReadWorkbook
getReadWorkbook
()
{
...
...
@@ -189,6 +197,14 @@ public class ReadWorkbookHolder extends AbstractReadHolder {
this
.
convertAllFiled
=
convertAllFiled
;
}
public
Set
<
Integer
>
getHasReadSheet
()
{
return
hasReadSheet
;
}
public
void
setHasReadSheet
(
Set
<
Integer
>
hasReadSheet
)
{
this
.
hasReadSheet
=
hasReadSheet
;
}
@Override
public
HolderEnum
holderType
()
{
return
HolderEnum
.
WORKBOOK
;
...
...
src/main/java/com/alibaba/excel/support/ExcelTypeEnum.java
浏览文件 @
76fbb782
...
...
@@ -29,7 +29,7 @@ public enum ExcelTypeEnum {
public
static
ExcelTypeEnum
valueOf
(
File
file
,
InputStream
inputStream
)
{
try
{
FileMagic
fileMagic
=
null
;
FileMagic
fileMagic
;
if
(
file
!=
null
)
{
fileMagic
=
FileMagic
.
valueOf
(
file
);
if
(!
FileMagic
.
OLE2
.
equals
(
fileMagic
)
&&
!
FileMagic
.
OOXML
.
equals
(
fileMagic
))
{
...
...
src/main/java/com/alibaba/excel/util/StyleUtil.java
浏览文件 @
76fbb782
...
...
@@ -29,8 +29,10 @@ public class StyleUtil {
newCellStyle
.
setLocked
(
true
);
newCellStyle
.
setFillPattern
(
FillPatternType
.
SOLID_FOREGROUND
);
newCellStyle
.
setFillForegroundColor
(
IndexedColors
.
GREY_25_PERCENT
.
getIndex
());
newCellStyle
.
setBorderTop
(
BorderStyle
.
THIN
);
newCellStyle
.
setBorderBottom
(
BorderStyle
.
THIN
);
newCellStyle
.
setBorderLeft
(
BorderStyle
.
THIN
);
newCellStyle
.
setBorderRight
(
BorderStyle
.
THIN
);
return
newCellStyle
;
}
...
...
src/main/java/com/alibaba/excel/write/ExcelBuilderImpl.java
浏览文件 @
76fbb782
...
...
@@ -68,9 +68,9 @@ public class ExcelBuilderImpl implements ExcelBuilder {
lastRowNum
--;
}
if
(!
data
.
isEmpty
())
{
context
.
writeSheetHolder
()
.
setWriteLastRowType
(
WriteLastRowType
.
HAVE_DATA
);
writeSheetHolder
.
setWriteLastRowType
(
WriteLastRowType
.
HAVE_DATA
);
}
if
(
context
.
currentWriteHolder
().
isNew
())
{
if
(
writeSheetHolder
.
isNew
()
&&
!
writeSheetHolder
.
getExcelWriteHeadProperty
().
hasHead
())
{
lastRowNum
+=
context
.
currentWriteHolder
().
relativeHeadRowIndex
();
}
for
(
int
relativeRowIndex
=
0
;
relativeRowIndex
<
data
.
size
();
relativeRowIndex
++)
{
...
...
src/main/java/com/alibaba/excel/write/builder/ExcelWriterBuilder.java
浏览文件 @
76fbb782
...
...
@@ -193,14 +193,15 @@ public class ExcelWriterBuilder {
}
public
ExcelWriterSheetBuilder
sheet
(
Integer
sheetNo
,
String
sheetName
)
{
ExcelWriterSheetBuilder
excelWriterSheetBuilder
=
new
ExcelWriterSheetBuilder
(
build
());
ExcelWriter
excelWriter
=
build
();
ExcelWriterSheetBuilder
excelWriterSheetBuilder
=
new
ExcelWriterSheetBuilder
(
excelWriter
);
if
(
sheetNo
!=
null
)
{
excelWriterSheetBuilder
.
sheetNo
(
sheetNo
);
}
if
(
sheetName
!=
null
)
{
excelWriterSheetBuilder
.
sheetName
(
sheetName
);
}
return
new
ExcelWriterSheetBuilder
(
build
()
);
return
new
ExcelWriterSheetBuilder
(
excelWriter
);
}
}
src/main/java/com/alibaba/excel/write/handler/DefaultWriteHandlerLoader.java
浏览文件 @
76fbb782
...
...
@@ -7,7 +7,7 @@ import org.apache.poi.ss.usermodel.IndexedColors;
import
com.alibaba.excel.write.metadata.style.WriteCellStyle
;
import
com.alibaba.excel.write.metadata.style.WriteFont
;
import
com.alibaba.excel.write.style.
Row
CellStyleStrategy
;
import
com.alibaba.excel.write.style.
Horizontal
CellStyleStrategy
;
/**
* Load default handler
...
...
@@ -30,7 +30,7 @@ public class DefaultWriteHandlerLoader {
headWriteFont
.
setFontHeightInPoints
((
short
)
14
);
headWriteFont
.
setBold
(
true
);
headWriteCellStyle
.
setWriteFont
(
headWriteFont
);
handlerList
.
add
(
new
Row
CellStyleStrategy
(
headWriteCellStyle
,
new
ArrayList
<
WriteCellStyle
>()));
handlerList
.
add
(
new
Horizontal
CellStyleStrategy
(
headWriteCellStyle
,
new
ArrayList
<
WriteCellStyle
>()));
return
handlerList
;
}
...
...
src/main/java/com/alibaba/excel/write/metadata/WriteSheet.java
浏览文件 @
76fbb782
...
...
@@ -4,7 +4,7 @@ import java.util.HashMap;
import
java.util.Map
;
import
com.alibaba.excel.metadata.TableStyle
;
import
com.alibaba.excel.write.style.
Row
CellStyleStrategy
;
import
com.alibaba.excel.write.style.
Horizontal
CellStyleStrategy
;
import
com.alibaba.excel.write.style.column.SimpleColumnWidthStyleStrategy
;
/**
...
...
@@ -30,7 +30,7 @@ public class WriteSheet extends WriteBasicParameter {
private
Map
<
Integer
,
Integer
>
columnWidthMap
=
new
HashMap
<
Integer
,
Integer
>();
/**
*
* @deprecated please use{@link
Row
CellStyleStrategy}
* @deprecated please use{@link
Horizontal
CellStyleStrategy}
*/
@Deprecated
private
TableStyle
tableStyle
;
...
...
src/main/java/com/alibaba/excel/write/metadata/WriteTable.java
浏览文件 @
76fbb782
package
com.alibaba.excel.write.metadata
;
import
com.alibaba.excel.metadata.TableStyle
;
import
com.alibaba.excel.write.style.
Row
CellStyleStrategy
;
import
com.alibaba.excel.write.style.
Horizontal
CellStyleStrategy
;
/**
* table
*
*
* @author jipengfei
*/
public
class
WriteTable
extends
WriteBasicParameter
{
...
...
@@ -15,7 +15,7 @@ public class WriteTable extends WriteBasicParameter {
private
Integer
tableNo
;
/**
*
* @deprecated please use{@link
Row
CellStyleStrategy}
* @deprecated please use{@link
Horizontal
CellStyleStrategy}
*/
@Deprecated
private
TableStyle
tableStyle
;
...
...
src/main/java/com/alibaba/excel/write/metadata/holder/AbstractWriteHolder.java
浏览文件 @
76fbb782
...
...
@@ -8,6 +8,7 @@ import java.util.Map;
import
java.util.Set
;
import
java.util.TreeMap
;
import
org.apache.poi.ss.usermodel.FillPatternType
;
import
org.apache.poi.ss.usermodel.IndexedColors
;
import
com.alibaba.excel.converters.Converter
;
...
...
@@ -34,7 +35,7 @@ import com.alibaba.excel.write.metadata.WriteTable;
import
com.alibaba.excel.write.metadata.style.WriteCellStyle
;
import
com.alibaba.excel.write.metadata.style.WriteFont
;
import
com.alibaba.excel.write.property.ExcelWriteHeadProperty
;
import
com.alibaba.excel.write.style.
Row
CellStyleStrategy
;
import
com.alibaba.excel.write.style.
Horizontal
CellStyleStrategy
;
import
com.alibaba.excel.write.style.column.AbstractHeadColumnWidthStyleStrategy
;
import
com.alibaba.excel.write.style.row.SimpleRowHeightStyleStrategy
;
...
...
@@ -102,12 +103,8 @@ public abstract class AbstractWriteHolder extends AbstractHolder implements Writ
compatibleOldCode
(
writeBasicParameter
);
// Set writeHandlerMap
List
<
WriteHandler
>
handlerList
;
if
(
parentAbstractWriteHolder
==
null
)
{
handlerList
=
DefaultWriteHandlerLoader
.
loadDefaultHandler
();
}
else
{
handlerList
=
new
ArrayList
<
WriteHandler
>();
}
List
<
WriteHandler
>
handlerList
=
new
ArrayList
<
WriteHandler
>();
// Initialization Annotation
initAnnotationConfig
(
handlerList
);
...
...
@@ -119,7 +116,10 @@ public abstract class AbstractWriteHolder extends AbstractHolder implements Writ
Map
<
Class
<?
extends
WriteHandler
>,
List
<
WriteHandler
>>
parentWriteHandlerMap
=
null
;
if
(
parentAbstractWriteHolder
!=
null
)
{
parentWriteHandlerMap
=
parentAbstractWriteHolder
.
getWriteHandlerMap
();
}
else
{
handlerList
.
addAll
(
DefaultWriteHandlerLoader
.
loadDefaultHandler
());
}
this
.
writeHandlerMap
=
sortAndClearUpHandler
(
handlerList
,
parentWriteHandlerMap
);
// Set converterMap
...
...
@@ -166,7 +166,7 @@ public abstract class AbstractWriteHolder extends AbstractHolder implements Writ
writeBasicParameter
.
setCustomWriteHandlerList
(
new
ArrayList
<
WriteHandler
>());
}
writeBasicParameter
.
getCustomWriteHandlerList
()
.
add
(
new
Row
CellStyleStrategy
(
.
add
(
new
Horizontal
CellStyleStrategy
(
buildWriteCellStyle
(
tableStyle
.
getTableHeadFont
(),
tableStyle
.
getTableHeadBackGroundColor
()),
buildWriteCellStyle
(
tableStyle
.
getTableContentFont
(),
tableStyle
.
getTableContentBackGroundColor
())));
}
...
...
@@ -175,6 +175,7 @@ public abstract class AbstractWriteHolder extends AbstractHolder implements Writ
private
WriteCellStyle
buildWriteCellStyle
(
Font
font
,
IndexedColors
indexedColors
)
{
WriteCellStyle
writeCellStyle
=
new
WriteCellStyle
();
if
(
indexedColors
!=
null
)
{
writeCellStyle
.
setFillPatternType
(
FillPatternType
.
SOLID_FOREGROUND
);
writeCellStyle
.
setFillForegroundColor
(
indexedColors
.
getIndex
());
}
if
(
font
!=
null
)
{
...
...
@@ -199,7 +200,7 @@ public abstract class AbstractWriteHolder extends AbstractHolder implements Writ
@Override
protected
Integer
columnWidth
(
Head
head
)
{
if
(
columnWidthMap
.
containsKey
(
head
.
getColumnIndex
()))
{
columnWidthMap
.
get
(
head
.
getColumnIndex
())
;
return
columnWidthMap
.
get
(
head
.
getColumnIndex
())
/
256
;
}
return
20
;
}
...
...
src/main/java/com/alibaba/excel/write/property/ExcelWriteHeadProperty.java
浏览文件 @
76fbb782
...
...
@@ -109,6 +109,9 @@ public class ExcelWriteHeadProperty extends ExcelHeadProperty {
endY
=
k
;
alreadyRangeSet
.
addAll
(
tempAlreadyRangeSet
);
}
if
(
j
==
endY
&&
i
==
endX
)
{
continue
;
}
cellRangeList
.
add
(
new
CellRange
(
j
,
endY
,
i
,
endX
));
}
}
...
...
src/main/java/com/alibaba/excel/write/style/Abstract
Column
CellStyleStrategy.java
→
src/main/java/com/alibaba/excel/write/style/Abstract
Vertical
CellStyleStrategy.java
浏览文件 @
76fbb782
...
...
@@ -17,7 +17,7 @@ import com.alibaba.excel.write.metadata.style.WriteCellStyle;
*
* @author zhuangjiaju
*/
public
abstract
class
Abstract
Column
CellStyleStrategy
extends
AbstractCellStyleStrategy
{
public
abstract
class
Abstract
Vertical
CellStyleStrategy
extends
AbstractCellStyleStrategy
{
private
Workbook
workbook
;
private
Map
<
Integer
,
CellStyle
>
headCellStyleCache
=
new
HashMap
<
Integer
,
CellStyle
>();
...
...
src/main/java/com/alibaba/excel/write/style/
Row
CellStyleStrategy.java
→
src/main/java/com/alibaba/excel/write/style/
Horizontal
CellStyleStrategy.java
浏览文件 @
76fbb782
...
...
@@ -17,7 +17,7 @@ import com.alibaba.excel.write.metadata.style.WriteCellStyle;
*
* @author zhuangjiaju
*/
public
class
Row
CellStyleStrategy
extends
AbstractCellStyleStrategy
{
public
class
Horizontal
CellStyleStrategy
extends
AbstractCellStyleStrategy
{
private
WriteCellStyle
headWriteCellStyle
;
private
List
<
WriteCellStyle
>
contentWriteCellStyleList
;
...
...
@@ -25,12 +25,12 @@ public class RowCellStyleStrategy extends AbstractCellStyleStrategy {
private
CellStyle
headCellStyle
;
private
List
<
CellStyle
>
contentCellStyleList
;
public
Row
CellStyleStrategy
(
WriteCellStyle
headWriteCellStyle
,
List
<
WriteCellStyle
>
contentWriteCellStyleList
)
{
public
Horizontal
CellStyleStrategy
(
WriteCellStyle
headWriteCellStyle
,
List
<
WriteCellStyle
>
contentWriteCellStyleList
)
{
this
.
headWriteCellStyle
=
headWriteCellStyle
;
this
.
contentWriteCellStyleList
=
contentWriteCellStyleList
;
}
public
Row
CellStyleStrategy
(
WriteCellStyle
headWriteCellStyle
,
WriteCellStyle
contentWriteCellStyle
)
{
public
Horizontal
CellStyleStrategy
(
WriteCellStyle
headWriteCellStyle
,
WriteCellStyle
contentWriteCellStyle
)
{
this
.
headWriteCellStyle
=
headWriteCellStyle
;
contentWriteCellStyleList
=
new
ArrayList
<
WriteCellStyle
>();
contentWriteCellStyleList
.
add
(
contentWriteCellStyle
);
...
...
src/main/java/com/alibaba/excel/write/style/column/AbstractHeadColumnWidthStyleStrategy.java
浏览文件 @
76fbb782
...
...
@@ -18,7 +18,8 @@ public abstract class AbstractHeadColumnWidthStyleStrategy extends AbstractColum
}
Integer
width
=
columnWidth
(
head
);
if
(
width
!=
null
)
{
sheet
.
setColumnWidth
(
cell
.
getColumnIndex
(),
columnWidth
(
head
));
width
=
width
*
256
;
sheet
.
setColumnWidth
(
cell
.
getColumnIndex
(),
width
);
}
}
...
...
@@ -29,9 +30,7 @@ public abstract class AbstractHeadColumnWidthStyleStrategy extends AbstractColum
*
* @param head
* Nullable
* @return the width in units of 1/256th of a character width . Using the Calibri font as an example, the maximum
* digit width of 11 point font size is 7 pixels (at 96 dpi). If you set a column width to be eight
* characters wide, e.g. you need return 8*256
* @return
*/
protected
abstract
Integer
columnWidth
(
Head
head
);
}
src/main/java/com/alibaba/excel/write/style/column/SimpleColumnWidthStyleStrategy.java
浏览文件 @
76fbb782
...
...
@@ -11,11 +11,9 @@ public class SimpleColumnWidthStyleStrategy extends AbstractHeadColumnWidthStyle
private
Integer
columnWidth
;
/**
* Using the Calibri font as an example, the maximum digit width of 11 point font size is 7 pixels (at 96 dpi). * If
* you set a column width to be eight characters wide, e.g. <code>SimpleColumnWidthStyleStrategy( 8*256)</code>,
*
* @param columnWidth
*
the width in units of 1/256th of a character width
*
*/
public
SimpleColumnWidthStyleStrategy
(
Integer
columnWidth
)
{
this
.
columnWidth
=
columnWidth
;
...
...
src/test/java/com/alibaba/easyexcel/test/core/annotation/AnnotationData.java
浏览文件 @
76fbb782
...
...
@@ -17,7 +17,7 @@ import lombok.Data;
* @author zhuangjiaju
*/
@Data
@ColumnWidth
(
30
*
256
)
@ColumnWidth
(
30
)
@HeadRowHeight
(
15
)
@ContentRowHeight
(
20
)
public
class
AnnotationData
{
...
...
src/test/java/com/alibaba/easyexcel/test/core/compatibility/AnnotationDataListener.java
0 → 100644
浏览文件 @
76fbb782
package
com.alibaba.easyexcel.test.core.compatibility
;
import
java.text.ParseException
;
import
java.util.ArrayList
;
import
java.util.List
;
import
org.junit.Assert
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
com.alibaba.easyexcel.test.core.annotation.AnnotationData
;
import
com.alibaba.excel.context.AnalysisContext
;
import
com.alibaba.excel.event.AnalysisEventListener
;
import
com.alibaba.excel.exception.ExcelCommonException
;
import
com.alibaba.excel.util.DateUtils
;
import
com.alibaba.fastjson.JSON
;
/**
* @author zhuangjiaju
*/
public
class
AnnotationDataListener
extends
AnalysisEventListener
<
AnnotationData
>
{
private
static
final
Logger
LOGGER
=
LoggerFactory
.
getLogger
(
AnnotationDataListener
.
class
);
List
<
AnnotationData
>
list
=
new
ArrayList
<
AnnotationData
>();
@Override
public
void
invoke
(
AnnotationData
data
,
AnalysisContext
context
)
{
list
.
add
(
data
);
}
@Override
public
void
doAfterAllAnalysed
(
AnalysisContext
context
)
{
Assert
.
assertEquals
(
list
.
size
(),
1
);
AnnotationData
data
=
list
.
get
(
0
);
try
{
Assert
.
assertEquals
(
data
.
getDate
(),
DateUtils
.
parseDate
(
"2020-01-01 01:01:01"
));
}
catch
(
ParseException
e
)
{
throw
new
ExcelCommonException
(
"Test Exception"
,
e
);
}
Assert
.
assertEquals
(
data
.
getNumber
(),
99.99
,
0.00
);
LOGGER
.
debug
(
"First row:{}"
,
JSON
.
toJSONString
(
list
.
get
(
0
)));
}
}
src/test/java/com/alibaba/easyexcel/test/core/compatibility/CompatibilityData.java
0 → 100644
浏览文件 @
76fbb782
package
com.alibaba.easyexcel.test.core.compatibility
;
import
com.alibaba.excel.annotation.ExcelProperty
;
import
com.alibaba.excel.metadata.BaseRowModel
;
import
lombok.Data
;
/**
* @author zhuangjiaju
*/
@Data
public
class
CompatibilityData
extends
BaseRowModel
{
@ExcelProperty
(
"字符串标题0"
)
private
String
string0
;
@ExcelProperty
(
"字符串标题1"
)
private
String
string1
;
}
src/test/java/com/alibaba/easyexcel/test/core/compatibility/CompatibilityDataTest.java
0 → 100644
浏览文件 @
76fbb782
package
com.alibaba.easyexcel.test.core.compatibility
;
import
java.io.File
;
import
java.io.FileOutputStream
;
import
java.io.OutputStream
;
import
java.util.ArrayList
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
import
org.apache.poi.ss.usermodel.IndexedColors
;
import
org.junit.BeforeClass
;
import
org.junit.Test
;
import
com.alibaba.easyexcel.test.util.TestFileUtil
;
import
com.alibaba.excel.EasyExcelFactory
;
import
com.alibaba.excel.ExcelWriter
;
import
com.alibaba.excel.metadata.Font
;
import
com.alibaba.excel.metadata.Sheet
;
import
com.alibaba.excel.metadata.Table
;
import
com.alibaba.excel.metadata.TableStyle
;
/**
*
* @author zhuangjiaju
*/
public
class
CompatibilityDataTest
{
private
static
File
file07
;
private
static
File
file03
;
@BeforeClass
public
static
void
init
()
{
file07
=
TestFileUtil
.
createNewFile
(
"compatibility07.xlsx"
);
file03
=
TestFileUtil
.
createNewFile
(
"compatibility03.xls"
);
}
@Test
public
void
T01ReadAndWrite07
()
throws
Exception
{
readAndWrite
(
file07
);
}
@Test
public
void
T02ReadAndWrite03
()
throws
Exception
{
readAndWrite
(
file03
);
}
private
void
readAndWrite
(
File
file
)
throws
Exception
{
OutputStream
out
=
new
FileOutputStream
(
file
);
ExcelWriter
writer
=
EasyExcelFactory
.
getWriter
(
out
);
// sheet1 width,string head,stirng data
Sheet
sheet1
=
new
Sheet
(
1
,
3
);
sheet1
.
setSheetName
(
"第一个sheet"
);
Map
columnWidth
=
new
HashMap
();
columnWidth
.
put
(
0
,
10000
);
columnWidth
.
put
(
1
,
50000
);
sheet1
.
setColumnWidthMap
(
columnWidth
);
sheet1
.
setHead
(
head
());
writer
.
write1
(
listData
(),
sheet1
);
// sheet2 style,class head
Sheet
sheet2
=
new
Sheet
(
2
,
3
,
CompatibilityData
.
class
,
"第二个sheet"
,
null
);
sheet2
.
setTableStyle
(
style
());
writer
.
write
(
data
(),
sheet2
);
// sheet3 table
Sheet
sheet3
=
new
Sheet
(
3
,
0
);
sheet3
.
setSheetName
(
"第三个sheet"
);
Table
table1
=
new
Table
(
1
);
table1
.
setHead
(
head
());
writer
.
write1
(
listData
(),
sheet3
,
table1
);
Table
table2
=
new
Table
(
2
);
table2
.
setClazz
(
CompatibilityData
.
class
);
writer
.
write
(
data
(),
sheet3
,
table2
);
writer
.
finish
();
out
.
close
();
// EasyExcelFactory.write(file, AnnotationData.class).sheet().doWrite(data()).finish();
// EasyExcelFactory.read(file, AnnotationData.class, new AnnotationDataListener()).sheet().doRead().finish();
}
private
List
<
List
<
String
>>
head
()
{
List
<
List
<
String
>>
list
=
new
ArrayList
<
List
<
String
>>();
List
<
String
>
head0
=
new
ArrayList
<
String
>();
head0
.
add
(
"字符串标题0"
);
List
<
String
>
head1
=
new
ArrayList
<
String
>();
head1
.
add
(
"字符串标题1"
);
list
.
add
(
head0
);
list
.
add
(
head1
);
return
list
;
}
private
List
<
List
<
Object
>>
listData
()
{
List
<
List
<
Object
>>
list
=
new
ArrayList
<
List
<
Object
>>();
List
<
Object
>
data0
=
new
ArrayList
<
Object
>();
data0
.
add
(
"字符串0"
);
data0
.
add
(
1
);
list
.
add
(
data0
);
return
list
;
}
private
List
<
CompatibilityData
>
data
()
{
List
<
CompatibilityData
>
list
=
new
ArrayList
<
CompatibilityData
>();
for
(
int
i
=
0
;
i
<
10
;
i
++)
{
CompatibilityData
data
=
new
CompatibilityData
();
data
.
setString0
(
"字符串0"
+
i
);
data
.
setString1
(
"字符串1"
+
i
);
list
.
add
(
data
);
}
return
list
;
}
public
TableStyle
style
()
{
TableStyle
tableStyle
=
new
TableStyle
();
Font
headFont
=
new
Font
();
headFont
.
setBold
(
true
);
headFont
.
setFontHeightInPoints
((
short
)
22
);
headFont
.
setFontName
(
"楷体"
);
tableStyle
.
setTableHeadFont
(
headFont
);
tableStyle
.
setTableHeadBackGroundColor
(
IndexedColors
.
BLUE
);
Font
contentFont
=
new
Font
();
contentFont
.
setBold
(
true
);
contentFont
.
setFontHeightInPoints
((
short
)
22
);
contentFont
.
setFontName
(
"黑体"
);
tableStyle
.
setTableContentFont
(
contentFont
);
tableStyle
.
setTableContentBackGroundColor
(
IndexedColors
.
GREEN
);
return
tableStyle
;
}
}
src/test/java/com/alibaba/easyexcel/test/core/repetition/RepetitionData.java
0 → 100644
浏览文件 @
76fbb782
package
com.alibaba.easyexcel.test.core.repetition
;
import
com.alibaba.excel.annotation.ExcelProperty
;
import
lombok.Data
;
/**
* @author zhuangjiaju
*/
@Data
public
class
RepetitionData
{
@ExcelProperty
(
"字符串"
)
private
String
string
;
}
src/test/java/com/alibaba/easyexcel/test/core/repetition/RepetitionDataListener.java
0 → 100644
浏览文件 @
76fbb782
package
com.alibaba.easyexcel.test.core.repetition
;
import
java.util.ArrayList
;
import
java.util.List
;
import
org.junit.Assert
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
com.alibaba.easyexcel.test.core.simple.SimpleDataListener
;
import
com.alibaba.excel.context.AnalysisContext
;
import
com.alibaba.excel.event.AnalysisEventListener
;
import
com.alibaba.fastjson.JSON
;
/**
* @author zhuangjiaju
*/
public
class
RepetitionDataListener
extends
AnalysisEventListener
<
RepetitionData
>
{
private
static
final
Logger
LOGGER
=
LoggerFactory
.
getLogger
(
SimpleDataListener
.
class
);
List
<
RepetitionData
>
list
=
new
ArrayList
<
RepetitionData
>();
@Override
public
void
invoke
(
RepetitionData
data
,
AnalysisContext
context
)
{
list
.
add
(
data
);
}
@Override
public
void
doAfterAllAnalysed
(
AnalysisContext
context
)
{
Assert
.
assertEquals
(
list
.
size
(),
2
);
Assert
.
assertEquals
(
list
.
get
(
0
).
getString
(),
"字符串0"
);
Assert
.
assertEquals
(
list
.
get
(
1
).
getString
(),
"字符串0"
);
LOGGER
.
debug
(
"First row:{}"
,
JSON
.
toJSONString
(
list
.
get
(
0
)));
}
}
src/test/java/com/alibaba/easyexcel/test/core/repetition/RepetitionDataTest.java
0 → 100644
浏览文件 @
76fbb782
package
com.alibaba.easyexcel.test.core.repetition
;
import
java.io.File
;
import
java.util.ArrayList
;
import
java.util.List
;
import
org.junit.BeforeClass
;
import
org.junit.FixMethodOrder
;
import
org.junit.Test
;
import
org.junit.runners.MethodSorters
;
import
com.alibaba.easyexcel.test.util.TestFileUtil
;
import
com.alibaba.excel.EasyExcelFactory
;
import
com.alibaba.excel.ExcelReader
;
import
com.alibaba.excel.ExcelWriter
;
import
com.alibaba.excel.read.metadata.ReadSheet
;
import
com.alibaba.excel.write.metadata.WriteSheet
;
import
com.alibaba.excel.write.metadata.WriteTable
;
/**
*
* @author zhuangjiaju
*/
@FixMethodOrder
(
MethodSorters
.
NAME_ASCENDING
)
public
class
RepetitionDataTest
{
private
static
File
file07
;
private
static
File
file03
;
private
static
File
fileTable07
;
private
static
File
fileTable03
;
@BeforeClass
public
static
void
init
()
{
file07
=
TestFileUtil
.
createNewFile
(
"repetition07.xlsx"
);
file03
=
TestFileUtil
.
createNewFile
(
"repetition03.xls"
);
fileTable07
=
TestFileUtil
.
createNewFile
(
"repetitionTable07.xlsx"
);
fileTable03
=
TestFileUtil
.
createNewFile
(
"repetitionTable03.xls"
);
}
@Test
public
void
T01ReadAndWrite07
()
{
readAndWrite
(
file07
);
}
@Test
public
void
T02ReadAndWrite03
()
{
readAndWrite
(
file03
);
}
private
void
readAndWrite
(
File
file
)
{
ExcelWriter
excelWriter
=
EasyExcelFactory
.
write
(
file
,
RepetitionData
.
class
).
build
();
WriteSheet
writeSheet
=
EasyExcelFactory
.
writerSheet
(
0
).
build
();
excelWriter
.
write
(
data
(),
writeSheet
).
write
(
data
(),
writeSheet
).
finish
();
ExcelReader
excelReader
=
EasyExcelFactory
.
read
(
file
,
RepetitionData
.
class
,
new
RepetitionDataListener
()).
build
();
ReadSheet
readSheet
=
EasyExcelFactory
.
readSheet
(
0
).
build
();
excelReader
.
read
(
readSheet
).
finish
();
}
@Test
public
void
T03ReadAndWriteTable07
()
{
readAndWriteTable
(
fileTable07
);
}
@Test
public
void
T04ReadAndWriteTable03
()
{
readAndWriteTable
(
fileTable03
);
}
private
void
readAndWriteTable
(
File
file
)
{
ExcelWriter
excelWriter
=
EasyExcelFactory
.
write
(
file
,
RepetitionData
.
class
).
build
();
WriteSheet
writeSheet
=
EasyExcelFactory
.
writerSheet
(
0
).
build
();
WriteTable
writeTable
=
EasyExcelFactory
.
writerTable
(
0
).
build
();
excelWriter
.
write
(
data
(),
writeSheet
,
writeTable
).
write
(
data
(),
writeSheet
,
writeTable
).
finish
();
ExcelReader
excelReader
=
EasyExcelFactory
.
read
(
file
,
RepetitionData
.
class
,
new
RepetitionDataListener
()).
build
();
ReadSheet
readSheet
=
EasyExcelFactory
.
readSheet
(
0
).
headRowNumber
(
2
).
build
();
excelReader
.
read
(
readSheet
).
finish
();
}
private
List
<
RepetitionData
>
data
()
{
List
<
RepetitionData
>
list
=
new
ArrayList
<
RepetitionData
>();
RepetitionData
data
=
new
RepetitionData
();
data
.
setString
(
"字符串0"
);
list
.
add
(
data
);
return
list
;
}
}
src/test/java/com/alibaba/easyexcel/test/core/style/StyleData.java
0 → 100644
浏览文件 @
76fbb782
package
com.alibaba.easyexcel.test.core.style
;
import
com.alibaba.excel.annotation.ExcelProperty
;
import
lombok.Data
;
/**
* @author zhuangjiaju
*/
@Data
public
class
StyleData
{
@ExcelProperty
(
"字符串"
)
private
String
string
;
@ExcelProperty
(
"字符串1"
)
private
String
string1
;
}
src/test/java/com/alibaba/easyexcel/test/core/style/StyleDataListener.java
0 → 100644
浏览文件 @
76fbb782
package
com.alibaba.easyexcel.test.core.style
;
import
java.util.ArrayList
;
import
java.util.List
;
import
org.junit.Assert
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
com.alibaba.easyexcel.test.core.simple.SimpleDataListener
;
import
com.alibaba.excel.context.AnalysisContext
;
import
com.alibaba.excel.event.AnalysisEventListener
;
import
com.alibaba.fastjson.JSON
;
/**
* @author zhuangjiaju
*/
public
class
StyleDataListener
extends
AnalysisEventListener
<
StyleData
>
{
private
static
final
Logger
LOGGER
=
LoggerFactory
.
getLogger
(
SimpleDataListener
.
class
);
List
<
StyleData
>
list
=
new
ArrayList
<
StyleData
>();
@Override
public
void
invoke
(
StyleData
data
,
AnalysisContext
context
)
{
list
.
add
(
data
);
}
@Override
public
void
doAfterAllAnalysed
(
AnalysisContext
context
)
{
Assert
.
assertEquals
(
list
.
size
(),
2
);
Assert
.
assertEquals
(
list
.
get
(
0
).
getString
(),
"字符串0"
);
Assert
.
assertEquals
(
list
.
get
(
1
).
getString
(),
"字符串1"
);
LOGGER
.
debug
(
"First row:{}"
,
JSON
.
toJSONString
(
list
.
get
(
0
)));
}
}
src/test/java/com/alibaba/easyexcel/test/core/style/StyleDataTest.java
0 → 100644
浏览文件 @
76fbb782
package
com.alibaba.easyexcel.test.core.style
;
import
java.io.File
;
import
java.util.ArrayList
;
import
java.util.List
;
import
org.apache.poi.ss.usermodel.FillPatternType
;
import
org.apache.poi.ss.usermodel.IndexedColors
;
import
org.junit.BeforeClass
;
import
org.junit.FixMethodOrder
;
import
org.junit.Test
;
import
org.junit.runners.MethodSorters
;
import
com.alibaba.easyexcel.test.util.TestFileUtil
;
import
com.alibaba.excel.EasyExcelFactory
;
import
com.alibaba.excel.write.metadata.style.WriteCellStyle
;
import
com.alibaba.excel.write.metadata.style.WriteFont
;
import
com.alibaba.excel.write.style.HorizontalCellStyleStrategy
;
import
com.alibaba.excel.write.style.column.SimpleColumnWidthStyleStrategy
;
import
com.alibaba.excel.write.style.row.SimpleRowHeightStyleStrategy
;
/**
*
* @author zhuangjiaju
*/
@FixMethodOrder
(
MethodSorters
.
NAME_ASCENDING
)
public
class
StyleDataTest
{
private
static
File
file07
;
private
static
File
file03
;
@BeforeClass
public
static
void
init
()
{
file07
=
TestFileUtil
.
createNewFile
(
"style07.xlsx"
);
file03
=
TestFileUtil
.
createNewFile
(
"style03.xls"
);
}
@Test
public
void
T01ReadAndWrite07
()
{
readAndWrite
(
file07
);
}
@Test
public
void
T02ReadAndWrite03
()
{
readAndWrite
(
file03
);
}
private
void
readAndWrite
(
File
file
)
{
SimpleColumnWidthStyleStrategy
simpleColumnWidthStyleStrategy
=
new
SimpleColumnWidthStyleStrategy
(
50
);
SimpleRowHeightStyleStrategy
simpleRowHeightStyleStrategy
=
new
SimpleRowHeightStyleStrategy
((
short
)
40
,
(
short
)
50
);
WriteCellStyle
headWriteCellStyle
=
new
WriteCellStyle
();
headWriteCellStyle
.
setFillForegroundColor
(
IndexedColors
.
RED
.
getIndex
());
WriteFont
headWriteFont
=
new
WriteFont
();
headWriteFont
.
setFontHeightInPoints
((
short
)
20
);
headWriteCellStyle
.
setWriteFont
(
headWriteFont
);
WriteCellStyle
contentWriteCellStyle
=
new
WriteCellStyle
();
contentWriteCellStyle
.
setFillPatternType
(
FillPatternType
.
SOLID_FOREGROUND
);
contentWriteCellStyle
.
setFillForegroundColor
(
IndexedColors
.
GREEN
.
getIndex
());
WriteFont
contentWriteFont
=
new
WriteFont
();
contentWriteFont
.
setFontHeightInPoints
((
short
)
20
);
headWriteCellStyle
.
setWriteFont
(
contentWriteFont
);
HorizontalCellStyleStrategy
horizontalCellStyleStrategy
=
new
HorizontalCellStyleStrategy
(
headWriteCellStyle
,
contentWriteCellStyle
);
EasyExcelFactory
.
write
(
file
,
StyleData
.
class
).
registerWriteHandler
(
simpleColumnWidthStyleStrategy
)
.
registerWriteHandler
(
simpleRowHeightStyleStrategy
).
registerWriteHandler
(
horizontalCellStyleStrategy
)
.
sheet
().
doWrite
(
data
()).
finish
();
EasyExcelFactory
.
read
(
file
,
StyleData
.
class
,
new
StyleDataListener
()).
sheet
().
doRead
().
finish
();
}
private
List
<
StyleData
>
data
()
{
List
<
StyleData
>
list
=
new
ArrayList
<
StyleData
>();
StyleData
data
=
new
StyleData
();
data
.
setString
(
"字符串0"
);
data
.
setString1
(
"字符串01"
);
StyleData
data1
=
new
StyleData
();
data1
.
setString
(
"字符串1"
);
data1
.
setString1
(
"字符串11"
);
list
.
add
(
data
);
list
.
add
(
data1
);
return
list
;
}
}
src/test/java/com/alibaba/easyexcel/test/core/template/TemplateData.java
0 → 100644
浏览文件 @
76fbb782
package
com.alibaba.easyexcel.test.core.template
;
import
com.alibaba.excel.annotation.ExcelProperty
;
import
lombok.Data
;
/**
* @author zhuangjiaju
*/
@Data
public
class
TemplateData
{
@ExcelProperty
(
"字符串0"
)
private
String
string0
;
@ExcelProperty
(
"字符串1"
)
private
String
string1
;
}
src/test/java/com/alibaba/easyexcel/test/core/template/TemplateDataListener.java
0 → 100644
浏览文件 @
76fbb782
package
com.alibaba.easyexcel.test.core.template
;
import
java.util.ArrayList
;
import
java.util.List
;
import
org.junit.Assert
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
com.alibaba.easyexcel.test.core.simple.SimpleDataListener
;
import
com.alibaba.excel.context.AnalysisContext
;
import
com.alibaba.excel.event.AnalysisEventListener
;
import
com.alibaba.fastjson.JSON
;
/**
* @author zhuangjiaju
*/
public
class
TemplateDataListener
extends
AnalysisEventListener
<
TemplateData
>
{
private
static
final
Logger
LOGGER
=
LoggerFactory
.
getLogger
(
SimpleDataListener
.
class
);
List
<
TemplateData
>
list
=
new
ArrayList
<
TemplateData
>();
@Override
public
void
invoke
(
TemplateData
data
,
AnalysisContext
context
)
{
list
.
add
(
data
);
}
@Override
public
void
doAfterAllAnalysed
(
AnalysisContext
context
)
{
Assert
.
assertEquals
(
list
.
size
(),
2
);
Assert
.
assertEquals
(
list
.
get
(
0
).
getString0
(),
"字符串0"
);
Assert
.
assertEquals
(
list
.
get
(
1
).
getString0
(),
"字符串1"
);
LOGGER
.
debug
(
"First row:{}"
,
JSON
.
toJSONString
(
list
.
get
(
0
)));
}
}
src/test/java/com/alibaba/easyexcel/test/core/template/TemplateDataTest.java
0 → 100644
浏览文件 @
76fbb782
package
com.alibaba.easyexcel.test.core.template
;
import
java.io.File
;
import
java.util.ArrayList
;
import
java.util.List
;
import
org.junit.BeforeClass
;
import
org.junit.FixMethodOrder
;
import
org.junit.Test
;
import
org.junit.runners.MethodSorters
;
import
com.alibaba.easyexcel.test.util.TestFileUtil
;
import
com.alibaba.excel.EasyExcelFactory
;
/**
*
* @author zhuangjiaju
*/
@FixMethodOrder
(
MethodSorters
.
NAME_ASCENDING
)
public
class
TemplateDataTest
{
private
static
File
file07
;
private
static
File
file03
;
@BeforeClass
public
static
void
init
()
{
file07
=
TestFileUtil
.
createNewFile
(
"template07.xlsx"
);
file03
=
TestFileUtil
.
createNewFile
(
"template03.xls"
);
}
@Test
public
void
T01ReadAndWrite07
()
{
readAndWrite07
(
file07
);
}
@Test
public
void
T02ReadAndWrite03
()
{
readAndWrite03
(
file03
);
}
private
void
readAndWrite07
(
File
file
)
{
EasyExcelFactory
.
write
(
file
,
TemplateData
.
class
)
.
withTemplate
(
TestFileUtil
.
readFile
(
"template"
+
File
.
separator
+
"template07.xlsx"
)).
sheet
()
.
doWrite
(
data
()).
finish
();
EasyExcelFactory
.
read
(
file
,
TemplateData
.
class
,
new
TemplateDataListener
()).
headRowNumber
(
2
).
sheet
().
doRead
()
.
finish
();
}
private
void
readAndWrite03
(
File
file
)
{
EasyExcelFactory
.
write
(
file
,
TemplateData
.
class
)
.
withTemplate
(
TestFileUtil
.
readFile
(
"template"
+
File
.
separator
+
"template03.xls"
)).
sheet
().
doWrite
(
data
())
.
finish
();
EasyExcelFactory
.
read
(
file
,
TemplateData
.
class
,
new
TemplateDataListener
()).
headRowNumber
(
2
).
sheet
().
doRead
()
.
finish
();
}
private
List
<
TemplateData
>
data
()
{
List
<
TemplateData
>
list
=
new
ArrayList
<
TemplateData
>();
TemplateData
data
=
new
TemplateData
();
data
.
setString0
(
"字符串0"
);
data
.
setString1
(
"字符串01"
);
TemplateData
data1
=
new
TemplateData
();
data1
.
setString0
(
"字符串1"
);
data1
.
setString1
(
"字符串11"
);
list
.
add
(
data
);
list
.
add
(
data1
);
return
list
;
}
}
src/test/resources/template/template03.xls
0 → 100644
浏览文件 @
76fbb782
文件已添加
src/test/resources/template/template07.xlsx
0 → 100644
浏览文件 @
76fbb782
文件已添加
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录