java导入excel,多sheet
直接上代码
// 1、创建一个DiskFileItemFactory工厂
DiskFileItemFactory factory = new DiskFileItemFactory();
// 2、创建一个文件上传解析器
ServletFileUpload upload = new ServletFileUpload(factory);
Map<String, Object> map = new HashMap<String, Object>();
// 解决上传文件名的中文乱码
upload.setHeaderEncoding("UTF-8");
InputStream in = null;
if (!ServletFileUpload.isMultipartContent(request))
{
// 按照传统方式获取数据
/* return ""; */
}
// 4、使用ServletFileUpload解析器解析上传数据,解析结果返回的是一个List<FileItem>集合,每一个FileItem对应一个Form表单的输入项
List<FileItem> list = upload.parseRequest(request);
for (FileItem item : list) {
// 如果fileitem中封装的是普通输入项的数据
if (item.isFormField()) {
String name = item.getFieldName();
// 解决普通输入项的数据的中文乱码问题
String value = item.getString("UTF-8");
map.put(name, value);
} else {// 如果fileitem中封装的是上传文件
// 得到上传的文件名称,
String filename = item.getName();
String filedsname = item.getFieldName();
if (filename == null || filename.trim().equals("")) {
continue;
}
// 注意:不同的浏览器提交的文件名是不一样的,有些浏览器提交上来的文件名是带有路径的,如:
// c:\a\b\1.txt,而有些只是单纯的文件名,如:1.txt
// 处理获取到的上传文件的文件名的路径部分,只保留文件名部分
filename = filename.substring(filename.lastIndexOf("\\") + 1);
// 获取item中的上传文件的输入流
in = item.getInputStream();
}
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (FileUploadException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
// 读取Excel文件并存入数据库
Workbook wb = new XSSFWorkbook(in);
// 获取Excel文档中的sheet
for(int sheetIndex=0;sheetIndex<wb.getNumberOfSheets();sheetIndex++)
{
//这里是第一个sheet 有跟多的话就判断更多就行了
if(sheetIndex==0) {
Sheet sht = wb.getSheetAt(sheetIndex);
for (int i = 2;i<= sht.getLastRowNum(); i++)
{
Row r = sht.getRow(i);
//取出这一行这一列的值
String stringCellValue = r.getCell(1).getStringCellValue();
String stringCellValue2 = r.getCell(2).getStringCellValue();
。。。。。。。
}
}
}
注意解决碰到的某些问题
1.空指针问题:
Cell cell = r.getCell(j);
if (cell == null) {
r.createCell(j);
}
2数据类型问题(j为第几列)
r.getCell(j).setCellType(Cell.CELL_TYPE_STRING);
over:希望对你有帮助!!有问题可以随时与我沟通我们一起学习。加油骚年!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
2019-09-03 java中转换为string的方法;eques和==区别