你好! 请教你个问题 java web程序如何将读取的excel表格里的数据插入到数据库,并显示在JSP页面上?
答案:3 悬赏:0
解决时间 2021-02-17 11:39
- 提问者网友:暖心后
- 2021-02-17 08:16
java web程序如何将读取的excel表格里的数据插入到数据库,并显示在JSP页面上?求代码
最佳答案
- 二级知识专家网友:湫止没有不同
- 2021-02-17 08:46
Resource resource = new ClassPathResource("/applicationContext.xml");
BeanFactory factory = new XmlBeanFactory(resource);
SessionFactory sessionFactory = (SessionFactory) factory
.getBean("sessionFactory");
Session session = sessionFactory.openSession();
File excelfile = new File(ServletActionContext.getRequest()
.getRealPath("/upload")
+ "/" + filepath);
Workbook book = null;
int rownum;
String mname = null;
try {
book = Workbook.getWorkbook(excelfile);
Sheet sheet = book.getSheet(0);// 工作簿是从0开始的
for (rownum = 1; rownum < sheet.getRows(); rownum++) {
mname = sheet.getCell(0, rownum).getContents().trim();
String sql = "insert into media values (seq_media.nextval,?,?,?,?,?,?)";
Query query = session.createSQLQuery(sql);
query.setString(0, mname);
query.executeUpdate();
session.beginTransaction().commit();
}
} catch (Exception e) {
e.printStackTrace();
} finally {
book.close();
}
这个是我的代码 希望帮到你 采纳我 谢谢
BeanFactory factory = new XmlBeanFactory(resource);
SessionFactory sessionFactory = (SessionFactory) factory
.getBean("sessionFactory");
Session session = sessionFactory.openSession();
File excelfile = new File(ServletActionContext.getRequest()
.getRealPath("/upload")
+ "/" + filepath);
Workbook book = null;
int rownum;
String mname = null;
try {
book = Workbook.getWorkbook(excelfile);
Sheet sheet = book.getSheet(0);// 工作簿是从0开始的
for (rownum = 1; rownum < sheet.getRows(); rownum++) {
mname = sheet.getCell(0, rownum).getContents().trim();
String sql = "insert into media values (seq_media.nextval,?,?,?,?,?,?)";
Query query = session.createSQLQuery(sql);
query.setString(0, mname);
query.executeUpdate();
session.beginTransaction().commit();
}
} catch (Exception e) {
e.printStackTrace();
} finally {
book.close();
}
这个是我的代码 希望帮到你 采纳我 谢谢
全部回答
- 1楼网友:夢想黑洞
- 2021-02-17 11:00
主要用poi.jar 包。包含两个jar就可以了:poi-3.16.jar、poi-ooxml-3.16.jar
主要方法分三步:
public list readexcel(string filepath, int uncaserow, int uncaseline) throws exception {
sheet sheet = null;
fileinputstream instream = null;
try {
instream = new fileinputstream(new file(filepath));
workbook workbook = workbookfactory.create(instream);
sheet = workbook.getsheetat(0);
} catch (exception e) {
e.printstacktrace();
throw new exception();
} finally {
try {
if (instream != null) {
instream.close();
}
} catch (ioexception e) {
e.printstacktrace();
}
}
list list = init(sheet, uncaserow, uncaseline);// 需要排除行数
return list;
}
// 初始化表格中的每一行,并得到每一个单元格的值
private list init(sheet sheet, int uncaserow, int uncaseline) {
int rownum = sheet.getlastrownum() + 1; // 从零开始
list result = new arraylist();
string[] rowarr = null;
row row = null;
cell cell = null;
int rowlength = 0;
int rowindex = 0;
string rowstr = null;
for (int i = uncaserow; i < rownum; i++) {
row = sheet.getrow(i);
// 每有新的一行,创建一个新的linkedlist对象
rowlength = row.getlastcellnum();
rowindex = 0;
rowarr = new string[linecount];
for (int j = uncaseline; j < rowlength; j++) {
cell = row.getcell(j);
// 获取单元格的值
rowstr = getcellvalue(cell);
// 将得到的值放入链表中
rowarr[rowindex++] = rowstr;
}
result.add(rowarr);
}
return result;
}
// 获取单元格的值
@suppresswarnings("deprecation")
private string getcellvalue(cell cell) {
string cellvalue = "";
dataformatter formatter = new dataformatter();
if (cell != null) {
// 判断单元格数据的类型,不同类型调用不同的方法
switch (cell.getcelltype()) {
// 数值类型
case cell.cell_type_numeric:
// 进一步判断 ,单元格格式是日期格式
if (dateutil.iscelldateformatted(cell)) {
cellvalue = formatter.formatcellvalue(cell);
} else {
// 数值
double value = cell.getnumericcellvalue();
int intvalue = (int) value;
cellvalue = value - intvalue == 0 ? string.valueof(intvalue) : string.valueof(value);
}
break;
case cell.cell_type_string:
cellvalue = cell.getstringcellvalue();
break;
case cell.cell_type_boolean:
cellvalue = string.valueof(cell.getbooleancellvalue());
break;
// 判断单元格是公式格式,需要做一种特殊处理来得到相应的值
case cell.cell_type_formula: {
try {
cellvalue = string.valueof(cell.getnumericcellvalue());
} catch (illegalstateexception e) {
cellvalue = string.valueof(cell.getrichstringcellvalue());
}
}
break;
case cell.cell_type_blank:
cellvalue = "";
break;
case cell.cell_type_error:
cellvalue = "";
break;
default:
cellvalue = cell.tostring().trim();
break;
}
}
return cellvalue.trim();
}解析成对象以后,不论是插入数据库,还是jsp,都是一样的。
插入数据库:hibernate、mybatis
在jsp显示:对象封装进list,在页面显示list。
- 2楼网友:木子香沫兮
- 2021-02-17 10:06
代码就不上嘞。。太多。。。而且这东西痛过一次就好嘞。。。
给你个思路。。。首先分解问题
1.java后台要读取excel,就需要用到 上传功能 怎么传搜度娘
2.java读取excel 我用的是jxl这个jar 怎么用搜度娘
3.插入数据库 insert就好 考虑性能和效率 建议用批量
4.显示在jsp select就好
关键的代码 网上都有 复制改就好 但是规则一定要自己想好
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯