java解析并且操作excel 方法.docx

上传人:b****3 文档编号:4737922 上传时间:2023-05-07 格式:DOCX 页数:44 大小:45.10KB
下载 相关 举报
java解析并且操作excel 方法.docx_第1页
第1页 / 共44页
java解析并且操作excel 方法.docx_第2页
第2页 / 共44页
java解析并且操作excel 方法.docx_第3页
第3页 / 共44页
java解析并且操作excel 方法.docx_第4页
第4页 / 共44页
java解析并且操作excel 方法.docx_第5页
第5页 / 共44页
java解析并且操作excel 方法.docx_第6页
第6页 / 共44页
java解析并且操作excel 方法.docx_第7页
第7页 / 共44页
java解析并且操作excel 方法.docx_第8页
第8页 / 共44页
java解析并且操作excel 方法.docx_第9页
第9页 / 共44页
java解析并且操作excel 方法.docx_第10页
第10页 / 共44页
java解析并且操作excel 方法.docx_第11页
第11页 / 共44页
java解析并且操作excel 方法.docx_第12页
第12页 / 共44页
java解析并且操作excel 方法.docx_第13页
第13页 / 共44页
java解析并且操作excel 方法.docx_第14页
第14页 / 共44页
java解析并且操作excel 方法.docx_第15页
第15页 / 共44页
java解析并且操作excel 方法.docx_第16页
第16页 / 共44页
java解析并且操作excel 方法.docx_第17页
第17页 / 共44页
java解析并且操作excel 方法.docx_第18页
第18页 / 共44页
java解析并且操作excel 方法.docx_第19页
第19页 / 共44页
java解析并且操作excel 方法.docx_第20页
第20页 / 共44页
亲,该文档总共44页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

java解析并且操作excel 方法.docx

《java解析并且操作excel 方法.docx》由会员分享,可在线阅读,更多相关《java解析并且操作excel 方法.docx(44页珍藏版)》请在冰点文库上搜索。

java解析并且操作excel 方法.docx

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;i<10;i++){

for(intj=0;j<5;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{

//用模板文件构造poi

POIFSFileSystemfs=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;s

//得到数组实例

styleArray[s]=templatewb.createCellStyle();

}

//循环对每一个单元格进行赋值

//定位行

for(introwId=1;rowId

//依次取第rowId行数据每一个数据是valueList

ListvalueList=(List)dataList.get(rowId-1);

//定位列

for(intcolumnId=0;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);

//设置值统一为String

cell.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;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;i<10;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!

!

!

");

}

}

=================摘要=====================

java如何操作Excel(数据导入导出)(转)

jxl.jar,可以到

一.读取Excel文件内容

java代码

/**读取Excel文件的内容

*@paramfile待读取的文件

*@return

*/

publicstaticStringreadExcel(Filefile){

StringBuffersb=newStringBuffer();

Workbookwb=null;

try{

//构造Workbook(工作薄)对象

wb=Workbook.getWorkbook(file);

}catch(BiffExceptione){

e.printStackTrace();

}catch(IOExceptione){

e.printStackTrace();

}

if(wb==null)

returnnull;

//获得了Workbook对象之后,就可以通过它得到Sheet(工作表)对象了

Sheet[]sheet=wb.getSheets();

if(sheet!

=null&&sheet.length>0){

//对每个工作表进行循环

for(inti=0;i

//得到当前工作表的行数

introwNum=sheet[i].getRows();

for(intj=0;j

//得到当前行的所有单元格

Cell[]cells=sheet[i].getRow(j);

if(cells!

=null&&cells.length>0){

//对每个单元格进行循环

for(intk=0;k

//读取当前单元格的值

StringcellValue=cells[k].getContents();

sb.append(cellValue+"\t");

}

}

sb.append("\r\n");

}

sb.append("\r\n");

}

}

//最后关闭资源,释放内存

wb.close();

returnsb.toString();

}

二.写入Excel文件

这里有很多格式了,比如文本内容加粗,加上某些颜色等,可以参考jxl的api.

同时还推荐一篇不错的文章:

java代码

/**生成一个Excel文件

*@paramfileName要生成的Excel文件名

*/

publicstaticvoidwriteExcel(StringfileName){

WritableWorkbookwwb=null;

try{

//首先要使用Workbook类的工厂方法创建一个可写入的工作薄(Workbook)对象

wwb=Workbook.createWorkbook(newFile(fileName));

}catch(IOExceptione){

e.printStackTrace();

}

if(wwb!

=null){

//创建一个可写入的工作表

//Workbook的createSheet方法有两个参数,第一个是工作表的名称,第二个是工作表在工作薄中的位置

WritableSheetws=wwb.createSheet("sheet1",0);

//下面开始添加单元格

for(inti=0;i<10;i++){

for(intj=0;j<5;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文件中查找是否包含某一个关键字

java代码

/**搜索某一个文件中是否包含某个关键字

*@paramfile待搜索的文件

*@paramkeyWord要搜索的关键字

*@return

*/

publicstaticbooleansearchKeyWord(Filefile,StringkeyWord){

booleanres=false;

Workbookwb=null;

try{

//构造Workbook(工作薄)对象

wb=Workbook.getWorkbook(file);

}catch(BiffExceptione){

returnres;

}catch(IOExceptione){

returnres;

}

if(wb==null)

returnres;

//获得了Workbook对象之后,就可以通过它得到Sheet(工作表)对象了

Sheet[]sheet=wb.getSheets();

booleanbreakSheet=false;

if(sheet!

=null&&sheet.length>0){

//对每个工作表进行循环

for(inti=0;i

if(breakSheet)

break;

//得到当前工作表的行数

introwNum=sheet[i].getRows();

booleanbreakRow=false;

for(intj=0;j

if(breakRow)

break;

//得到当前行的所有单元格

Cell[]cells=sheet[i].getRow(j);

if(cells!

=null&&cells.length>0){

booleanbreakCell=false;

//对每个单元格进行循环

for(intk=0;k

if(breakCell)

break;

//读取当前单元格的值

StringcellValue=cells[k].getContents();

if(cellValue==null)

continue;

if(cellValue.contains(keyWord)){

res=true;

breakCell=true;

breakRow=true;

breakSheet=true;

}

}

}

}

}

}

//最后关闭资源,释放内存

wb.close();

returnres;

}

四.往Excel中插入图片图标

插入图片的实现很容易,参看以下代码:

java代码

/**往Excel中插入图片

*@paramdataSheet待插入的工作表

*@paramcol图片从该列开始

*@paramrow图片从该行开始

*@paramwidth图片所占的列数

*@paramheight图片所占的行数

*@paramimgFile要插入的图片文件

*/

publicstaticvoidinsertImg(WritableSheetdataSheet,intcol,introw,intwidth,

intheight,FileimgFile){

WritableImageimg=newWritableImage(col,row,width,height,imgFile);

dataSheet.addImage(img);

}

以上代码的注释已经很清楚了,大概也就不用再解释了,我们可以用如下程序验证:

java代码

try{

//创建一个工作薄

WritableWorkbookworkbook=Workbook.createWorkbook(newFile("D:

/test1.xls"));

//待插入的工作表

WritableSheetimgSheet=workbook.createSheet("Images",0);

//要插入的图片文件

FileimgFile=newFile("D:

/1.png");

//图片插入到第二行第一个单元格,长宽各占六个单元格

ins

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > PPT模板 > 商务科技

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2