Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
K
know-base
概览
概览
详情
活动
周期分析
版本库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
张京坤
know-base
Commits
95d0d38c
提交
95d0d38c
authored
2月 27, 2024
作者:
chenshiqiang
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
check excel
上级
0c93d7d3
隐藏空白字符变更
内嵌
并排
正在显示
2 个修改的文件
包含
81 行增加
和
2 行删除
+81
-2
KnowledgeServiceImpl.java
.../com/zzsn/knowbase/service/impl/KnowledgeServiceImpl.java
+16
-1
ExcelExportUtil.java
src/main/java/com/zzsn/knowbase/util/ExcelExportUtil.java
+65
-1
没有找到文件。
src/main/java/com/zzsn/knowbase/service/impl/KnowledgeServiceImpl.java
浏览文件 @
95d0d38c
...
...
@@ -25,6 +25,7 @@ import org.apache.pdfbox.pdmodel.PDDocument;
import
org.apache.pdfbox.pdmodel.PDPage
;
import
org.apache.pdfbox.text.PDFTextStripper
;
import
org.apache.pdfbox.text.TextPosition
;
import
org.apache.poi.ss.usermodel.Workbook
;
import
org.elasticsearch.action.search.SearchRequest
;
import
org.elasticsearch.action.search.SearchResponse
;
import
org.elasticsearch.client.RequestOptions
;
...
...
@@ -553,12 +554,16 @@ class KnowledgeServiceImpl implements IKnowledgeService {
MultipartHttpServletRequest
multipartRequest
=
(
MultipartHttpServletRequest
)
request
;
Map
<
String
,
MultipartFile
>
fileMap
=
multipartRequest
.
getFileMap
();
if
(
fileMap
.
size
()
<
1
)
{
return
Result
.
error
(
"请上传excel
或者word
文件"
);
return
Result
.
error
(
"请上传excel文件"
);
}
MultipartFile
multipartFile
=
fileMap
.
get
(
new
ArrayList
<
String
>(
fileMap
.
keySet
()).
get
(
0
));
int
index
=
multipartFile
.
getOriginalFilename
().
lastIndexOf
(
"."
);
String
fileSuffix
=
multipartFile
.
getOriginalFilename
().
substring
(
index
+
1
);
if
(
"xls"
.
equals
(
fileSuffix
)
||
"xlsx"
.
equals
(
fileSuffix
))
{
//文件校验
if
(
this
.
checkExcel
(
multipartFile
)){
return
Result
.
error
(
"请按照模板上传!"
);
}
asyncService
.
doimport
(
request
,
fileSuffix
,
userId
);
return
Result
.
OK
(
"已进行处理"
);
}
else
{
...
...
@@ -567,6 +572,16 @@ class KnowledgeServiceImpl implements IKnowledgeService {
}
private
boolean
checkExcel
(
MultipartFile
multipartFile
)
{
Workbook
workbook
=
ExcelExportUtil
.
getWorkbook
(
multipartFile
);
if
(
workbook
!=
null
)
{
List
<
String
>
list
=
ExcelExportUtil
.
getSheetTitles
(
workbook
);
return
list
!=
null
&&
list
.
contains
(
"标题"
)&&
list
.
contains
(
"正文"
)
&&
list
.
contains
(
"作者"
)&&
list
.
contains
(
"来源"
)&&
list
.
contains
(
"发布时间"
);
}
return
false
;
}
@Override
public
void
doExcel
(
HttpServletRequest
request
,
String
fileSuffix
,
String
userId
)
{
String
kbKnowledgeId
=
request
.
getParameter
(
"kbKnowledgeId"
);
...
...
src/main/java/com/zzsn/knowbase/util/ExcelExportUtil.java
浏览文件 @
95d0d38c
...
...
@@ -7,23 +7,34 @@ import com.alibaba.excel.write.metadata.WriteSheet;
import
com.alibaba.excel.write.metadata.style.WriteCellStyle
;
import
com.alibaba.excel.write.style.HorizontalCellStyleStrategy
;
import
com.zzsn.knowbase.entity.KnowledgeExcel
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.poi.hssf.usermodel.HSSFCell
;
import
org.apache.poi.hssf.usermodel.HSSFDateUtil
;
import
org.apache.poi.hssf.usermodel.HSSFWorkbook
;
import
org.apache.poi.ss.usermodel.HorizontalAlignment
;
import
org.apache.poi.ss.usermodel.Row
;
import
org.apache.poi.ss.usermodel.Sheet
;
import
org.apache.poi.ss.usermodel.Workbook
;
import
org.apache.poi.xssf.usermodel.XSSFCell
;
import
org.apache.poi.xssf.usermodel.XSSFRow
;
import
org.apache.poi.xssf.usermodel.XSSFSheet
;
import
org.apache.poi.xssf.usermodel.XSSFWorkbook
;
import
org.springframework.web.multipart.MultipartFile
;
import
javax.servlet.http.HttpServletResponse
;
import
java.io.*
;
import
java.net.URLEncoder
;
import
java.text.DecimalFormat
;
import
java.util.ArrayList
;
import
java.util.LinkedList
;
import
java.util.List
;
import
java.util.Objects
;
@Slf4j
public
class
ExcelExportUtil
{
private
static
final
String
XLS
=
"xls"
;
private
static
final
String
XLSX
=
"xlsx"
;
private
static
final
String
SPLIT
=
"."
;
/**
* 读取excel数据
...
...
@@ -191,4 +202,57 @@ public class ExcelExportUtil {
}
}
/**
* 获取Excel表头信息
* @param workbook
* @return
*/
public
static
List
<
String
>
getSheetTitles
(
Workbook
workbook
)
{
// 拿第一个sheet表
Sheet
sheet
=
workbook
.
getSheetAt
(
0
);
// 校验sheet是否合法
if
(
Objects
.
isNull
(
sheet
))
{
return
null
;
}
// 获取第一行数据(假如第一行就是列名)
Row
sheetTitleRow
=
sheet
.
getRow
(
sheet
.
getFirstRowNum
());
// 取出最后一列
short
lastCellNum
=
sheetTitleRow
.
getLastCellNum
();
List
<
String
>
sheetTitleList
=
new
LinkedList
<>();
for
(
int
i
=
0
;
i
<
lastCellNum
;
i
++)
{
// 取出每一列的名
String
cellValue
=
sheetTitleRow
.
getCell
(
i
).
getStringCellValue
();
sheetTitleList
.
add
(
cellValue
);
}
return
sheetTitleList
;
}
/**
* 获取Excel表信息
* @param file
* @return
*/
public
static
Workbook
getWorkbook
(
MultipartFile
file
)
{
Workbook
workbook
=
null
;
try
{
// 获取Excel后缀名
String
fileName
=
file
.
getOriginalFilename
();
if
(
StringUtils
.
isEmpty
(
fileName
)
||
fileName
.
lastIndexOf
(
SPLIT
)
<
0
)
{
log
.
warn
(
"解析Excel失败,因为获取到的Excel文件名非法!"
);
return
null
;
}
String
fileType
=
fileName
.
substring
(
fileName
.
lastIndexOf
(
SPLIT
)
+
1
);
// 获取Excel工作簿
if
(
fileType
.
equalsIgnoreCase
(
XLS
))
{
workbook
=
new
HSSFWorkbook
(
file
.
getInputStream
());
}
else
if
(
fileType
.
equalsIgnoreCase
(
XLSX
))
{
workbook
=
new
XSSFWorkbook
(
file
.
getInputStream
());
}
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
}
return
workbook
;
}
}
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论