Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
金手指1668
easyexcel
提交
cbdba9a0
E
easyexcel
项目概览
金手指1668
/
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 搜索 >>
提交
cbdba9a0
编写于
8月 19, 2019
作者:
Z
zhuangjiaju
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
优化读写逻辑
上级
3f78c57e
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
116 addition
and
2 deletion
+116
-2
img/readme/quickstart/write/imageWrite.png
img/readme/quickstart/write/imageWrite.png
+0
-0
quickstart.md
quickstart.md
+53
-0
src/test/java/com/alibaba/easyexcel/test/demo/write/ImageData.java
...java/com/alibaba/easyexcel/test/demo/write/ImageData.java
+30
-0
src/test/java/com/alibaba/easyexcel/test/demo/write/WriteTest.java
...java/com/alibaba/easyexcel/test/demo/write/WriteTest.java
+33
-2
未找到文件。
img/readme/quickstart/write/imageWrite.png
0 → 100644
浏览文件 @
cbdba9a0
8.8 KB
quickstart.md
浏览文件 @
cbdba9a0
...
...
@@ -16,6 +16,7 @@ DEMO代码地址:[https://github.com/alibaba/easyexcel/blob/master/src/test/ja
*
[
复杂头写入
](
#complexHeadWrite
)
*
[
重复多次写入
](
#repeatedWrite
)
*
[
日期、数字或者自定义格式转换
](
#converterWrite
)
*
[
图片导出
](
#imageWrite
)
*
[
根据模板写入
](
#templateWrite
)
*
[
列宽、行高
](
#widthAndHeightWrite
)
*
[
自定义样式
](
#styleWrite
)
...
...
@@ -537,6 +538,58 @@ public class ConverterData {
}
```
### <span id="imageWrite" />图片导出
##### excel示例
![
img
](
img/readme/quickstart/write/imageWrite.png
)
##### 对象
```
java
@Data
@ContentRowHeight
(
100
)
@ColumnWidth
(
100
/
8
)
public
class
ImageData
{
private
File
file
;
private
InputStream
inputStream
;
/**
* 如果string类型 必须指定转换器,string默认转换成string
*/
@ExcelProperty
(
converter
=
StringImageConverter
.
class
)
private
String
string
;
private
byte
[]
byteArray
;
}
```
##### 代码
```
java
/**
* 图片导出
* <li>1. 创建excel对应的实体对象 参照{@link ImageData}
* <li>2. 直接写即可
*/
@Test
public
void
imageWrite
()
throws
Exception
{
String
fileName
=
TestFileUtil
.
getPath
()
+
"imageWrite"
+
System
.
currentTimeMillis
()
+
".xlsx"
;
// 如果使用流 记得关闭
InputStream
inputStream
=
null
;
try
{
List
<
ImageData
>
list
=
new
ArrayList
<
ImageData
>();
ImageData
imageData
=
new
ImageData
();
list
.
add
(
imageData
);
String
imagePath
=
TestFileUtil
.
getPath
()
+
"converter"
+
File
.
separator
+
"img.jpg"
;
// 放入四种类型的图片 实际使用只要选一种即可
imageData
.
setByteArray
(
FileUtils
.
readFileToByteArray
(
new
File
(
imagePath
)));
imageData
.
setFile
(
new
File
(
imagePath
));
imageData
.
setString
(
imagePath
);
inputStream
=
FileUtils
.
openInputStream
(
new
File
(
imagePath
));
imageData
.
setInputStream
(
inputStream
);
EasyExcel
.
write
(
fileName
,
ImageData
.
class
).
sheet
().
doWrite
(
list
);
}
finally
{
if
(
inputStream
!=
null
)
{
inputStream
.
close
();
}
}
}
```
### <span id="templateWrite" />根据模板写入
##### 模板excel示例
参照:
[
模板excel示例
](
#simpleReadExcel
)
...
...
src/test/java/com/alibaba/easyexcel/test/demo/write/ImageData.java
0 → 100644
浏览文件 @
cbdba9a0
package
com.alibaba.easyexcel.test.demo.write
;
import
java.io.File
;
import
java.io.InputStream
;
import
com.alibaba.excel.annotation.ExcelProperty
;
import
com.alibaba.excel.annotation.write.style.ColumnWidth
;
import
com.alibaba.excel.annotation.write.style.ContentRowHeight
;
import
com.alibaba.excel.converters.string.StringImageConverter
;
import
lombok.Data
;
/**
* 图片导出类
*
* @author Jiaju Zhuang
*/
@Data
@ContentRowHeight
(
100
)
@ColumnWidth
(
100
/
8
)
public
class
ImageData
{
private
File
file
;
private
InputStream
inputStream
;
/**
* 如果string类型 必须指定转换器,string默认转换成string
*/
@ExcelProperty
(
converter
=
StringImageConverter
.
class
)
private
String
string
;
private
byte
[]
byteArray
;
}
src/test/java/com/alibaba/easyexcel/test/demo/write/WriteTest.java
浏览文件 @
cbdba9a0
package
com.alibaba.easyexcel.test.demo.write
;
import
java.io.File
;
import
java.io.InputStream
;
import
java.util.ArrayList
;
import
java.util.Date
;
import
java.util.List
;
...
...
@@ -20,6 +21,7 @@ import com.alibaba.excel.annotation.format.NumberFormat;
import
com.alibaba.excel.annotation.write.style.ColumnWidth
;
import
com.alibaba.excel.annotation.write.style.ContentRowHeight
;
import
com.alibaba.excel.annotation.write.style.HeadRowHeight
;
import
com.alibaba.excel.util.FileUtils
;
import
com.alibaba.excel.write.merge.LoopMergeStrategy
;
import
com.alibaba.excel.write.metadata.WriteSheet
;
import
com.alibaba.excel.write.metadata.WriteTable
;
...
...
@@ -117,6 +119,35 @@ public class WriteTest {
EasyExcel
.
write
(
fileName
,
ConverterData
.
class
).
sheet
(
"模板"
).
doWrite
(
data
());
}
/**
* 图片导出
* <li>1. 创建excel对应的实体对象 参照{@link ImageData}
* <li>2. 直接写即可
*/
@Test
public
void
imageWrite
()
throws
Exception
{
String
fileName
=
TestFileUtil
.
getPath
()
+
"imageWrite"
+
System
.
currentTimeMillis
()
+
".xlsx"
;
// 如果使用流 记得关闭
InputStream
inputStream
=
null
;
try
{
List
<
ImageData
>
list
=
new
ArrayList
<
ImageData
>();
ImageData
imageData
=
new
ImageData
();
list
.
add
(
imageData
);
String
imagePath
=
TestFileUtil
.
getPath
()
+
"converter"
+
File
.
separator
+
"img.jpg"
;
// 放入四种类型的图片 实际使用只要选一种即可
imageData
.
setByteArray
(
FileUtils
.
readFileToByteArray
(
new
File
(
imagePath
)));
imageData
.
setFile
(
new
File
(
imagePath
));
imageData
.
setString
(
imagePath
);
inputStream
=
FileUtils
.
openInputStream
(
new
File
(
imagePath
));
imageData
.
setInputStream
(
inputStream
);
EasyExcel
.
write
(
fileName
,
ImageData
.
class
).
sheet
().
doWrite
(
list
);
}
finally
{
if
(
inputStream
!=
null
)
{
inputStream
.
close
();
}
}
}
/**
* 根据模板写入
* <li>1. 创建excel对应的实体对象 参照{@link IndexData}
...
...
@@ -192,8 +223,7 @@ public class WriteTest {
// 每隔2行会合并 把eachColumn 设置成 3 也就是我们数据的长度,所以就第一列会合并。当然其他合并策略也可以自己写
LoopMergeStrategy
loopMergeStrategy
=
new
LoopMergeStrategy
(
2
,
0
);
// 这里 需要指定写用哪个class去读,然后写到第一个sheet,名字为模板 然后文件流会自动关闭
EasyExcel
.
write
(
fileName
,
DemoData
.
class
).
registerWriteHandler
(
loopMergeStrategy
).
sheet
(
"模板"
)
.
doWrite
(
data
());
EasyExcel
.
write
(
fileName
,
DemoData
.
class
).
registerWriteHandler
(
loopMergeStrategy
).
sheet
(
"模板"
).
doWrite
(
data
());
}
/**
...
...
@@ -297,4 +327,5 @@ public class WriteTest {
}
return
list
;
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录