第一句子网 - 唯美句子、句子迷、好句子大全
第一句子网 > java读写Excel文件 合并单元格

java读写Excel文件 合并单元格

时间:2021-06-06 20:02:08

相关推荐

java读写Excel文件 合并单元格

【转载】/s/blog_69444830lxbe.html

利用java操作Excel,有个开源的东东-jxl.jar,可以到/project/showfiles.php?group_id=79926下载。

一.读取Excel文件内容

java 代码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,同时还推荐一篇不错的文章:/developerworks/cn/java/l-javaExcel/?ca=j-t10

java 代码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 代码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;iif(breakSheet)break;//得到当前工作表的行数introwNum=sheet[i].getRows();booleanbreakRow=false;for(intj=0;jif(breakRow)break;//得到当前行的所有单元格Cell[]cells=sheet[i].getRow(j);if(cells!=null&&cells.length>0){booleanbreakCell=false;//对每个单元格进行循环for(intk=0;kif(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 代码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");//图片插入到第二行第一个单元格,长宽各占六个单元格insertImg(imgSheet,0,1,6,6,imgFile);workbook.write();workbook.close();catch(IOExceptione){e.printStackTrace();catch(WriteExceptione){e.printStackTrace();

但是jxl只支持png格式的图片,jpg格式和gif格式都不支持

五.插入页眉页脚

一般的页眉页脚都分为三个部分,左,中,右三部分,利用如下代码可实现插入页眉页脚

java 代码publicstaticvoidsetHeader(WritableSheetdataSheet,Stringleft,Stringcenter,Stringright){HeaderFooterhf=newHeaderFooter();hf.getLeft().append(left);hf.getCentre().append(center);hf.getRight().append(right);//加入页眉dataSheet.getSettings().setHeader(hf);//加入页脚//dataSheet.getSettings().setFooter(hf);}

我们可以用如下代码测试该方法:

java 代码try{//创建一个工作薄WritableWorkbookworkbook=Workbook.createWorkbook(newFile("D:/test1.xls"));//待插入的工作表WritableSheetdataSheet=workbook.createSheet("加入页眉",0);ExcelUtils.setHeader(dataSheet,"chb","-03-06","第1页,共3页");workbook.write();workbook.close();}catch(IOExceptione){e.printStackTrace();}catch(WriteExceptione){e.printStackTrace();}}

合并单元格:

//首先创建一个sheet

WritableSheet sheetWrite=writeWorkbook.createSheet("sheet的名称",0);

//把单元格(column, row)到单元格(column1, row1)进行合并。

sheetWrite.mergeCells(column, row, column1, row1);

java操作excel,jxl加边框,jxl合并单元格,单元格的设置,单元

WritableCellFormat headerFormat = new WritableCellFormat(

HEADER_FONT_STYLE);

//水平居中对齐

headerFormat.setAlignment(Alignment.CENTRE);

//竖直方向居中对齐

headerFormat.setVerticalAlignment

(VerticalAlignment.CENTRE);

//建立标签,参数依次为:列索引、行索引、内容、格式

Label seqLabel = new Label(0, 0, "序号", headerFormat);

//增加单元格

sheet.addCell(seqLabel);

//合并单元格,参数依次为:列索引、行索引、列索引+需要合并

的列的个数、行索引+需要合并的行的个数

sheet.mergeCells(0, 0, 0, 1);

//设置单元格宽度,以字符为单位

sheet.setColumnView(0, "序号".length() + 10);

Label basicInfoLabel = new Label(1, 0, "基本信息",

headerFormat);

sheet.addCell(basicInfoLabel);

sheet.mergeCells(1, 0, 3, 0);//合并垮了3行。

sheet.mergeCells(1, 1, 1, 3);//合并垮了3列。

label = new Label(0, 1, "苹果”);

sheet.mergeCells(0,1, 0, 3- 1);//合并垮了3列。

WritableCellFormat cellFormat = new WritableCellFormat();

cellFormat.setVerticalAlignment(VerticalAlignment.CENTRE);

// 垂直居中

label.setCellFormat(cellFormat);

sheet.addCell(label);

注:再次使cellFormat时,需要重新NEW WritableCellFormat 。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。