ImageVerifierCode 换一换
格式:DOCX , 页数:13 ,大小:21.47KB ,
资源ID:6424374      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/6424374.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Java操作Excel.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

Java操作Excel.docx

1、Java操作Excel原帖地址:一POI简介 Jakarta POI 是apache的子项目,目标是处理ole2对象。它提供了一组操纵Windows文档的Java API 目前比较成熟的是HSSF接口,处理MS Excel(97-2002)对象。它不象我们仅仅是用csv生成的没有格式的可以由Excel转换的东西,而是真正的Excel对象,你可以控制一些属性如sheet,cell等等。 二HSSF概况 HSSF 是Horrible SpreadSheet Format的缩写,也即“讨厌的电子表格格式”。也许HSSF的名字有点滑稽,就本质而言它是一个非常严肃、正规的API。通过HSSF,你可以用纯

2、 Java代码来读取、写入、修改Excel文件。 HSSF 为读取操作提供了两类API:usermodel和eventusermodel,即“用户模型”和“事件-用户模型”。前者很好理解,后者比较抽象,但操作效率要高得多。 三开始编码 1 准备工作 要求:JDK 1.4+POI开发包 可以到 http:/www.apache.org/dyn/closer.cgi/jakarta/poi/ 最新的POI工具包 2 EXCEL 结构 HSSFWorkbook excell 文档对象介绍HSSFSheet excell的表单HSSFRow excell的行HSSFCell excell的格子单元HS

3、SFFont excell字体HSSFName 名称HSSFDataFormat 日期格式在 poi1.7中才有以下2项:HSSFHeader sheet头HSSFFooter sheet尾和这个样式HSSFCellStyle cell样式辅助操作包括HSSFDateUtil 日期HSSFPrintSetup 打印HSSFErrorConstants 错误信息表 3 具体用法实例 (采用 usermodel ) 如何读Excel 读取Excel文件时,首先生成一个POIFSFileSystem对象,由POIFSFileSystem对象构造一个 HSSFWorkbook,该HSSFWorkboo

4、k对象就代表了Excel文档。下面代码读取上面生成的Excel文件写入的消息字串: Java代码 POIFSFileSystemfs=newPOIFSFileSystem(newFileInputStream(d:test.xls); HSSFWorkbookwb=newHSSFWorkbook(fs); catch(IOExceptione) e.printStackTrace(); HSSFSheetsheet=wb.getSheetAt(0); HSSFRowrow=sheet.getRow(0); HSSFCellcell=row.getCell(short)0); Stringmsg

5、=cell.getStringCellValue(); 如何写excel, 将excel的第一个表单第一行的第一个单元格的值写成“a test”。 Java代码 POIFSFileSystemfs=newPOIFSFileSystem(newFileInputStream(workbook.xls); HSSFWorkbookwb=newHSSFWorkbook(fs); HSSFSheetsheet=wb.getSheetAt(0); HSSFRowrow=sheet.getRow(0); HSSFCellcell=row.getCell(short)0); cell.setCellValu

6、e(atest); /Writetheoutputtoafile FileOutputStreamfileOut=newFileOutputStream(workbook.xls); wb.write(fileOut); fileOut.close(); 4 可参考文档 POI 主页:http:/jakarta.apache.org/poi/ , 初学者如何快速上手使用POI HSSF http:/jakarta.apache.org/poi/hssf/quick-guide.html 。 代码例子 http:/blog.java- 里面有很多例子代码,可以很方便上手。 POI的中级应用 1、

7、遍历workbookJava代码 /load源文件 POIFSFileSystemfs=newPOIFSFileSystem(newFileInputStream(filePath); HSSFWorkbookwb=newHSSFWorkbook(fs); for(inti=0;iwb.getNumberOfSheets();i+) HSSFSheetsheet=wb.getSheetAt(i); for(inti=sheet.getFirstRowNum();isheet.getLastRowNum();i+) HSSFRowrow=sheet.getRow(i); if(row!=null

8、) 。操作 /目标文件 FileOutputStreamfos=newFileOutputStream(objectPath); /写文件 swb.write(fos); fos.close(); 2、得到列和单元格代码HSSFRow row = sheet.getRow(i); HSSFCell cell = row.getCell(short) j); 3、设置sheet名称和单元格内容为中文代码wb.setSheetName(n, 中文,HSSFCell.ENCODING_UTF_16); cell.setEncoding(short) 1); cell.setCellValue(中文)

9、; 4、单元格内容未公式或数值,可以这样读写代码cell.setCellType(HSSFCell.CELL_TYPE_NUMERIC); cell.getNumericCellValue() 5、设置列宽、行高代码sheet.setColumnWidth(short)column,(short)width); row.setHeight(short)height); 6、添加区域,合并单元格代码Region region = new Region(short)rowFrom,(short)columnFrom,(short)rowTo,(short)columnTo); sheet.addM

10、ergedRegion(region); /得到所有区域 sheet.getNumMergedRegions() 7、常用方法根据单元格不同属性返回字符串数值Java代码 publicStringgetCellStringValue(HSSFCellcell) StringcellValue=; switch(cell.getCellType() caseHSSFCell.CELL_TYPE_STRING: cellValue=cell.getStringCellValue(); if(cellValue.trim().equals()|cellValue.trim().length()=0)

11、 cellValue=; break; caseHSSFCell.CELL_TYPE_NUMERIC: cellValue=String.valueOf(cell.getNumericCellValue(); break; caseHSSFCell.CELL_TYPE_FORMULA: cell.setCellType(HSSFCell.CELL_TYPE_NUMERIC); cellValue=String.valueOf(cell.getNumericCellValue(); break; caseHSSFCell.CELL_TYPE_BLANK: cellValue=; break; c

12、aseHSSFCell.CELL_TYPE_BOOLEAN: break; caseHSSFCell.CELL_TYPE_ERROR: break; default: break; returncellValue; 8、常用单元格边框格式 虚线HSSFCellStyle.BORDER_DOTTED实线 HSSFCellStyle.BORDER_THIN代码Java代码 publicstaticHSSFCellStylegetCellStyle(shorttype) HSSFWorkbookwb=newHSSFWorkbook(); HSSFCellStylestyle=wb.createCel

13、lStyle(); style.setBorderBottom(type);/下边框 style.setBorderLeft(type);/左边框 style.setBorderRight(type);/右边框 style.setBorderTop(type);/上边框 returnstyle; 9、设置字体和内容位置 Java代码 HSSFFontf=wb.createFont(); f.setFontHeightInPoints(short)11);/字号 f.setBoldweight(HSSFFont.BOLDWEIGHT_NORMAL);/加粗 style.setFont(f); s

14、tyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);/左右居中 style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);/上下居中 style.setRotation(shortrotation);/单元格内容的旋转的角度 HSSFDataFormatdf=wb.createDataFormat(); style1.setDataFormat(df.getFormat(0.00%);/设置单元格数据格式 cell.setCellFormula(string);/给单元格设公式 style.set

15、Rotation(shortrotation);/单元格内容的旋转的角度 cell.setCellStyle(style);10、插入图片论坛里看到的 Java代码 /先把读进来的图片放到一个ByteArrayOutputStream中,以便产生ByteArray ByteArrayOutputStreambyteArrayOut=newByteArrayOutputStream(); BufferedImagebufferImg=ImageIO.read(newFile(ok.jpg); ImageIO.write(bufferImg,jpg,byteArrayOut); /读进一个exce

16、l模版 FileInputStreamfos=newFileInputStream(filePathName+/stencil.xlt); fs=newPOIFSFileSystem(fos); /创建一个工作薄 HSSFWorkbookwb=newHSSFWorkbook(fs); HSSFSheetsheet=wb.getSheetAt(0); HSSFPatriarchpatriarch=sheet.createDrawingPatriarch(); HSSFClientAnchoranchor=newHSSFClientAnchor(0,0,1023,255,(short)0,0,(s

17、hort)10,10); patriarch.createPicture(anchor,wb.addPicture(byteArrayOut.toByteArray(),HSSFWorkbook.PICTURE_TYPE_JPEG);11、设置列自动换行 HSSFCellStyle cellStyle = workbook.createCellStyle(); cellStyle.setWrapText(true); sheet.setDefaultColumnStyle(short)0, cellStyle); 设置列的宽度 sheet.setColumnWidth(short)0,(sho

18、rt)9000); sheet.setDefaultColumnStyle(short)0, cellStyle); 与 sheet.setDefaultColumnWidth(short)70);冲突 只会换行 不会设置列宽 单元格拷贝示例: Java代码 packagetestpoi; importjava.io.FileInputStream; importjava.io.FileNotFoundException; importjava.io.FileOutputStream; importjava.io.IOException; importorg.apache.poi.hssf.u

19、sermodel.HSSFCell; importorg.apache.poi.hssf.usermodel.HSSFRow; importorg.apache.poi.hssf.usermodel.HSSFSheet; importorg.apache.poi.hssf.usermodel.HSSFWorkbook; importorg.apache.poi.hssf.util.Region; importorg.apache.poi.poifs.filesystem.POIFSFileSystem; /* *将某SHEET页中的某几行复制到某SHEET页的某几行中。抱括被合并了的单元格。

20、*/publicclassRowCopy /* *paramargs *throwsIOException *throwsFileNotFoundException */SuppressWarnings(deprecation) publicstaticvoidmain(Stringargs) try POIFSFileSystemfs=newPOIFSFileSystem(newFileInputStream( d:exlsample.xls); HSSFWorkbookwb=newHSSFWorkbook(fs); /source为源sheet页,target为目标sheet页 copyR

21、ows(wb,source,target,5,6,20); FileOutputStreamfileOut=newFileOutputStream(d:exlsample.xls); wb.write(fileOut); fileOut.flush(); fileOut.close(); System.out.println(Operationfinished); catch(Exceptione) e.printStackTrace(); /* *paramwbHSSFWorkbook *parampSourceSheetName源sheet页名称 *parampTargetSheetNam

22、e目标sheet页名称 *parampStartRow源sheet页中的起始行 *parampEndRow源sheet页中的结束行 *parampPosition目标sheet页中的开始行 */publicstaticvoidcopyRows(HSSFWorkbookwb,StringpSourceSheetName, StringpTargetSheetName,intintStartRow,intintEndRow,intintPosition) /EXECL中的行是从1开始的,而POI中是从0开始的,所以这里要减1. intpStartRow=intStartRow-1; intpEnd

23、Row=intEndRow-1; intpPosition=intPosition-1; HSSFRowsourceRow=null; HSSFRowtargetRow=null; HSSFCellsourceCell=null; HSSFCelltargetCell=null; HSSFSheetsourceSheet=null; HSSFSheettargetSheet=null; Regionregion=null; intcType; inti; intj; inttargetRowFrom; inttargetRowTo; if(pStartRow=-1)|(pEndRow=-1) return; sourceSheet=wb.getSheet(pSourceSheetName); targetSheet=wb.getSheet(pTargetSheetName); System.out.println(sourceSheet.getNumMergedRegions(); /拷贝合并的单元格 for(i=0;i=pStartRow) &(region.getRowTo()=pEndRow) targetRowFrom=region.getRowFrom()-pStartRow+pPosition; targetRo

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1