java实现Excel的导入、导出
发布时间 - 2026-01-11 02:03:59 点击率:次一、Excel的导入

导入可采用两种方式,一种是JXL,另一种是POI,但前者不能读取高版本的Excel(07以上),后者更具兼容性。由于对两种方式都进行了尝试,就都贴出来分享(若有错误,请给予指正)
方式一、JXL导入 所需jar包 JXL.jar
publicstaticList<PutStorageInfo> readExcelByJXL(String filePath){
List<PutStorageInfo> infoList =newArrayList<PutStorageInfo>();
Map<String,List<String>> map =newHashMap<String,List<String>>();
infoList.clear();
try{
InputStream is =newFileInputStream(filePath);
Workbook workbook =Workbook.getWorkbook(is);
//获取第1张表
Sheet sheet = workbook.getSheet(0);
//获取总的列数
int columns = sheet.getColumns();
//获取总的行数
int rows = sheet.getRows();
//先列后行(j,i)
for(int i =1; i < rows; i++){
List<String> contentList =newArrayList<String>();
contentList.clear();
for(int j =1; j < columns; j++){
contentList.add(sheet.getCell(j,i).getContents());
}
map.put("StorageInfo"+i, contentList);
}
//遍历map集合,封装成bean
for(Map.Entry<String,List<String>> entry : map.entrySet()){
List<String> list = entry.getValue();
PutStorageInfo storageInfo =newPutStorageInfo();
storageInfo.setProductcode(list.get(0));
storageInfo.setProductsort(list.get(1));
storageInfo.setProductbrand(list.get(2));
storageInfo.setProductname(list.get(3));
storageInfo.setProductquantity(list.get(4));
storageInfo.setProductcontent(list.get(5));
storageInfo.setProductnetweight(list.get(6));
storageInfo.setProductcountry(list.get(7));
storageInfo.setProductpdate(list.get(8));
storageInfo.setProductprice(list.get(9));
storageInfo.setProductmark(list.get(10));
infoList.add(storageInfo);
}
is.close();
}catch(Exception e){
e.printStackTrace();
}
return infoList;
}
方式二、POI导入
所需jar包
poi-3.6-20091214.jar
poi-ooxml-3.6-20091214.jar
poi-ooxml-schemas-3.6-20091214.jar
xmlbeans-2.3.0.jar
dom4j-1.6.1.jar
jdom-2.0.6.jar
publicstaticList<PutStorageInfo> readExcelByPOI(String filePath){
List<PutStorageInfo> infoList =newArrayList<PutStorageInfo>();
Map<String,List<String>> map =newHashMap<String,List<String>>();
infoList.clear();
try{
InputStream is =newFileInputStream(filePath);
int index = filePath.lastIndexOf(".");
String postfix = filePath.substring(index+1);
Workbook workbook =null;
if("xls".equals(postfix)){
workbook =newHSSFWorkbook(is);
}elseif("xlsx".equals(postfix)){
workbook =newXSSFWorkbook(is);
}
//获取第1张表
Sheet sheet = workbook.getSheetAt(0);
//总的行数
int rows = sheet.getLastRowNum();
//总的列数--->最后一列为null则有问题,读取不完整,将表头的数目作为总的列数,没有的则补为null
int columns = sheet.getRow(0).getLastCellNum();
//先列后行
for(int i =1; i <= rows; i++){
Row row = sheet.getRow(i);
if(null!= row && row.getFirstCellNum()==-1){//这一行是空行,不读取
continue;
}
//这一行的总列数
// columns = row.getLastCellNum();
List<String> contentList =newArrayList<String>();
contentList.clear();
for(int j =1; j < columns; j++){
if(row.getCell(j)!=null){
row.getCell(j).setCellType(Cell.CELL_TYPE_STRING);
contentList.add(row.getCell(j).getStringCellValue());
}else{
contentList.add("");
}
}
map.put("StorageInfo"+i, contentList);
}
//遍历map集合,封装成bean
for(Map.Entry<String,List<String>> entry : map.entrySet()){
List<String> list = entry.getValue();
PutStorageInfo storageInfo =newPutStorageInfo();
storageInfo.setProductcode(list.get(0));
storageInfo.setProductsort(list.get(1));
storageInfo.setProductbrand(list.get(2));
storageInfo.setProductname(list.get(3));
storageInfo.setProductquantity(list.get(4));
storageInfo.setProductcontent(list.get(5));
storageInfo.setProductnetweight(list.get(6));
storageInfo.setProductcountry(list.get(7));
storageInfo.setProductpdate(list.get(8));
storageInfo.setProductprice(list.get(9));
storageInfo.setProductmark(list.get(10));
infoList.add(storageInfo);
}
is.close();
}catch(Exception e){
e.printStackTrace();
}
return infoList;
}
二、Excel导出
采用JXL实现
publicstaticvoid creatExcel(List<PutStorageInfo> storageInfoList,String fileName){
try{
OutputStream os =newFileOutputStream(fileName);
//创建可写的工作薄
WritableWorkbook workbook =Workbook.createWorkbook(os);
//创建第一张表
WritableSheet sheet = workbook.createSheet("Sheet1",0);
//设置根据内容自动宽度
CellView cellView =newCellView();
cellView.setAutosize(true);
//在下边for循环中为每一列设置
//设置列宽度,此种方式参数的意思,i-->对应的行或列 j-->要设置的宽度
// sheet.setColumnView(0, 100);
// sheet.setRowView(0, 300);
//设置字体加粗且背景颜色为黄色
WritableFont boldFont =newWritableFont(WritableFont.ARIAL,10,WritableFont.BOLD);//黑体
WritableCellFormat cellrFormate =newWritableCellFormat(boldFont);
cellrFormate.setBackground(Colour.YELLOW);
//先添加表头
List<String> titleList = getTitleList();
//循环创建单元格,先列后行
for(int i =0; i < titleList.size(); i++){
//sheet.setColumnView(i, cellView);
sheet.setColumnView(i,20);
Label label =newLabel(i,0, titleList.get(i), cellrFormate);
sheet.addCell(label);
}
LogUtil.logOut(JXLWriteExcel.class,storageInfoList.size()+"");
String[][] content = convertToArr(storageInfoList);
//设置content的自适应当前列的宽度,文本太对会自动换行 new Label(j, i+1, content[i][j-1],contentFormat);
WritableCellFormat contentFormat =newWritableCellFormat();
contentFormat.setWrap(true);
//然后添加入库信息条目
for(int i =0; i < storageInfoList.size(); i++){
Label labelID =newLabel(0,i+1,(i+1)+"");
sheet.addCell(labelID);
for(int j =1; j < titleList.size(); j++){
Label label =newLabel(j, i+1, content[i][j-1]);
sheet.addCell(label);
}
}
//把创建的内容写入到输出流中,并关闭输出流
workbook.write();
workbook.close();
os.close();
//将存储了入库bean的list清空
storageInfoList.clear();
}catch(Exception e){
e.printStackTrace();
}
}
privatestaticString[][] convertToArr(List<PutStorageInfo> storageInfoList){
String[][] content =newString[storageInfoList.size()][11];
for(int i =0; i < storageInfoList.size(); i++){
PutStorageInfo info = storageInfoList.get(i);
//每个bean中总项有11项
content[i][0]= info.getProductcode();
content[i][1]= info.getProductsort();
content[i][2]= info.getProductbrand();
content[i][3]= info.getProductname();
content[i][4]= info.getProductquantity();
content[i][5]= info.getProductcontent();
content[i][6]= info.getProductnetweight();
content[i][7]= info.getProductcountry();
content[i][8]= info.getProductpdate();
content[i][9]= info.getProductprice();
content[i][10]= info.getProductmark();
}
return content;
}
privatestaticList<String> getTitleList(){
List<String> list =newArrayList<String>();
list.add("Item No.");
list.add("Product code");
list.add("Sort");
list.add("Brand");
list.add("Product Name");
list.add("Quantity(Pieces)");
list.add("Content");
list.add("Net Weight");
list.add("Country");
list.add("Best before date");
list.add("Price(EURO)");
list.add("Remarks");
return list;
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# java
# Excel导入
# Excel导出
# java导入导出Excel
# Java实现Excel导入导出数据库的方法示例
# java实现Excel的导入导出
# Java中Easypoi实现excel多sheet表导入导出功能
# java使用EasyExcel导入导出excel
# Java实现Excel导入导出操作详解
# java利用easyexcel实现导入与导出功能
# java操作excel导入导出的3种方式
# Java使用EasyExcel实现Excel的导入导出
# Java如何使用poi导入导出excel工具类
# java如何在项目中实现excel导入导出功能
# 两种
# 遍历
# 所需
# 后行
# 这一行
# 行数
# 若有
# 更具
# 第一张
# 此种
# 贴出
# 则有
# 就都
# 大家多多
# 中为
# 进行了
# 不完整
# 清空
# 自适应
# 单元格
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
北京的网站制作公司有哪些,哪个视频网站最好?
Android 常见的图片加载框架详细介绍
如何快速搭建二级域名独立网站?
清除minerd进程的简单方法
JavaScript中如何操作剪贴板_ClipboardAPI怎么用
使用PHP下载CSS文件中的所有图片【几行代码即可实现】
Laravel的Blade指令怎么自定义_创建你自己的Laravel Blade Directives
php后缀怎么变mp4格式错误_修改扩展名提示格式不对怎么办【技巧】
东莞专业网站制作公司有哪些,东莞招聘网站哪个好?
微信小程序 scroll-view组件实现列表页实例代码
android nfc常用标签读取总结
合肥制作网站的公司有哪些,合肥聚美网络科技有限公司介绍?
Python文件流缓冲机制_IO性能解析【教程】
Laravel如何使用Contracts(契约)进行编程_Laravel契约接口与依赖反转
JS经典正则表达式笔试题汇总
如何用好域名打造高点击率的自主建站?
如何自定义safari浏览器工具栏?个性化设置safari浏览器界面教程【技巧】
Laravel如何处理和验证JSON类型的数据库字段
百度浏览器网页无法复制文字怎么办 百度浏览器复制修复
如何解决hover在ie6中的兼容性问题
EditPlus中的正则表达式实战(6)
Laravel如何使用Seeder填充数据_Laravel模型工厂Factory批量生成测试数据【方法】
如何在 Python 中将列表项按字母顺序编号(a.、b.、c. …)
教你用AI润色文章,让你的文字表达更专业
高防服务器:AI智能防御DDoS攻击与数据安全保障
javascript和jQuery中的AJAX技术详解【包含AJAX各种跨域技术】
Laravel怎么实现支付功能_Laravel集成支付宝微信支付
Laravel如何配置任务调度?(Cron Job示例)
Laravel Octane如何提升性能_使用Laravel Octane加速你的应用
如何在阿里云高效完成企业建站全流程?
jimdo怎样用html5做选项卡_jimdo选项卡html5实现与切换效果【指南】
Angular 表单中正确绑定输入值以确保提交与验证正常工作
JavaScript Ajax实现异步通信
潮流网站制作头像软件下载,适合母子的网名有哪些?
javascript日期怎么处理_如何格式化输出
香港代理服务器配置指南:高匿IP选择、跨境加速与SEO优化技巧
javascript中的try catch异常捕获机制用法分析
如何在建站宝盒中设置产品搜索功能?
Laravel任务队列怎么用_Laravel Queues异步处理任务提升应用性能
Laravel辅助函数有哪些_Laravel Helpers常用助手函数大全
Laravel怎么实现前端Toast弹窗提示_Laravel Session闪存数据Flash传递给前端【方法】
Laravel定时任务怎么设置_Laravel Crontab调度器配置
网易LOFTER官网链接 老福特网页版登录地址
标准网站视频模板制作软件,现在有哪个网站的视频编辑素材最齐全的,背景音乐、音效等?
Laravel怎么做缓存_Laravel Cache系统提升应用速度的策略与技巧
Laravel如何实现一对一模型关联?(Eloquent示例)
Laravel用户认证怎么做_Laravel Breeze脚手架快速实现登录注册功能
悟空浏览器如何设置小说背景色_悟空浏览器背景色设置【方法】
INTERNET浏览器怎样恢复关闭标签页_INTERNET浏览器标签恢复快捷键与方法【指南】
Laravel如何使用Gate和Policy进行权限控制_Laravel权限判定与策略规则配置

