java Excel导入 导出 更新

问题描述

首先创建一个实体importjava.io.Serializable;publicclassDataPojoimplementsSerializable{/****/privatestaticfinallongserialVersionUID=6230244466642061219L;/***序号*/privateStringdataId;/***公司中文名*/privateStringcnName;/***开户帐号*/privateStringbankAccount;/***结算总额*/privateStringsettleFee;publicStringgetDataId(){returndataId;}publicvoidsetDataId(StringdataId){this.dataId=dataId;}publicStringgetCnName(){returncnName;}publicvoidsetCnName(StringcnName){this.cnName=cnName;}publicStringgetBankAccount(){returnbankAccount;}publicvoidsetBankAccount(StringbankAccount){this.bankAccount=bankAccount;}publicStringgetSettleFee(){returnsettleFee;}publicvoidsetSettleFee(StringsettleFee){this.settleFee=settleFee;}}读取excel的一个类importjava.io.*;importjava.util.ArrayList;importjava.util.List;importjxl.*;publicclassReadExcel{publicstaticList<DataPojo>readExcel(){List<DataPojo>list=newArrayList<DataPojo>();try{Workbookbook=Workbook.getWorkbook(newFile("1000条测试数据.xls"));//获得第一个工作表对象Sheetsheet=book.getSheet(0);intcols=sheet.getColumns();//获取excel列数introws=sheet.getRows();//获取excel行数//循环打印excel中的数据//如果excel中有标题如果不用读取标题的时候则根据要读取的行开始//在开发中一搬我们都会给用户一个固定的模板上传数据//所以excel中的哪一列是什么数据我们很清楚for(inti=2;i<rows;i++){DataPojopojo=newDataPojo();Cellcell1=sheet.getCell(0,i);StringdataId=cell1.getContents();pojo.setDataId(dataId);Cellcell2=sheet.getCell(1,i);StringcnName=cell2.getContents();pojo.setCnName(cnName);Cellcell3=sheet.getCell(2,i);StringbankAccount=cell3.getContents();pojo.setBankAccount(bankAccount);Cellcell4=sheet.getCell(3,i);StringsettleFee=cell4.getContents();pojo.setSettleFee(settleFee);list.add(pojo);}book.close();}catch(Exceptione){System.out.println(e);}returnlist;}publicstaticvoidmain(Stringargs[]){readExcel();}}导出的类importjxl.format.Border;importjxl.format.BorderLineStyle;importjxl.format.Colour;importjxl.format.UnderlineStyle;importjxl.write.WritableCellFormat;importjxl.write.WritableFont;importjxl.write.WritableWorkbook;importjxl.write.WriteException;importjava.io.*;importjava.util.List;importjxl.*;importjxl.write.*;publicclassCreateExcel{publicstaticvoidmain(Stringargs[]){List<DataPojo>list=ReadExcel.readExcel();createExcel(list);}publicstaticvoidcreateExcel(List<DataPojo>list){try{Filefile=newFile("测试1.xls");//打开文件WritableWorkbookbook=Workbook.createWorkbook(file);//生成名为“第一页”的工作表,参数0表示这是第一页WritableSheetsheet=book.createSheet("第一页",0);//在label对象的构造子中指名单元格位置是第一列第一行(0,0)//以及单元格内容为testLabellabel0=newLabel(0,0,"2010年09月结算总额单",setTitle(20));Labellabel1=newLabel(0,1,"序号",setTitle(13));Labellabel2=newLabel(1,1,"公司中文名",setTitle(13));Labellabel3=newLabel(2,1,"开户帐号",setTitle(13));Labellabel4=newLabel(3,1,"结算总额(元)",setTitle(13));//将定义好的单元格添加到工作表中sheet.addCell(label0);//合并单元格//从col1列到col2列从row1行到row2行//mergeCells(intcol1,introw1,intcol2,introw2)sheet.mergeCells(0,0,3,0);sheet.addCell(label1);sheet.addCell(label2);sheet.addCell(label3);sheet.addCell(label4);//循环将数据录入到excel中for(inti=0;i<list.size();i++){DataPojodataPojo=list.get(i);Labellab0=newLabel(0,i+2,dataPojo.getDataId(),cellFormat(i));Labellab1=newLabel(1,i+2,dataPojo.getCnName(),cellFormat(i));Labellab2=newLabel(2,i+2,dataPojo.getBankAccount(),cellFormat(i));Labellab3=newLabel(3,i+2,dataPojo.getSettleFee(),cellFormat(i));sheet.addCell(lab0);sheet.addCell(lab1);sheet.addCell(lab2);sheet.addCell(lab3);//sheet.setRowView(i+2,1000);//设置高度一般都不用设置高度//设置宽度第一个参数是第几列第二个参数是宽度sheet.setColumnView(0,20);sheet.setColumnView(1,25);sheet.setColumnView(2,20);sheet.setColumnView(3,20);}//写入数据并关闭文件book.write();book.close();System.out.println("生成的文件路径:"+file.getCanonicalPath());//System.out.println(file.getAbsolutePath());}catch(Exceptione){System.out.println(e);}}/***设置背景色**@parampoint*@return*@throwsWriteException*/publicstaticWritableCellFormatcellFormat(intdataId)throwsWriteException{Colourcolor=null;if(dataId%2==0){color=Colour.WHITE;}else{color=Colour.ROSE;}//设置字体颜色WritableFontfont=newjxl.write.WritableFont(WritableFont.ARIAL,10,WritableFont.NO_BOLD,false,UnderlineStyle.NO_UNDERLINE,jxl.format.Colour.BLACK);WritableCellFormatcellFormat=newjxl.write.WritableCellFormat(font);//设置单元格背景颜色cellFormat.setBackground(color);cellFormat.setBorder(Border.ALL,BorderLineStyle.THIN);//增加边框returncellFormat;}publicstaticWritableCellFormatsetTitle(intfontSize)throwsWriteException{Colourcolor=Colour.GRAY_25;//设置字体颜色WritableFontfont=newjxl.write.WritableFont(WritableFont.ARIAL,fontSize,WritableFont.NO_BOLD,false,UnderlineStyle.NO_UNDERLINE,jxl.format.Colour.BLACK);WritableCellFormatcellFormat=newjxl.write.WritableCellFormat(font);//设置单元格背景颜色cellFormat.setBackground(color);//cellFormat.setShrinkToFit(true);cellFormat.setBorder(Border.ALL,BorderLineStyle.THIN);//增加边框returncellFormat;}}更新的很简单importjava.io.*;importjxl.*;importjxl.write.*;publicclassUpdateExcel{publicstaticvoidmain(Stringargs[]){updateExcel();}publicstaticvoidupdateExcel(){try{//excel获得文件Workbookwb=Workbook.getWorkbook(newFile("测试.xls"));//打开一个文件的副本,并且指定数据写回到原文件WritableWorkbookbook=Workbook.createWorkbook(newFile("测试.xls"),wb);//添加一个工作表WritableSheetsheet=book.createSheet("第二页",1);sheet.addCell(newLabel(0,0,"第二页的测试数据"));book.write();book.close();}catch(Exceptione){System.out.println(e);}}}

解决方案

解决方案二:
你这是总结帖?
解决方案三:
标题再说下用的是jxl的解析包
解决方案四:
感谢楼主提供该总结,还是不错的!

时间: 2024-09-20 01:12:43

java Excel导入 导出 更新的相关文章

推荐一个java万能的Excel导入导出工具

问题描述 基于poi的万能的Excel导入导出工具.支持从List<Map>中导出.支持从List<POJO>中导入导出.支持从List<POJO里面还有List<POJO>>中导入导出.支持导出类似课程表结构类型纵表.支持国际化.支持数据字典.支持单元格中下拉框数据校验.支持自动标红错误的数据.支持模板校验,用hash值相加校验模板中的数据是否被改动过.支持自由交换表格中的行或者列.不写一个配置文件.用到了适配器模式,支持任意类型的数据导入导出,用户还可以

excel导入导出组件设计

这是我设计的excel导入导出组件,使用Java 编写,通过xml文件的配置,来设置excel到java bean的映射.关键(配置)文件:ExcelModeMappingl.xml. 之前一直为excel的导入导出烦恼,每写一次都感觉是"重复造轮子",代码很繁琐,可移植性特别差.终于下决心写一个可重用性很高的组件,专门解决"重复造轮子"的问题.   xml配置文件名称:ExcelModeMappingl.xml 内容(示例): <?xml version=&

excel导入导出问题ooo11

问题描述 咨询一下各位大虾,我在做excel导入导出的时候,总数不成功,麻烦帮忙指教啊,谢谢了.代码如下:///<summary>///将DataSet数据导出到Excel,DataSet数据从数据库读取///</summary>///<paramname="ds">DataSet数据源</param>publicvoidExportToExcel(DataSetds){//TbBindData是一个集合,通过excel导入进来intin

swing-请问:用SWING容器怎么实现excel导入导出mysql里?谢谢!!!

问题描述 请问:用SWING容器怎么实现excel导入导出mysql里?谢谢!!! 也可以不用SWING容器,只要能使用excel批量导入导出mysql 解决方案 这个就是数据的读取和存储吧,一般使用jxl包来进行读取,参考下这个http://www.bkjia.com/ASPjc/892365.html

让C# Excel导入导出 支持不同版本Office_C#教程

问题:最近在项目中遇到,不同客户机安装不同Office版本,在导出Excel时,发生错误. 找不到Excel Com组件,错误信息如下. 未能加载文件或程序集"Microsoft.Office.Interop.Excel, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c"或它的某一个依赖项.系统找不到指定的文件.  解决方法: 1.引用高版本的的Excel.dll组件,最新版本14.0.0 防止客户安

EXCEL导入导出工具DataPieV3.7更新,大幅提升EXCEL导入ACCESS的效率

DataPie 托管地址:https://github.com/yfl8910/DataPie 功能:支持SQL server.SQLite.ACCESS数据库的导入.导出.存储过程调用,支持EXCEL2007.EXCEL2003.ACCESS2007. CSV文件导入数据库,支持EXCEL.CSV文件方式导出,支持数据拆分导出及自定义SQL查询与导出. 本版本新增SQLite支持,移除对ORACLE的支持,删除CSV转EXCEL的功能,大幅提升EXCEL导入ACCESS的效率.

java excel导入-java求助,excel导入功能遇到的问题

问题描述 java求助,excel导入功能遇到的问题 系统中有个excel导入数据的功能,一般能正常使用,当有多个用户并发导入操作,肯能会造成导入功能完全不可用,需重启应用后导入功能才能恢复正常.不知其他同学是否遇到过此类问题,求解答,万分感谢! 解决方案 要用多线程方案,可以参考

excel导入导出-一个面试任务,下次面试交

问题描述 一个面试任务,下次面试交 请完成minitask(需求列表导入导出功能)的开发 (1) 开发一个页面,完成需求列表的excel导入功能,要求有基本的页面校验,导入成功后跳转到成功页面,失败跳转到错误提示页面. (2) Excel导入后,要求使用ibatis批量入库. (3) 要求可以再前台通过集中过滤方式进行过滤展示. (4) 要求使用aop进行日志打印,日志打印级别以及日志划分请自行确定. 求助求助,可以怎么做?mybatis+struts2+spring+aop的基本框架,谢谢啦!

Laravel Excel导入导出Excel/CSV 文件例子

1.简介 Laravel Excel 在 Laravel 5 中集成 PHPOffice 套件中的 PHPExcel,从而方便我们以优雅的.富有表现力的代码实现Excel/CSV文件的导入和导出. 该项目的GitHub地址是:https://github.com/Maatwebsite/Laravel-Excel. 本文我们将在Laravel中使用Laravel Excel简单实现Excel文件的导入和导出. 2.安装&配置 使用Composer安装依赖 首先在Laravel项目根目录下使用Co