Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
金手指1668
easyexcel
提交
0f5be71e
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 搜索 >>
提交
0f5be71e
编写于
8月 08, 2019
作者:
Z
zhuangjiaju
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
优化读写逻辑
上级
b90988e1
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
57 addition
and
1 deletion
+57
-1
img/readme/quickstart/write/longestMatchColumnWidthWrite.png
img/readme/quickstart/write/longestMatchColumnWidthWrite.png
+0
-0
quickstart.md
quickstart.md
+51
-0
src/main/java/com/alibaba/excel/context/WriteContextImpl.java
...main/java/com/alibaba/excel/context/WriteContextImpl.java
+3
-1
src/test/java/com/alibaba/easyexcel/test/demo/write/WriteTest.java
...java/com/alibaba/easyexcel/test/demo/write/WriteTest.java
+3
-0
未找到文件。
img/readme/quickstart/write/longestMatchColumnWidthWrite.png
0 → 100644
浏览文件 @
0f5be71e
6.5 KB
quickstart.md
浏览文件 @
0f5be71e
...
...
@@ -22,6 +22,7 @@ DEMO代码地址:[https://github.com/alibaba/easyexcel/blob/master/src/test/ja
*
[
合并单元格
](
#mergeWrite
)
*
[
使用table去写入
](
#tableWrite
)
*
[
动态头,实时生成头写入
](
#dynamicHeadWrite
)
*
[
自动列宽(不太精确)
](
#longestMatchColumnWidthWrite
)
*
[
web中的写
](
#webWrite
)
## 读excel样例
...
...
@@ -739,6 +740,56 @@ public class WidthAndHeightData {
}
```
### <span id="longestMatchColumnWidthWrite" />自动列宽(不太精确)
##### excel示例
![
img
](
img/readme/quickstart/write/longestMatchColumnWidthWrite.png
)
##### 对象
```
java
@Data
public
class
LongestMatchColumnWidthData
{
@ExcelProperty
(
"字符串标题"
)
private
String
string
;
@ExcelProperty
(
"日期标题很长日期标题很长日期标题很长很长"
)
private
Date
date
;
@ExcelProperty
(
"数字"
)
private
Double
doubleData
;
}
```
##### 代码
```
java
/**
* 自动列宽(不太精确)
* <p>
* 这个目前不是很好用,比如有数字就会导致换行。而且长度也不是刚好和实际长度一致。 所以需要精确到刚好列宽的慎用。 当然也可以自己参照
* {@link LongestMatchColumnWidthStyleStrategy}重新实现.
* <p>
* poi 自带{@link SXSSFSheet#autoSizeColumn(int)} 对中文支持也不太好。目前没找到很好的算法。 有的话可以推荐下。
*
* <li>1. 创建excel对应的实体对象 参照{@link DemoData}
* <li>3. 注册策略{@link LongestMatchColumnWidthStyleStrategy}
* <li>2. 直接写即可
*/
@Test
public
void
longestMatchColumnWidthWrite
()
{
String
fileName
=
TestFileUtil
.
getPath
()
+
"longestMatchColumnWidthWrite"
+
System
.
currentTimeMillis
()
+
".xlsx"
;
// 这里 需要指定写用哪个class去读,然后写到第一个sheet,名字为模板 然后文件流会自动关闭
EasyExcelFactory
.
write
(
fileName
,
LongestMatchColumnWidthData
.
class
).
sheet
(
"模板"
).
doWrite
(
dataLong
());
}
private
List
<
LongestMatchColumnWidthData
>
dataLong
()
{
List
<
LongestMatchColumnWidthData
>
list
=
new
ArrayList
<
LongestMatchColumnWidthData
>();
for
(
int
i
=
0
;
i
<
10
;
i
++)
{
LongestMatchColumnWidthData
data
=
new
LongestMatchColumnWidthData
();
data
.
setString
(
"测试很长的字符串测试很长的字符串测试很长的字符串"
+
i
);
data
.
setDate
(
new
Date
());
data
.
setDoubleData
(
1000000000000.0
);
list
.
add
(
data
);
}
return
list
;
}
```
### <span id="webWrite" />web中的写
##### 示例代码
DEMO代码地址:
[
https://github.com/alibaba/easyexcel/blob/master/src/test/java/com/alibaba/easyexcel/test/demo/web/WebTest.java
](
/src/test/java/com/alibaba/easyexcel/test/demo/web/WebTest.java
)
...
...
src/main/java/com/alibaba/excel/context/WriteContextImpl.java
浏览文件 @
0f5be71e
...
...
@@ -117,7 +117,9 @@ public class WriteContextImpl implements WriteContext {
throw
new
IllegalArgumentException
(
"Sheet argument cannot be null"
);
}
if
(
writeSheet
.
getSheetNo
()
==
null
||
writeSheet
.
getSheetNo
()
<=
0
)
{
LOGGER
.
info
(
"Sheet number is null"
);
if
(
LOGGER
.
isDebugEnabled
())
{
LOGGER
.
debug
(
"Sheet number is null"
);
}
writeSheet
.
setSheetNo
(
0
);
}
if
(
writeWorkbookHolder
.
getHasBeenInitializedSheet
().
containsKey
(
writeSheet
.
getSheetNo
()))
{
...
...
src/test/java/com/alibaba/easyexcel/test/demo/write/WriteTest.java
浏览文件 @
0f5be71e
...
...
@@ -7,6 +7,7 @@ import java.util.List;
import
org.apache.poi.ss.usermodel.FillPatternType
;
import
org.apache.poi.ss.usermodel.IndexedColors
;
import
org.apache.poi.xssf.streaming.SXSSFSheet
;
import
org.junit.Ignore
;
import
org.junit.Test
;
...
...
@@ -243,6 +244,8 @@ public class WriteTest {
* <p>
* 这个目前不是很好用,比如有数字就会导致换行。而且长度也不是刚好和实际长度一致。 所以需要精确到刚好列宽的慎用。 当然也可以自己参照
* {@link LongestMatchColumnWidthStyleStrategy}重新实现.
* <p>
* poi 自带{@link SXSSFSheet#autoSizeColumn(int)} 对中文支持也不太好。目前没找到很好的算法。 有的话可以推荐下。
*
* <li>1. 创建excel对应的实体对象 参照{@link DemoData}
* <li>3. 注册策略{@link LongestMatchColumnWidthStyleStrategy}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录