java解析并且操作excel 方法

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

java解析并且操作excel方法最近需求变化,需要把excel导入我以前没有做过,所以我查了一些资料和参考别人的代码以下是多种方式:importjava.io.File;importjava.io.FileInputStream;importjava.io.FileOutputStream;importjava.io.IOException;importjava.util.ArrayList;importjava.util.List;importjxl.Workbook;importjxl.format.UnderlineStyle;importjxl.write.Label;importjxl.write.WritableFont;importjxl.write.WritableSheet;importjxl.write.WritableWorkbook;importjxl.write.WriteException;importjxl.write.biff.RowsExceededException;importorg.apache.poi.hssf.usermodel.HSSFCell;importorg.apache.poi.hssf.usermodel.HSSFCellStyle;importorg.apache.poi.hssf.usermodel.HSSFRow;importorg.apache.poi.hssf.usermodel.HSSFSheet;importorg.apache.poi.hssf.usermodel.HSSFWorkbook;importorg.apache.poi.poifs.filesystem.POIFSFileSystem;publicclassExcelOpt{/***生成一个Excel文件jxl*@paramfileName要生成的Excel文件名*@jxl.jar版本:2.6*/publicstaticvoidwriteExcel(StringfileName){WritableWorkbookwwb=null;try{//首先要使用Workbook类的工厂方法创建一个可写入的工作薄(Workbook)对象wwb=Workbook.createWorkbook(newFile(fileName));}catch(IOExceptione){e.printStackTrace();}if(wwb!=null){//创建一个可写入的工作表//Workbook的createSheet方法有两个参数,第一个是工作表的名称,第二个是工作表在工作薄中的位置WritableSheetws=wwb.createSheet(工作表名称,0);//下面开始添加单元格for(inti=0;i10;i++){for(intj=0;j5;j++){//这里需要注意的是,在Excel中,第一个参数表示列,第二个表示行LabellabelC=newLabel(j,i,这是第+(i+1)+行,第+(j+1)+列);try{//将生成的单元格添加到工作表中ws.addCell(labelC);}catch(RowsExceededExceptione){e.printStackTrace();}catch(WriteExceptione){e.printStackTrace();}}}try{//从内存中写入文件中wwb.write();//关闭资源,释放内存wwb.close();}catch(IOExceptione){e.printStackTrace();}catch(WriteExceptione){e.printStackTrace();}}}/***生成一个Excel文件POI*@paraminputFile输入模板文件路径*@paramoutputFile输入文件存放于服务器路径*@paramdataList待导出数据*@throwsException*@roseuid:*/publicstaticvoidexportExcelFile(StringinputFile,StringoutputFile,ListdataList)throwsException{//用模板文件构造poiPOIFSFileSystemfs=newPOIFSFileSystem(newFileInputStream(inputFile));//创建模板工作表HSSFWorkbooktemplatewb=newHSSFWorkbook(fs);//直接取模板第一个sheet对象HSSFSheettemplateSheet=templatewb.getSheetAt(1);//得到模板的第一个sheet的第一行对象为了得到模板样式HSSFRowtemplateRow=templateSheet.getRow(0);//HSSFSheettimplateSheet=templatewb.getSheetAt(1);//取得Excel文件的总列数intcolumns=templateSheet.getRow((short)0).getPhysicalNumberOfCells();//Debug.println(columnsis:+columns);//=========================//创建样式数组HSSFCellStylestyleArray[]=newHSSFCellStyle[columns];//一次性创建所有列的样式放在数组里for(ints=0;scolumns;s++){//得到数组实例styleArray[s]=templatewb.createCellStyle();}//循环对每一个单元格进行赋值//定位行for(introwId=1;rowIddataList.size();rowId++){//依次取第rowId行数据每一个数据是valueListListvalueList=(List)dataList.get(rowId-1);//定位列for(intcolumnId=0;columnIdcolumns;columnId++){//依次取出对应与colunmId列的值//每一个单元格的值StringdataValue=(String)valueList.get(columnId);//取出colunmId列的的style//模板每一列的样式HSSFCellStylestyle=styleArray[columnId];//取模板第colunmId列的单元格对象//模板单元格对象HSSFCelltemplateCell=templateRow.getCell((short)columnId);//创建一个新的rowId行行对象//新建的行对象HSSFRowhssfRow=templateSheet.createRow(rowId);//创建新的rowId行columnId列单元格对象//新建的单元格对象HSSFCellcell=hssfRow.createCell((short)columnId);//如果对应的模板单元格样式为非锁定if(templateCell.getCellStyle().getLocked()==false){//设置此列style为非锁定style.setLocked(false);//设置到新的单元格上cell.setCellStyle(style);}//否则样式为锁定else{//设置此列style为锁定style.setLocked(true);//设置到新单元格上cell.setCellStyle(style);}//设置编码cell.setEncoding(HSSFCell.ENCODING_UTF_16);//Debug.println(dataValue:+dataValue);//设置值统一为Stringcell.setCellValue(dataValue);}}//设置输入流FileOutputStreamfOut=newFileOutputStream(outputFile);//将模板的内容写到输出文件上templatewb.write(fOut);fOut.flush();//操作结束,关闭文件fOut.close();}/***导出数据为XLS格式*@paramfos生成Excel文件Path*@parambo要导入的数据*/publicstaticvoidwriteExcelBo(Stringfos,java.util.Listve){jxl.write.WritableWorkbookwwb;try{wwb=Workbook.createWorkbook(newFile(fos));jxl.write.WritableSheetws=wwb.createSheet(上市新书,10);ws.addCell(newjxl.write.Label(0,1,书名));ws.addCell(newjxl.write.Label(1,1,作者));ws.addCell(newjxl.write.Label(2,1,定价));ws.addCell(newjxl.write.Label(3,1,出版社));intbookSize=ve.size();BookVObook=newBookVO();for(inti=0;ibookSize;i++){book=(BookVO)ve.get(i);ws.addCell(newjxl.write.Label(0,i+2,+book.getBookName()));ws.addCell(newjxl.write.Label(1,i+2,book.getBookAuthor()));ws.addCell(newjxl.write.Label(2,i+2,+book.getBookPrice()));ws.addCell(newjxl.write.Label(3,i+2,book.getBookConcern()));}//jxl.write.WritableFontwfc=//newjxl.write.WritableFont(WritableFont.ARIAL,255,WritableFont.BOLD,false,UnderlineStyle.NO_UNDERLINE,jxl.format.Colour.BLACK);//jxl.write.WritableCellFormatwcfFC=newjxl.write.WritableCellFormat(wfc);ws.addCell(newjxl.write.Label(0,0,2007年07月即将上市新书!));wwb.write();//关闭Excel工作薄对象wwb.close();}catch(IOExceptione){}catch(RowsExceededExceptione){}catch(WriteExceptione){}}publicstaticvoidmain(String[]args){writeExcel(c:\\Test测试Excel.xls);System.out.println(OK);ArrayListlist=newArrayList();for(inti=0;i10;i++){BookVObook=newBookVO();book.setBookName(WebWorkinaction++i);book.setBookAuthor(唐勇++i);book.setBookPrice(39元++i);book.setBookConcern(飞思科技++i);list.add(book);}writeExcelBo(c:\\上市新书.xls,list);System.err.println(BookOK!!!);}}=================摘要==============

1 / 42
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功