Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
司南-yh
easyexcel
提交
76282573
E
easyexcel
项目概览
司南-yh
/
easyexcel
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
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 搜索 >>
提交
76282573
编写于
8月 29, 2019
作者:
庄家钜
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
修复文件流需要gc才能关闭的问题 #511
上级
d1dce036
变更
8
隐藏空白更改
内联
并排
Showing
8 changed file
with
150 addition
and
1 deletion
+150
-1
pom.xml
pom.xml
+1
-1
src/main/java/com/alibaba/excel/analysis/ExcelAnalyserImpl.java
...in/java/com/alibaba/excel/analysis/ExcelAnalyserImpl.java
+14
-0
src/main/java/com/alibaba/excel/analysis/v03/XlsSaxAnalyser.java
...n/java/com/alibaba/excel/analysis/v03/XlsSaxAnalyser.java
+1
-0
src/main/java/com/alibaba/excel/analysis/v07/XlsxSaxAnalyser.java
.../java/com/alibaba/excel/analysis/v07/XlsxSaxAnalyser.java
+1
-0
src/main/java/com/alibaba/excel/read/metadata/holder/ReadWorkbookHolder.java
...libaba/excel/read/metadata/holder/ReadWorkbookHolder.java
+26
-0
src/test/java/com/alibaba/easyexcel/test/temp/Lock2Test.java
src/test/java/com/alibaba/easyexcel/test/temp/Lock2Test.java
+54
-0
src/test/java/com/alibaba/easyexcel/test/temp/poi/Poi2Test.java
...st/java/com/alibaba/easyexcel/test/temp/poi/Poi2Test.java
+50
-0
update.md
update.md
+3
-0
未找到文件。
pom.xml
浏览文件 @
76282573
...
...
@@ -4,7 +4,7 @@
<modelVersion>
4.0.0
</modelVersion>
<groupId>
com.alibaba
</groupId>
<artifactId>
easyexcel
</artifactId>
<version>
2.0.0-beta
1
</version>
<version>
2.0.0-beta
2
</version>
<packaging>
jar
</packaging>
<name>
easyexcel
</name>
...
...
src/main/java/com/alibaba/excel/analysis/ExcelAnalyserImpl.java
浏览文件 @
76282573
...
...
@@ -131,6 +131,20 @@ public class ExcelAnalyserImpl implements ExcelAnalyser {
}
catch
(
Throwable
e
)
{
throw
new
ExcelAnalysisException
(
"Can not close IO"
,
e
);
}
try
{
if
(
readWorkbookHolder
.
getOpcPackage
()
!=
null
)
{
readWorkbookHolder
.
getOpcPackage
().
close
();
}
}
catch
(
Throwable
e
)
{
throw
new
ExcelAnalysisException
(
"Can not close IO"
,
e
);
}
try
{
if
(
readWorkbookHolder
.
getPoifsFileSystem
()
!=
null
)
{
readWorkbookHolder
.
getPoifsFileSystem
().
close
();
}
}
catch
(
Throwable
e
)
{
throw
new
ExcelAnalysisException
(
"Can not close IO"
,
e
);
}
}
@Override
...
...
src/main/java/com/alibaba/excel/analysis/v03/XlsSaxAnalyser.java
浏览文件 @
76282573
...
...
@@ -73,6 +73,7 @@ public class XlsSaxAnalyser implements HSSFListener, ExcelExecutor {
this
.
analysisContext
=
context
;
this
.
records
=
new
TreeMap
<
Integer
,
CellData
>();
this
.
poifsFileSystem
=
poifsFileSystem
;
analysisContext
.
readWorkbookHolder
().
setPoifsFileSystem
(
poifsFileSystem
);
}
@Override
...
...
src/main/java/com/alibaba/excel/analysis/v07/XlsxSaxAnalyser.java
浏览文件 @
76282573
...
...
@@ -59,6 +59,7 @@ public class XlsxSaxAnalyser implements ExcelExecutor {
ReadWorkbookHolder
readWorkbookHolder
=
analysisContext
.
readWorkbookHolder
();
OPCPackage
pkg
=
readOpcPackage
(
readWorkbookHolder
,
decryptedStream
);
readWorkbookHolder
.
setOpcPackage
(
pkg
);
PackagePart
sharedStringsTablePackagePart
=
pkg
.
getPartsByContentType
(
XSSFRelation
.
SHARED_STRINGS
.
getContentType
()).
get
(
0
);
...
...
src/main/java/com/alibaba/excel/read/metadata/holder/ReadWorkbookHolder.java
浏览文件 @
76282573
...
...
@@ -6,6 +6,8 @@ import java.io.InputStream;
import
java.util.HashSet
;
import
java.util.Set
;
import
org.apache.poi.openxml4j.opc.OPCPackage
;
import
org.apache.poi.poifs.filesystem.POIFSFileSystem
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
...
...
@@ -90,6 +92,14 @@ public class ReadWorkbookHolder extends AbstractReadHolder {
* Prevent repeating sheet
*/
private
Set
<
Integer
>
hasReadSheet
;
/**
* Package
*/
private
OPCPackage
opcPackage
;
/**
* File System
*/
private
POIFSFileSystem
poifsFileSystem
;
public
ReadWorkbookHolder
(
ReadWorkbook
readWorkbook
)
{
super
(
readWorkbook
,
null
,
readWorkbook
.
getConvertAllFiled
());
...
...
@@ -232,6 +242,22 @@ public class ReadWorkbookHolder extends AbstractReadHolder {
this
.
defaultReturnMap
=
defaultReturnMap
;
}
public
OPCPackage
getOpcPackage
()
{
return
opcPackage
;
}
public
void
setOpcPackage
(
OPCPackage
opcPackage
)
{
this
.
opcPackage
=
opcPackage
;
}
public
POIFSFileSystem
getPoifsFileSystem
()
{
return
poifsFileSystem
;
}
public
void
setPoifsFileSystem
(
POIFSFileSystem
poifsFileSystem
)
{
this
.
poifsFileSystem
=
poifsFileSystem
;
}
@Override
public
HolderEnum
holderType
()
{
return
HolderEnum
.
WORKBOOK
;
...
...
src/test/java/com/alibaba/easyexcel/test/temp/Lock2Test.java
0 → 100644
浏览文件 @
76282573
package
com.alibaba.easyexcel.test.temp
;
import
java.io.File
;
import
java.io.FileInputStream
;
import
java.util.List
;
import
org.junit.Ignore
;
import
org.junit.Test
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
com.alibaba.excel.EasyExcel
;
import
com.alibaba.excel.support.ExcelTypeEnum
;
import
com.alibaba.fastjson.JSON
;
/**
* 临时测试
*
* @author Jiaju Zhuang
**/
@Ignore
public
class
Lock2Test
{
private
static
final
Logger
LOGGER
=
LoggerFactory
.
getLogger
(
Lock2Test
.
class
);
@Test
public
void
test
()
throws
Exception
{
File
file
=
new
File
(
"D:\\test\\珠海2.xlsx"
);
List
<
Object
>
list
=
EasyExcel
.
read
(
file
).
sheet
().
headRowNumber
(
0
).
doReadSync
();
LOGGER
.
info
(
"数据:{}"
,
list
.
size
());
for
(
Object
data
:
list
)
{
LOGGER
.
info
(
"返回数据:{}"
,
JSON
.
toJSONString
(
data
));
}
LOGGER
.
info
(
"文件状态:{}"
,
file
.
exists
());
file
.
delete
();
Thread
.
sleep
(
500
*
1000
);
}
@Test
public
void
test2
()
throws
Exception
{
File
file
=
new
File
(
"D:\\test\\converter03.xls"
);
List
<
Object
>
list
=
EasyExcel
.
read
(
file
).
sheet
().
headRowNumber
(
0
).
doReadSync
();
LOGGER
.
info
(
"数据:{}"
,
list
.
size
());
for
(
Object
data
:
list
)
{
LOGGER
.
info
(
"返回数据:{}"
,
JSON
.
toJSONString
(
data
));
}
LOGGER
.
info
(
"文件状态:{}"
,
file
.
exists
());
file
.
delete
();
Thread
.
sleep
(
500
*
1000
);
}
}
src/test/java/com/alibaba/easyexcel/test/temp/poi/Poi2Test.java
0 → 100644
浏览文件 @
76282573
package
com.alibaba.easyexcel.test.temp.poi
;
import
java.io.File
;
import
java.io.IOException
;
import
org.apache.poi.xssf.streaming.SXSSFRow
;
import
org.apache.poi.xssf.streaming.SXSSFSheet
;
import
org.apache.poi.xssf.streaming.SXSSFWorkbook
;
import
org.apache.poi.xssf.usermodel.XSSFRow
;
import
org.apache.poi.xssf.usermodel.XSSFSheet
;
import
org.apache.poi.xssf.usermodel.XSSFWorkbook
;
import
org.junit.Ignore
;
import
org.junit.Test
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
com.alibaba.easyexcel.test.util.TestFileUtil
;
/**
* 测试poi
*
* @author Jiaju Zhuang
**/
@Ignore
public
class
Poi2Test
{
private
static
final
Logger
LOGGER
=
LoggerFactory
.
getLogger
(
Poi2Test
.
class
);
@Test
public
void
test
()
throws
IOException
{
String
file
=
"D:\\test\\珠海.xlsx"
;
SXSSFWorkbook
xssfWorkbook
=
new
SXSSFWorkbook
(
new
XSSFWorkbook
(
file
));
SXSSFSheet
xssfSheet
=
xssfWorkbook
.
getSheetAt
(
0
);
LOGGER
.
info
(
"一共行数:{}"
,
xssfSheet
.
getLastRowNum
());
SXSSFRow
row
=
xssfSheet
.
getRow
(
0
);
LOGGER
.
info
(
"第一行数据:{}"
,
row
);
}
@Test
public
void
lastRowNumXSSF
()
throws
IOException
{
String
file
=
"D:\\test\\珠海.xlsx"
;
XSSFWorkbook
xssfWorkbook
=
new
XSSFWorkbook
(
file
);
LOGGER
.
info
(
"一共:{}个sheet"
,
xssfWorkbook
.
getNumberOfSheets
());
XSSFSheet
xssfSheet
=
xssfWorkbook
.
getSheetAt
(
0
);
LOGGER
.
info
(
"一共行数:{}"
,
xssfSheet
.
getLastRowNum
());
XSSFRow
row
=
xssfSheet
.
getRow
(
0
);
LOGGER
.
info
(
"第一行数据:{}"
,
row
);
xssfSheet
.
createRow
(
20
);
LOGGER
.
info
(
"一共行数:{}"
,
xssfSheet
.
getLastRowNum
());
}
}
update.md
浏览文件 @
76282573
# 2.0.0-beta2
*
加速gc回收 #511
# 2.0.0-beta1
*
优化读写逻辑
*
优化读写对外接口
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录