java实现excel导入文件功能,java导出excel文件
思路分析:
1、我们要做导入,实际上也就是先文件上传,然后读取文件的数据。
2、我们要有一个导入的模板,因为我们导入的超过列要和我们的数据字段匹配上,所以我们要给它来一个规定,也就是模板。
3、首先做一个导入信息的临时表,用来存导入文件中的信息。每当导入的时候,我们先把表信息清空,再拿到数据放进来,然后我们对导入的数据进行检查,最后才全部导入。
这样做的目的是防止导入的数据和列没有对上却也直接导到了库里面。
免费视频教程分享:java在线视频
代码分析
1、前端射流研究…代码:
var动作路径=上下文路径/aluminum-import ;
$(function() {
//加载数据
load data();
//上传文件
上传文件({
子修复:[xls],
后缀提示: 请选择超过的电子表格文档文件!
成功调用:函数(数据,状态,a) {
$([name=附件路径]).val(数据。文件名);
$.post(actionPath)! importExcel ,{ f_id: data.f_id },function(data) {
if (data.success) {
提醒fy。警报(数据。消息);
$(#myModal-import ).modal(" hide ");
load data();
}否则{
提醒fy。警报(数据。消息);
}
}、‘JSON’);
}
});
//导入
$(#btn-import ).单击(函数(){
var html=template( import TPL );
$(#import-body ).html(html);
$(#myModal-import ).modal();
});
//确认导入
$(#btn-sure ).单击(函数(){
var type=$( # identity-type ).val();
alertify.confirm(确定要全部导入吗?,函数(e) {
如果(!e) {返回;}否则{
$.帖子(/校友-导入!saveReal?type= type,function(data) {
提醒fy。警报(导入成功!,函数(){
位置。href=/铝!href页面;
});
}、‘JSON’);
}
});
});
});50
函数loadData() {
定义变量选项={
url: actionPath!页面
};
loadPaginationData(选项);
}2、后台功能代码
前端有四个请求,一个初始化页面数据加载,当然,一开始是没有数据的;一个导入文件上传;一个确认导入;一个导入完成后页面跳转回要信息页面(信息页面有一个批量导入跳转到这的导入页面)。
第一个后最后一个就不讲了。讲一下第二个和第三个。
(1)第二个
//上传文件后调用
public void importExcel() {
尝试{
//清空临时表的数据
basealumnimportsrv。delete all();
//读取文件
file file=gridfsdao。readfile(f _ id);
//把文件信息给临时表
int count=excelxysrv。导入excel(文件);
//清空上传的文件
文件。delete();
发送成功消息(计数,上传成功"计数"条数据);
} catch (IOException e) {
伐木工。误差(e);
sendFailMsg(null,上传失败);
}
}@Override //使用MongoDB GridFS
公共文件readFile(String f_id) {
//拿到文件
GridFSDBFile gridFSFile=mongogridfs。芬顿(新查询(Criteria.where(F_ID)).is(f _ id)));
if (gridFSFile==null) {
返回空
}
string fileName=gridfsfile。获取文件名();
字符串扩展名=文件名。子字符串(文件名。lastindexof( . )),文件名。length());
InputStream ins=gridfsfile。getinputstream();
String tmpFile=UUID.randomUUID().toString()扩展;
文件文件=新文件(tmpFile);
尝试{
输出流OS=新文件输出流(file);
int bytes read=0;
字节[]缓冲区=新字节[8192];
while((读取的字节数=ins。读(缓冲区,0,8192))!=-1) {
os.write(缓冲区,0,字节读取);
}
OS。close();
移民局。close();
} catch (IOException e) {
e。printstacktrace();
}
返回文件;
}/**
* @param excelFile
* 从超过中读取数据,并存储到数据库临时表中
* @返回
* @抛出异常
*/
@覆盖
public int导入excel(文件excel文件)引发IOException {
ListListObject datas=excelimportutil。读取excel(excel文件);
int count=0;
for(int I=1;I数据。size();i ) {
basealumnimport entity=this。转换2个实体(数据。get(I));
这个。basealumnimportsrv。保存(实体);
数数;
}
返回计数;
}(3)第三个
public void saveReal() {
int count=0;
listbasealumnimport导入列表=this。basealumnimportsrv。find all();
for(int I=0;我导入列表。size();i=10) {
listbasealumnimport new list=new ArrayList();
if ((i 10) importList.size()) {
newlist=importList.subList(i,I 10);
}否则{
newlist=importList.subList(i,导入列表。size());
}
count=excelxysrv。保存真实(新列表,这个。类型);
}
发送成功消息(计数,导入成功importList.size()条数据);
} @覆盖
public int save real(listbasealumnimport导入列表,字符串类型){
int count=0;
string alumniIdentityName=DIC SRV。查找byid(dicalumniidentity。class,Integer.parseInt(type)).getValue();
for(basealumnimport inst:导入列表){
伐木工。信息(仪器。getid());
基地铝v=这个。importexportsrv。转换(inst);
五。setid(id套件。uuid());
五。设置创建时间(新日期());
五。setlastpupdate(new Date());
这个。basealumniddao。保存(v);
这个。basealumnimportsrv。删除byid(实例。getid());
数数;
}
返回计数;
} @覆盖
public int save real(listbasealumnimport导入列表,字符串类型){
int count=0;
string alumniIdentityName=DIC SRV。查找byid(dicalumniidentity。class,Integer.parseInt(type)).getValue();
for(basealumnimport inst:导入列表){
伐木工。信息(仪器。getid());
基地铝v=这个。importexportsrv。转换(inst);
五。setid(id套件。uuid());
五。setcreatetime(新日期());
五。setlastpupdate(new Date());
这个。basealumniddao。保存(v);
这个。basealumnimportsrv。删除byid(实例。getid());
数数;
}
返回计数;
}结果图演示:
写爬虫互联网协议(互联网协议)被封了怎么解决?立即使用
相关文章教程推荐:java零基础入门以上就是爪哇岛怎么导入超过文件的详细内容,更多请关注我们其它相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。