Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
K
know-base
概览
概览
详情
活动
周期分析
版本库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
张京坤
know-base
Commits
864de83f
提交
864de83f
authored
2月 28, 2024
作者:
obcy
浏览文件
操作
浏览文件
下载
差异文件
Merge remote-tracking branch 'origin/master'
上级
73f18032
62dccdb1
显示空白字符变更
内嵌
并排
正在显示
4 个修改的文件
包含
134 行增加
和
33 行删除
+134
-33
KnowledgeController.java
...ava/com/zzsn/knowbase/controller/KnowledgeController.java
+32
-18
IKnowledgeService.java
...ain/java/com/zzsn/knowbase/service/IKnowledgeService.java
+2
-1
KnowledgeServiceImpl.java
.../com/zzsn/knowbase/service/impl/KnowledgeServiceImpl.java
+35
-13
ExcelExportUtil.java
src/main/java/com/zzsn/knowbase/util/ExcelExportUtil.java
+65
-1
没有找到文件。
src/main/java/com/zzsn/knowbase/controller/KnowledgeController.java
浏览文件 @
864de83f
...
@@ -16,6 +16,7 @@ import com.zzsn.knowbase.vo.KnowledgeVO;
...
@@ -16,6 +16,7 @@ import com.zzsn.knowbase.vo.KnowledgeVO;
import
com.zzsn.knowbase.vo.Result
;
import
com.zzsn.knowbase.vo.Result
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
io.swagger.annotations.ApiOperation
;
import
lombok.Data
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.beans.factory.annotation.Value
;
...
@@ -28,7 +29,10 @@ import javax.servlet.http.HttpServletRequest;
...
@@ -28,7 +29,10 @@ import javax.servlet.http.HttpServletRequest;
import
javax.servlet.http.HttpServletResponse
;
import
javax.servlet.http.HttpServletResponse
;
import
java.io.File
;
import
java.io.File
;
import
java.io.IOException
;
import
java.io.IOException
;
import
java.util.*
;
import
java.util.ArrayList
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.concurrent.CompletableFuture
;
import
java.util.concurrent.CompletableFuture
;
/**
/**
...
@@ -66,17 +70,18 @@ public class KnowledgeController {
...
@@ -66,17 +70,18 @@ public class KnowledgeController {
IPage
<
KnowledgeVO
>
pageList
=
knowledgeService
.
queryPageList
(
knowledgeParam
,
pageNo
,
pageSize
,
column
,
order
);
IPage
<
KnowledgeVO
>
pageList
=
knowledgeService
.
queryPageList
(
knowledgeParam
,
pageNo
,
pageSize
,
column
,
order
);
return
Result
.
OK
(
pageList
);
return
Result
.
OK
(
pageList
);
}
}
/**
/**
* 详情
* 详情
*/
*/
@GetMapping
(
value
=
"/getById"
)
@GetMapping
(
value
=
"/getById"
)
public
Result
<?>
getById
(
@RequestParam
String
id
)
{
public
Result
<?>
getById
(
@RequestParam
String
id
)
{
log
.
info
(
"{}===query begin"
,
new
Date
());
log
.
info
(
"{}===query begin"
,
new
Date
());
KnowledgeVO
knowledgeVO
=
knowledgeService
.
getById
(
id
);
KnowledgeVO
knowledgeVO
=
knowledgeService
.
getById
(
id
);
if
(
null
!=
knowledgeVO
.
getPublishDate
()&&(!
knowledgeVO
.
getPublishDate
().
isEmpty
()))
{
if
(
null
!=
knowledgeVO
.
getPublishDate
()
&&
(!
knowledgeVO
.
getPublishDate
().
isEmpty
()))
{
knowledgeVO
.
setPublishDate
(
EsDateUtil
.
esFieldDateMapping
(
knowledgeVO
.
getPublishDate
()));
knowledgeVO
.
setPublishDate
(
EsDateUtil
.
esFieldDateMapping
(
knowledgeVO
.
getPublishDate
()));
}
}
if
(
null
!=
knowledgeVO
.
getVerifyTime
()&&(!
knowledgeVO
.
getVerifyTime
().
isEmpty
()))
{
if
(
null
!=
knowledgeVO
.
getVerifyTime
()
&&
(!
knowledgeVO
.
getVerifyTime
().
isEmpty
()))
{
knowledgeVO
.
setVerifyTime
(
EsDateUtil
.
esFieldDateMapping
(
knowledgeVO
.
getVerifyTime
()));
knowledgeVO
.
setVerifyTime
(
EsDateUtil
.
esFieldDateMapping
(
knowledgeVO
.
getVerifyTime
()));
}
}
return
Result
.
OK
(
knowledgeVO
);
return
Result
.
OK
(
knowledgeVO
);
...
@@ -106,24 +111,26 @@ public class KnowledgeController {
...
@@ -106,24 +111,26 @@ public class KnowledgeController {
Map
<
String
,
MultipartFile
>
fileMap
=
multipartRequest
.
getFileMap
();
Map
<
String
,
MultipartFile
>
fileMap
=
multipartRequest
.
getFileMap
();
Result
<
List
<
KnowFile
>>
result
=
localFileService
.
upload
(
fileMap
);
Result
<
List
<
KnowFile
>>
result
=
localFileService
.
upload
(
fileMap
);
if
(!
Integer
.
valueOf
(
"200"
).
equals
(
result
.
getCode
())){
log
.
info
(
"upload result:{}"
,
result
);
if
(!
Integer
.
valueOf
(
"200"
).
equals
(
result
.
getCode
()))
{
return
Result
.
error
(
result
.
getMessage
());
return
Result
.
error
(
result
.
getMessage
());
}
}
List
<
KnowFile
>
resultList
=
result
.
getResult
();
List
<
KnowFile
>
resultList
=
result
.
getResult
();
KbAuthorizedUser
userInfo
=
SpringContextUtils
.
getUserInfo
();
KbAuthorizedUser
userInfo
=
SpringContextUtils
.
getUserInfo
();
knowledge
.
setImportData
(
0
);
knowledge
.
setImportData
(
0
);
CompletableFuture
.
runAsync
(()
->
this
.
add
(
resultList
,
knowledge
,
userInfo
));
CompletableFuture
.
runAsync
(()
->
this
.
add
(
resultList
,
knowledge
,
userInfo
));
return
Result
.
OK
(
"添加成功!"
);
return
Result
.
OK
(
"添加成功!"
);
}
}
private
void
add
(
List
<
KnowFile
>
resultList
,
Knowledge
knowledge
,
KbAuthorizedUser
userInfo
){
private
void
add
(
List
<
KnowFile
>
resultList
,
Knowledge
knowledge
,
KbAuthorizedUser
userInfo
)
{
if
(
null
==
resultList
||
resultList
.
isEmpty
())
{
if
(
null
==
resultList
||
resultList
.
isEmpty
())
{
return
;
return
;
}
}
for
(
KnowFile
knowFileResult
:
resultList
)
{
for
(
KnowFile
knowFileResult
:
resultList
)
{
knowledge
.
setId
(
null
);
knowledge
.
setId
(
null
);
knowledge
.
setTitle
(
null
);
knowledge
.
setTitle
(
null
);
knowledgeService
.
addKnowledge
(
knowFileResult
,
knowledge
,
userInfo
);
knowledgeService
.
addKnowledge
(
knowFileResult
,
knowledge
,
userInfo
);
}
}
}
}
...
@@ -143,14 +150,15 @@ public class KnowledgeController {
...
@@ -143,14 +150,15 @@ public class KnowledgeController {
/**
/**
* 通过id删除
* 通过id删除
*
*
* @param
ids
* @param
* @return
* @return
*/
*/
@
Delete
Mapping
(
value
=
"/delete"
)
@
Post
Mapping
(
value
=
"/delete"
)
public
Result
<?>
delete
(
@RequestParam
(
name
=
"ids"
)
String
ids
)
{
public
Result
<?>
delete
(
@RequestBody
DeleteParam
deleteParam
)
{
knowledgeService
.
deleteKnowledge
(
ids
);
knowledgeService
.
deleteKnowledge
(
deleteParam
.
getKnowledgeList
()
);
return
Result
.
OK
(
"删除成功!"
);
return
Result
.
OK
(
"删除成功!"
);
}
}
@GetMapping
(
value
=
"/parse"
)
@GetMapping
(
value
=
"/parse"
)
public
Result
<?>
parse
(
@RequestParam
(
name
=
"filePath"
)
String
filePath
)
throws
IOException
{
public
Result
<?>
parse
(
@RequestParam
(
name
=
"filePath"
)
String
filePath
)
throws
IOException
{
String
s
=
DocUtil
.
docParseHtml
(
filePath
);
String
s
=
DocUtil
.
docParseHtml
(
filePath
);
...
@@ -166,7 +174,7 @@ public class KnowledgeController {
...
@@ -166,7 +174,7 @@ public class KnowledgeController {
@PostMapping
(
value
=
"/IntelligentQa"
)
@PostMapping
(
value
=
"/IntelligentQa"
)
public
Result
<?>
intelligentQa
(
@RequestBody
IntelligentQaParam
intelligentQaParam
)
throws
IOException
{
public
Result
<?>
intelligentQa
(
@RequestBody
IntelligentQaParam
intelligentQaParam
)
throws
IOException
{
JSONObject
params
=
new
JSONObject
();
JSONObject
params
=
new
JSONObject
();
params
.
put
(
"score_threshold"
,
intelligentQaParam
.
getScoreThreshold
()
);
params
.
put
(
"score_threshold"
,
intelligentQaParam
.
getScoreThreshold
()
);
params
.
put
(
"question"
,
intelligentQaParam
.
getQuestion
());
params
.
put
(
"question"
,
intelligentQaParam
.
getQuestion
());
params
.
put
(
"knowledge_base_id"
,
intelligentQaParam
.
getKbKnowledgeIds
().
split
(
","
));
params
.
put
(
"knowledge_base_id"
,
intelligentQaParam
.
getKbKnowledgeIds
().
split
(
","
));
String
result
=
HttpUtil
.
doPost
(
intelligentQaUrl
,
params
,
120000
);
String
result
=
HttpUtil
.
doPost
(
intelligentQaUrl
,
params
,
120000
);
...
@@ -186,9 +194,10 @@ public class KnowledgeController {
...
@@ -186,9 +194,10 @@ public class KnowledgeController {
public
Result
<?>
importInfo
(
HttpServletRequest
request
,
HttpServletResponse
response
)
{
public
Result
<?>
importInfo
(
HttpServletRequest
request
,
HttpServletResponse
response
)
{
KbAuthorizedUser
userInfo
=
SpringContextUtils
.
getUserInfo
();
KbAuthorizedUser
userInfo
=
SpringContextUtils
.
getUserInfo
();
assert
userInfo
!=
null
;
assert
userInfo
!=
null
;
knowledgeService
.
doImportInfo
(
request
,
userInfo
.
getId
());
return
knowledgeService
.
doImportInfo
(
request
,
userInfo
.
getId
());
return
Result
.
OK
(
"导入正在后台进行"
);
}
}
/**
/**
* 下载导入模板
* 下载导入模板
*/
*/
...
@@ -206,3 +215,7 @@ public class KnowledgeController {
...
@@ -206,3 +215,7 @@ public class KnowledgeController {
return
Result
.
OK
();
return
Result
.
OK
();
}
}
}
}
@Data
class
DeleteParam
{
private
List
<
Knowledge
>
knowledgeList
;
}
\ No newline at end of file
src/main/java/com/zzsn/knowbase/service/IKnowledgeService.java
浏览文件 @
864de83f
...
@@ -9,6 +9,7 @@ import com.zzsn.knowbase.vo.KnowledgeVO;
...
@@ -9,6 +9,7 @@ import com.zzsn.knowbase.vo.KnowledgeVO;
import
com.zzsn.knowbase.vo.Result
;
import
com.zzsn.knowbase.vo.Result
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletRequest
;
import
java.util.List
;
/**
/**
* @Description: 知识服务
* @Description: 知识服务
...
@@ -31,7 +32,7 @@ public interface IKnowledgeService {
...
@@ -31,7 +32,7 @@ public interface IKnowledgeService {
/**
/**
* 删除
* 删除
*/
*/
void
deleteKnowledge
(
String
ids
);
void
deleteKnowledge
(
List
<
Knowledge
>
knowledgeList
);
/**
/**
* 分页检索
* 分页检索
...
...
src/main/java/com/zzsn/knowbase/service/impl/KnowledgeServiceImpl.java
浏览文件 @
864de83f
...
@@ -25,6 +25,7 @@ import org.apache.pdfbox.pdmodel.PDDocument;
...
@@ -25,6 +25,7 @@ import org.apache.pdfbox.pdmodel.PDDocument;
import
org.apache.pdfbox.pdmodel.PDPage
;
import
org.apache.pdfbox.pdmodel.PDPage
;
import
org.apache.pdfbox.text.PDFTextStripper
;
import
org.apache.pdfbox.text.PDFTextStripper
;
import
org.apache.pdfbox.text.TextPosition
;
import
org.apache.pdfbox.text.TextPosition
;
import
org.apache.poi.ss.usermodel.Workbook
;
import
org.elasticsearch.action.search.SearchRequest
;
import
org.elasticsearch.action.search.SearchRequest
;
import
org.elasticsearch.action.search.SearchResponse
;
import
org.elasticsearch.action.search.SearchResponse
;
import
org.elasticsearch.client.RequestOptions
;
import
org.elasticsearch.client.RequestOptions
;
...
@@ -46,7 +47,10 @@ import org.springframework.web.multipart.MultipartFile;
...
@@ -46,7 +47,10 @@ import org.springframework.web.multipart.MultipartFile;
import
org.springframework.web.multipart.MultipartHttpServletRequest
;
import
org.springframework.web.multipart.MultipartHttpServletRequest
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletRequest
;
import
java.io.*
;
import
java.io.ByteArrayInputStream
;
import
java.io.File
;
import
java.io.FileInputStream
;
import
java.io.IOException
;
import
java.util.*
;
import
java.util.*
;
import
java.util.concurrent.CompletableFuture
;
import
java.util.concurrent.CompletableFuture
;
import
java.util.stream.Collectors
;
import
java.util.stream.Collectors
;
...
@@ -186,7 +190,8 @@ class KnowledgeServiceImpl implements IKnowledgeService {
...
@@ -186,7 +190,8 @@ class KnowledgeServiceImpl implements IKnowledgeService {
String
text
=
Jsoup
.
parse
(
tem
).
text
();
String
text
=
Jsoup
.
parse
(
tem
).
text
();
log
.
info
(
"info:{}"
,
text
);
log
.
info
(
"info:{}"
,
text
);
if
((!
tem
.
contains
(
"<title>"
))
&&
(!
text
.
isEmpty
()))
{
if
((!
tem
.
contains
(
"<title>"
))
&&
(!
text
.
isEmpty
()))
{
knowledge
.
setTitle
(
text
);
String
[]
s
=
text
.
split
(
" "
);
knowledge
.
setTitle
(
s
[
0
]);
break
;
break
;
}
}
}
}
...
@@ -225,7 +230,7 @@ class KnowledgeServiceImpl implements IKnowledgeService {
...
@@ -225,7 +230,7 @@ class KnowledgeServiceImpl implements IKnowledgeService {
esOpUtil
.
docEditByEntity
(
Constants
.
ES_DATA_FOR_KNOWLEDGE
,
knowledge
.
getId
(),
knowledge
);
esOpUtil
.
docEditByEntity
(
Constants
.
ES_DATA_FOR_KNOWLEDGE
,
knowledge
.
getId
(),
knowledge
);
}
}
//删除
//删除
deleteForPython
(
knowledge
.
getId
());
deleteForPython
(
knowledge
.
getId
()
,
knowledge
.
getKnowledgeProjectId
()
);
BeanUtils
.
copyProperties
(
knowledge
,
knowledgeMessage
);
BeanUtils
.
copyProperties
(
knowledge
,
knowledgeMessage
);
knowledgeMessage
.
setType
(
knowledge
.
getTypeId
());
knowledgeMessage
.
setType
(
knowledge
.
getTypeId
());
...
@@ -239,24 +244,26 @@ class KnowledgeServiceImpl implements IKnowledgeService {
...
@@ -239,24 +244,26 @@ class KnowledgeServiceImpl implements IKnowledgeService {
}
}
@Override
@Override
public
void
deleteKnowledge
(
String
ids
)
{
public
void
deleteKnowledge
(
List
<
Knowledge
>
knowledgeList
)
{
String
[]
split
=
ids
.
split
(
","
);
for
(
Knowledge
knowledge
:
knowledgeList
)
{
for
(
String
id
:
split
)
{
esOpUtil
.
docDeleteById
(
Constants
.
ES_DATA_FOR_KNOWLEDGE
,
knowledge
.
getId
());
esOpUtil
.
docDeleteById
(
Constants
.
ES_DATA_FOR_KNOWLEDGE
,
id
);
}
}
CompletableFuture
.
runAsync
(()
->
{
CompletableFuture
.
runAsync
(()
->
{
for
(
String
id
:
spli
t
)
{
for
(
Knowledge
knowledge
:
knowledgeLis
t
)
{
deleteForPython
(
id
);
deleteForPython
(
knowledge
.
getId
(),
knowledge
.
getKbKnowledgeId
()
);
}
}
});
});
}
}
public
void
deleteForPython
(
String
id
)
{
public
void
deleteForPython
(
String
id
,
String
knowledgeBaseId
)
{
JSONObject
params
=
new
JSONObject
();
JSONObject
params
=
new
JSONObject
();
params
.
put
(
"knowledge_base_id"
,
id
);
List
<
String
>
lidList
=
new
ArrayList
<>();
lidList
.
add
(
id
);
params
.
put
(
"id"
,
lidList
);
params
.
put
(
"knowledge_base_id"
,
knowledgeBaseId
);
try
{
try
{
HttpUtil
.
doPost
(
deleteUrl
,
params
,
120000
);
HttpUtil
.
doPost
(
deleteUrl
,
params
,
120000
);
}
catch
(
IOException
e
)
{
}
catch
(
IOException
e
)
{
...
@@ -547,20 +554,35 @@ class KnowledgeServiceImpl implements IKnowledgeService {
...
@@ -547,20 +554,35 @@ class KnowledgeServiceImpl implements IKnowledgeService {
MultipartHttpServletRequest
multipartRequest
=
(
MultipartHttpServletRequest
)
request
;
MultipartHttpServletRequest
multipartRequest
=
(
MultipartHttpServletRequest
)
request
;
Map
<
String
,
MultipartFile
>
fileMap
=
multipartRequest
.
getFileMap
();
Map
<
String
,
MultipartFile
>
fileMap
=
multipartRequest
.
getFileMap
();
if
(
fileMap
.
size
()
<
1
)
{
if
(
fileMap
.
size
()
<
1
)
{
return
Result
.
error
(
"请上传excel
或者word
文件"
);
return
Result
.
error
(
"请上传excel文件"
);
}
}
MultipartFile
multipartFile
=
fileMap
.
get
(
new
ArrayList
<
String
>(
fileMap
.
keySet
()).
get
(
0
));
MultipartFile
multipartFile
=
fileMap
.
get
(
new
ArrayList
<
String
>(
fileMap
.
keySet
()).
get
(
0
));
int
index
=
multipartFile
.
getOriginalFilename
().
lastIndexOf
(
"."
);
int
index
=
multipartFile
.
getOriginalFilename
().
lastIndexOf
(
"."
);
String
fileSuffix
=
multipartFile
.
getOriginalFilename
().
substring
(
index
+
1
);
String
fileSuffix
=
multipartFile
.
getOriginalFilename
().
substring
(
index
+
1
);
if
(
"xls"
.
equals
(
fileSuffix
)
||
"xlsx"
.
equals
(
fileSuffix
))
{
if
(
"xls"
.
equals
(
fileSuffix
)
||
"xlsx"
.
equals
(
fileSuffix
))
{
//文件校验
if
(!
this
.
checkExcel
(
multipartFile
)){
log
.
error
(
"excel格式不对"
);
return
Result
.
error
(
"模版错误,请下载正确模板,再次上传!"
);
}
asyncService
.
doimport
(
request
,
fileSuffix
,
userId
);
asyncService
.
doimport
(
request
,
fileSuffix
,
userId
);
return
Result
.
OK
(
"
已进行处理
"
);
return
Result
.
OK
(
"
导入正在后台进行
"
);
}
else
{
}
else
{
return
Result
.
error
(
"不支持的文件类型"
);
return
Result
.
error
(
"不支持的文件类型"
);
}
}
}
}
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
@Override
public
void
doExcel
(
HttpServletRequest
request
,
String
fileSuffix
,
String
userId
)
{
public
void
doExcel
(
HttpServletRequest
request
,
String
fileSuffix
,
String
userId
)
{
String
kbKnowledgeId
=
request
.
getParameter
(
"kbKnowledgeId"
);
String
kbKnowledgeId
=
request
.
getParameter
(
"kbKnowledgeId"
);
...
...
src/main/java/com/zzsn/knowbase/util/ExcelExportUtil.java
浏览文件 @
864de83f
...
@@ -7,23 +7,34 @@ import com.alibaba.excel.write.metadata.WriteSheet;
...
@@ -7,23 +7,34 @@ import com.alibaba.excel.write.metadata.WriteSheet;
import
com.alibaba.excel.write.metadata.style.WriteCellStyle
;
import
com.alibaba.excel.write.metadata.style.WriteCellStyle
;
import
com.alibaba.excel.write.style.HorizontalCellStyleStrategy
;
import
com.alibaba.excel.write.style.HorizontalCellStyleStrategy
;
import
com.zzsn.knowbase.entity.KnowledgeExcel
;
import
com.zzsn.knowbase.entity.KnowledgeExcel
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.poi.hssf.usermodel.HSSFCell
;
import
org.apache.poi.hssf.usermodel.HSSFCell
;
import
org.apache.poi.hssf.usermodel.HSSFDateUtil
;
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.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.XSSFCell
;
import
org.apache.poi.xssf.usermodel.XSSFRow
;
import
org.apache.poi.xssf.usermodel.XSSFRow
;
import
org.apache.poi.xssf.usermodel.XSSFSheet
;
import
org.apache.poi.xssf.usermodel.XSSFSheet
;
import
org.apache.poi.xssf.usermodel.XSSFWorkbook
;
import
org.apache.poi.xssf.usermodel.XSSFWorkbook
;
import
org.springframework.web.multipart.MultipartFile
;
import
javax.servlet.http.HttpServletResponse
;
import
javax.servlet.http.HttpServletResponse
;
import
java.io.*
;
import
java.io.*
;
import
java.net.URLEncoder
;
import
java.net.URLEncoder
;
import
java.text.DecimalFormat
;
import
java.text.DecimalFormat
;
import
java.util.ArrayList
;
import
java.util.ArrayList
;
import
java.util.LinkedList
;
import
java.util.List
;
import
java.util.List
;
import
java.util.Objects
;
@Slf4j
public
class
ExcelExportUtil
{
public
class
ExcelExportUtil
{
private
static
final
String
XLS
=
"xls"
;
private
static
final
String
XLSX
=
"xlsx"
;
private
static
final
String
SPLIT
=
"."
;
/**
/**
* 读取excel数据
* 读取excel数据
...
@@ -191,4 +202,57 @@ public class ExcelExportUtil {
...
@@ -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
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论