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


相关推荐: Laravel如何使用Passport实现OAuth2?(完整配置步骤)  LinuxCD持续部署教程_自动发布与回滚机制  如何在万网自助建站中设置域名及备案?  如何在云虚拟主机上快速搭建个人网站?  Laravel怎么导出Excel文件_Laravel Excel插件使用教程  Laravel模型事件有哪些_Laravel Model Event生命周期详解  在线ppt制作网站有哪些软件,如何把网页的内容做成ppt?  如何在橙子建站中快速调整背景颜色?  Laravel如何使用Contracts(契约)进行编程_Laravel契约接口与依赖反转  Android自定义listview布局实现上拉加载下拉刷新功能  Laravel如何处理文件下载请求?(Response示例)  西安专业网站制作公司有哪些,陕西省建行官方网站?  Laravel如何构建RESTful API_Laravel标准化API接口开发指南  Laravel怎么解决跨域问题_Laravel配置CORS跨域访问  关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)  php嵌入式断网后怎么恢复_php检测网络重连并恢复硬件控制【操作】  北京网站制作的公司有哪些,北京白云观官方网站?  网易LOFTER官网链接 老福特网页版登录地址  实现点击下箭头变上箭头来回切换的两种方法【推荐】  如何快速搭建虚拟主机网站?新手必看指南  悟空浏览器如何设置小说背景色_悟空浏览器背景色设置【方法】  微信推文制作网站有哪些,怎么做微信推文,急?  使用豆包 AI 辅助进行简单网页 HTML 结构设计  浅析上传头像示例及其注意事项  香港服务器网站推广:SEO优化与外贸独立站搭建策略  制作ppt免费网站有哪些,有哪些比较好的ppt模板下载网站?  Python自动化办公教程_ExcelWordPDF批量处理案例  Laravel怎么定时执行任务_Laravel任务调度器Schedule配置与Cron设置【教程】  韩国代理服务器如何选?解析IP设置技巧与跨境访问优化指南  Laravel怎么实现一对多关联查询_Laravel Eloquent模型关系定义与预加载【实战】  Laravel如何集成Inertia.js与Vue/React?(安装配置)  Laravel中间件如何使用_Laravel自定义中间件实现权限控制  Laravel如何处理CORS跨域请求?(配置示例)  如何快速查询网址的建站时间与历史轨迹?  Laravel如何使用Spatie Media Library_Laravel图片上传管理与缩略图生成【步骤】  如何在不使用负向后查找的情况下匹配特定条件前的换行符  Laravel项目如何进行性能优化_Laravel应用性能分析与优化技巧大全  Laravel如何与Vue.js集成_Laravel + Vue前后端分离项目搭建指南  laravel怎么在请求结束后执行任务(Terminable Middleware)_laravel Terminable Middleware请求结束任务执行方法  猪八戒网站制作视频,开发一个猪八戒网站,大约需要多少?或者自己请程序员,需要什么程序员,多少程序员能完成?  如何用IIS7快速搭建并优化网站站点?  EditPlus中的正则表达式 实战(2)  胶州企业网站制作公司,青岛石头网络科技有限公司怎么样?  javascript中的数组方法有哪些_如何利用数组方法简化数据处理  js代码实现下拉菜单【推荐】  Android中Textview和图片同行显示(文字超出用省略号,图片自动靠右边)  java ZXing生成二维码及条码实例分享  移动端脚本框架Hammer.js  专业商城网站制作公司有哪些,pi商城官网是哪个?  Laravel怎么实现软删除SoftDeletes_Laravel模型回收站功能与数据恢复【步骤】