Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Laubin729
easyexcel
提交
e8502bc9
E
easyexcel
项目概览
Laubin729
/
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 搜索 >>
未验证
提交
e8502bc9
编写于
10月 22, 2019
作者:
庄家钜
提交者:
GitHub
10月 22, 2019
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #732 from alibaba/2.1.x
2.1.x
上级
53447b7e
60f7ab19
变更
7
隐藏空白更改
内联
并排
Showing
7 changed file
with
72 addition
and
44 deletion
+72
-44
pom.xml
pom.xml
+1
-1
src/main/java/com/alibaba/excel/write/executor/ExcelWriteFillExecutor.java
.../alibaba/excel/write/executor/ExcelWriteFillExecutor.java
+34
-12
src/main/java/com/alibaba/excel/write/metadata/holder/WriteSheetHolder.java
...alibaba/excel/write/metadata/holder/WriteSheetHolder.java
+5
-0
src/main/java/com/alibaba/excel/write/metadata/holder/WriteWorkbookHolder.java
...baba/excel/write/metadata/holder/WriteWorkbookHolder.java
+1
-1
src/test/java/com/alibaba/easyexcel/test/temp/poi/PoiTest.java
...est/java/com/alibaba/easyexcel/test/temp/poi/PoiTest.java
+10
-30
src/test/java/com/alibaba/easyexcel/test/temp/simple/Wirte.java
...st/java/com/alibaba/easyexcel/test/temp/simple/Wirte.java
+16
-0
update.md
update.md
+5
-0
未找到文件。
pom.xml
浏览文件 @
e8502bc9
...
...
@@ -4,7 +4,7 @@
<modelVersion>
4.0.0
</modelVersion>
<groupId>
com.alibaba
</groupId>
<artifactId>
easyexcel
</artifactId>
<version>
2.1.0-beta
1
</version>
<version>
2.1.0-beta
2
</version>
<packaging>
jar
</packaging>
<name>
easyexcel
</name>
...
...
src/main/java/com/alibaba/excel/write/executor/ExcelWriteFillExecutor.java
浏览文件 @
e8502bc9
...
...
@@ -279,7 +279,12 @@ public class ExcelWriteFillExecutor extends AbstractExcelWriteExecutor {
if
(
cell
==
null
)
{
continue
;
}
prepareData
(
cell
.
getStringCellValue
(),
analysisCellList
,
collectionAnalysisCellList
,
i
,
j
);
boolean
needFill
=
prepareData
(
cell
.
getStringCellValue
(),
analysisCellList
,
collectionAnalysisCellList
,
i
,
j
);
// Prevent empty data from not being replaced
if
(
needFill
)
{
cell
.
setCellValue
(
StringUtils
.
EMPTY
);
}
}
}
templateAnalysisCache
.
put
(
sheetNo
,
analysisCellList
);
...
...
@@ -287,10 +292,20 @@ public class ExcelWriteFillExecutor extends AbstractExcelWriteExecutor {
return
analysisCache
.
get
(
sheetNo
);
}
private
void
prepareData
(
String
value
,
List
<
AnalysisCell
>
analysisCellList
,
/**
* To prepare data
*
* @param value
* @param analysisCellList
* @param collectionAnalysisCellList
* @param rowIndex
* @param columnIndex
* @return Is a cell to be filled
*/
private
boolean
prepareData
(
String
value
,
List
<
AnalysisCell
>
analysisCellList
,
List
<
AnalysisCell
>
collectionAnalysisCellList
,
int
rowIndex
,
int
columnIndex
)
{
if
(
StringUtils
.
isEmpty
(
value
))
{
return
;
return
false
;
}
AnalysisCell
analysisCell
=
null
;
int
startIndex
=
0
;
...
...
@@ -322,15 +337,7 @@ public class ExcelWriteFillExecutor extends AbstractExcelWriteExecutor {
}
}
if
(
analysisCell
==
null
)
{
analysisCell
=
new
AnalysisCell
();
analysisCell
.
setRowIndex
(
rowIndex
);
analysisCell
.
setColumnIndex
(
columnIndex
);
analysisCell
.
setOnlyOneVariable
(
Boolean
.
TRUE
);
List
<
String
>
variableList
=
new
ArrayList
<
String
>();
analysisCell
.
setVariableList
(
variableList
);
List
<
String
>
prepareDataList
=
new
ArrayList
<
String
>();
analysisCell
.
setPrepareDataList
(
prepareDataList
);
analysisCell
.
setCellType
(
WriteTemplateAnalysisCellTypeEnum
.
COMMON
);
analysisCell
=
initAnalysisCell
(
rowIndex
,
columnIndex
);
}
String
variable
=
value
.
substring
(
prefixIndex
+
1
,
suffixIndex
);
if
(
StringUtils
.
isEmpty
(
variable
))
{
...
...
@@ -365,7 +372,22 @@ public class ExcelWriteFillExecutor extends AbstractExcelWriteExecutor {
}
else
{
collectionAnalysisCellList
.
add
(
analysisCell
);
}
return
true
;
}
return
false
;
}
private
AnalysisCell
initAnalysisCell
(
Integer
rowIndex
,
Integer
columnIndex
)
{
AnalysisCell
analysisCell
=
new
AnalysisCell
();
analysisCell
.
setRowIndex
(
rowIndex
);
analysisCell
.
setColumnIndex
(
columnIndex
);
analysisCell
.
setOnlyOneVariable
(
Boolean
.
TRUE
);
List
<
String
>
variableList
=
new
ArrayList
<
String
>();
analysisCell
.
setVariableList
(
variableList
);
List
<
String
>
prepareDataList
=
new
ArrayList
<
String
>();
analysisCell
.
setPrepareDataList
(
prepareDataList
);
analysisCell
.
setCellType
(
WriteTemplateAnalysisCellTypeEnum
.
COMMON
);
return
analysisCell
;
}
private
String
convertPrepareData
(
String
prepareData
)
{
...
...
src/main/java/com/alibaba/excel/write/metadata/holder/WriteSheetHolder.java
浏览文件 @
e8502bc9
...
...
@@ -156,6 +156,11 @@ public class WriteSheetHolder extends AbstractWriteHolder {
int
newRowIndex
=
0
;
switch
(
writeLastRowTypeEnum
)
{
case
TEMPLATE_EMPTY:
newRowIndex
=
Math
.
max
(
sheet
.
getLastRowNum
(),
cachedSheet
.
getLastRowNum
());
if
(
newRowIndex
!=
0
||
cachedSheet
.
getRow
(
0
)
!=
null
)
{
newRowIndex
++;
}
break
;
case
HAS_DATA:
newRowIndex
=
Math
.
max
(
sheet
.
getLastRowNum
(),
cachedSheet
.
getLastRowNum
());
newRowIndex
++;
...
...
src/main/java/com/alibaba/excel/write/metadata/holder/WriteWorkbookHolder.java
浏览文件 @
e8502bc9
...
...
@@ -146,7 +146,7 @@ public class WriteWorkbookHolder extends AbstractWriteHolder {
byte
[]
templateFileByte
=
null
;
if
(
writeWorkbook
.
getTemplateFile
()
!=
null
)
{
templateFileByte
=
FileUtils
.
readFileToByteArray
(
writeWorkbook
.
getTemplateFile
());
}
else
if
(
writeWorkbook
.
getTemplateInputStream
()
=
=
null
)
{
}
else
if
(
writeWorkbook
.
getTemplateInputStream
()
!
=
null
)
{
try
{
templateFileByte
=
IoUtils
.
toByteArray
(
writeWorkbook
.
getTemplateInputStream
());
}
finally
{
...
...
src/test/java/com/alibaba/easyexcel/test/temp/poi/PoiTest.java
浏览文件 @
e8502bc9
...
...
@@ -96,43 +96,23 @@ public class PoiTest {
@Test
public
void
cp
()
throws
IOException
,
InvalidFormatException
{
String
file
=
"d://test/tt.xlsx"
;
XSSFWorkbook
xssfWorkbook
=
new
XSSFWorkbook
(
new
File
(
file
));
XSSFSheet
xssfSheet
=
xssfWorkbook
.
getSheetAt
(
0
);
XSSFRow
row
=
xssfSheet
.
getRow
(
2
);
xssfSheet
.
removeRow
(
row
);
// Row r2= xssfSheet.createRow(2);
// r2.createCell(1);
SXSSFWorkbook
sxssfWorkbook
=
new
SXSSFWorkbook
(
xssfWorkbook
);
SXSSFSheet
sxssfSheet
=
sxssfWorkbook
.
getSheetAt
(
0
);
sxssfSheet
.
createRow
(
2
);
FileOutputStream
fileout
=
new
FileOutputStream
(
"d://test/r2"
+
System
.
currentTimeMillis
()
+
".xlsx"
);
sxssfWorkbook
.
write
(
fileout
);
sxssfWorkbook
.
dispose
();
sxssfWorkbook
.
close
();
xssfWorkbook
.
close
();
SXSSFWorkbook
xssfWorkbook
=
new
SXSSFWorkbook
(
new
XSSFWorkbook
(
file
));
SXSSFSheet
xssfSheet
=
xssfWorkbook
.
getSheetAt
(
0
);
LOGGER
.
info
(
"一共行数:{}"
,
xssfSheet
.
getLastRowNum
());
SXSSFRow
row
=
xssfSheet
.
getRow
(
0
);
LOGGER
.
info
(
"第一行数据:{}"
,
row
);
xssfSheet
.
createRow
(
20
);
LOGGER
.
info
(
"一共行数:{}"
,
xssfSheet
.
getLastRowNum
());
}
@Test
public
void
lastRowNum233443
()
throws
IOException
,
InvalidFormatException
{
String
file
=
"d://test/
tt
.xlsx"
;
String
file
=
"d://test/
em0
.xlsx"
;
XSSFWorkbook
xssfWorkbook
=
new
XSSFWorkbook
(
new
File
(
file
));
SXSSFWorkbook
sxssfWorkbook
=
new
SXSSFWorkbook
(
xssfWorkbook
);
XSSFSheet
xssfSheet
=
xssfWorkbook
.
getSheetAt
(
0
);
XSSFRow
row
=
xssfSheet
.
getRow
(
2
);
xssfSheet
.
removeRow
(
row
);
new
CellCopyPolicy
().
createBuilder
().
build
();
System
.
out
.
println
(
xssfSheet
.
getLastRowNum
());
System
.
out
.
println
(
xssfSheet
.
getRow
(
0
));
FileOutputStream
fileout
=
new
FileOutputStream
(
"d://test/r2"
+
System
.
currentTimeMillis
()
+
".xlsx"
);
sxssfWorkbook
.
write
(
fileout
);
sxssfWorkbook
.
dispose
();
sxssfWorkbook
.
close
();
xssfWorkbook
.
close
();
}
@Test
...
...
src/test/java/com/alibaba/easyexcel/test/temp/simple/Wirte.java
浏览文件 @
e8502bc9
...
...
@@ -5,12 +5,15 @@ import java.io.IOException;
import
java.util.ArrayList
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.Map
;
import
org.junit.Ignore
;
import
org.junit.Test
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
com.alibaba.easyexcel.test.core.large.LargeData
;
import
com.alibaba.easyexcel.test.core.simple.SimpleData
;
import
com.alibaba.easyexcel.test.demo.write.DemoData
;
import
com.alibaba.easyexcel.test.util.TestFileUtil
;
import
com.alibaba.excel.EasyExcel
;
...
...
@@ -18,6 +21,8 @@ import com.alibaba.excel.ExcelWriter;
import
com.alibaba.excel.write.metadata.WriteSheet
;
import
com.alibaba.fastjson.JSON
;
import
net.sf.cglib.beans.BeanMap
;
/**
* 测试poi
*
...
...
@@ -27,6 +32,17 @@ import com.alibaba.fastjson.JSON;
public
class
Wirte
{
private
static
final
Logger
LOGGER
=
LoggerFactory
.
getLogger
(
Wirte
.
class
);
@Test
public
void
simpleWrite1
()
{
LargeData
ss
=
new
LargeData
();
ss
.
setStr23
(
"ttt"
);
Map
map
=
BeanMap
.
create
(
ss
);
System
.
out
.
println
(
map
.
containsKey
(
"str23"
));
System
.
out
.
println
(
map
.
containsKey
(
"str22"
));
System
.
out
.
println
(
map
.
get
(
"str23"
));
System
.
out
.
println
(
map
.
get
(
"str22"
));
}
@Test
public
void
simpleWrite
()
{
// 写法1
...
...
update.md
浏览文件 @
e8502bc9
# 2.1.0-beta2
*
修改模板通过流创建报错的bug
*
修复空数据未替换掉的bug
*
修复空模板会空一行的bug
# 2.1.0-beta1
*
新增支持导入、导出支持公式
*
新增支持读取单元格类型、写入指定单元格类型
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录