POI操作Excel常用方法总结

POI操作Excel 一、什么是POI Apache POI 是一种流行的API,可以使用Java读写MS Excel文件,可以使用Java读写MS Word和MS PowerPoint文件。 POI主要模块 模块名字 描述 HSSF 提供读写Microsoft Excel XLS格式(Microsoft Excel 97 (-2003))档案的功能 XSSF 提供读写Microsoft Excel OOXML XLSX格式(Microsoft Excel XML (2007+))档案的功能 SXSSF 阅读详情

原文来自:http://blog.csdn.net/xjun15/article/details/5805429


一、 POI简介

            Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能。

二、 HSSF概况

            HSSF 是Horrible SpreadSheet Format的缩写,通过HSSF,你可以用纯Java代码来读取、写入、修改Excel文件。HSSF 为读取操作提供了两类API:usermodel和eventusermodel,即“用户模型”和“事件-用户模型”。

三、 POI EXCEL文档结构类

            HSSFWorkbook excel文档对象

            HSSFSheet excel的sheet HSSFRow excel的行

            HSSFCell excel的单元格 HSSFFont excel字体

            HSSFName 名称 HSSFDataFormat 日期格式

            HSSFHeader sheet头

            HSSFFooter sheet尾

            HSSFCellStyle cell样式

            HSSFDateUtil 日期

            HSSFPrintSetup 打印

            HSSFErrorConstants 错误信息表

四、 EXCEL常用操作方法

  1、 得到Excel常用对象           

[c-sharp]  view plain copy
  1. POIFSFileSystem fs=newPOIFSFileSystem(new FileInputStream("d:/test.xls"));   
  2. //得到Excel工作簿对象   
  3. HSSFWorkbook wb = new HSSFWorkbook(fs);  
  4. //得到Excel工作表对象   
  5. HSSFSheet sheet = wb.getSheetAt(0);   
  6. //得到Excel工作表的行   
  7. HSSFRow row = sheet.getRow(i);  
  8. //得到Excel工作表指定行的单元格   
  9. HSSFCell cell = row.getCell((short) j);  
  10. cellStyle = cell.getCellStyle();//得到单元格样式  
 2、建立Excel常用对象
[c-sharp]  view plain copy
  1. HSSFWorkbook wb = new HSSFWorkbook();//创建Excel工作簿对象  
  2. HSSFSheet sheet = wb.createSheet("new sheet");//创建Excel工作表对象    
  3. HSSFRow row = sheet.createRow((short)0); //创建Excel工作表的行  
  4. cellStyle = wb.createCellStyle();//创建单元格样式  
  5. row.createCell((short)0).setCellStyle(cellStyle); //创建Excel工作表指定行的单元格  
  6. row.createCell((short)0).setCellValue(1); //设置Excel工作表的值  
3、设置sheet名称和单元格内容
[c-sharp]  view plain copy
  1. wb.setSheetName(1, "第一张工作表",HSSFCell.ENCODING_UTF_16);          
  2. cell.setEncoding((short) 1);      
  3. cell.setCellValue("单元格内容");  
4、取得sheet的数目 
[c-sharp]  view plain copy
  1. wb.getNumberOfSheets()   
5、  index取得sheet对象
[c-sharp]  view plain copy
  1. HSSFSheet sheet = wb.getSheetAt(0);  
6、取得有效的行数
[c-sharp]  view plain copy
  1. int rowcount = sheet.getLastRowNum();  
7、取得一行的有效单元格个数
[c-sharp]  view plain copy
  1. row.getLastCellNum();    

8、单元格值类型读写

[c-sharp]  view plain copy
  1. cell.setCellType(HSSFCell.CELL_TYPE_STRING); //设置单元格为STRING类型  
  2. cell.getNumericCellValue();//读取为数值类型的单元格内容  

 

9、设置列宽、行高

[c-sharp]  view plain copy
  1. sheet.setColumnWidth((short)column,(short)width);      
  2. row.setHeight((short)height);    

 

10、添加区域,合并单元格

[c-sharp]  view plain copy
  1. Region region = new Region((short)rowFrom,(short)columnFrom,(short)rowTo  
  2. ,(short)columnTo);//合并从第rowFrom行columnFrom列  
  3. sheet.addMergedRegion(region);// 到rowTo行columnTo的区域     
  4. //得到所有区域      
  5. sheet.getNumMergedRegions()   

 

11、保存Excel文件

[c-sharp]  view plain copy
  1. FileOutputStream fileOut = new FileOutputStream(path);   
  2. wb.write(fileOut);   

 

12、根据单元格不同属性返回字符串数值

[c-sharp]  view plain copy
  1. public String getCellStringValue(HSSFCell cell) {      
  2.         String cellValue = "";      
  3.         switch (cell.getCellType()) {      
  4.         case HSSFCell.CELL_TYPE_STRING://字符串类型  
  5.             cellValue = cell.getStringCellValue();      
  6.             if(cellValue.trim().equals("")||cellValue.trim().length()<=0)      
  7.                 cellValue=" ";      
  8.             break;      
  9.         case HSSFCell.CELL_TYPE_NUMERIC: //数值类型  
  10.             cellValue = String.valueOf(cell.getNumericCellValue());      
  11.             break;      
  12.         case HSSFCell.CELL_TYPE_FORMULA: //公式  
  13.             cell.setCellType(HSSFCell.CELL_TYPE_NUMERIC);      
  14.             cellValue = String.valueOf(cell.getNumericCellValue());      
  15.             break;      
  16.         case HSSFCell.CELL_TYPE_BLANK:      
  17.             cellValue=" ";      
  18.             break;      
  19.         case HSSFCell.CELL_TYPE_BOOLEAN:      
  20.             break;      
  21.         case HSSFCell.CELL_TYPE_ERROR:      
  22.             break;      
  23.         default:      
  24.             break;      
  25.         }      
  26.         return cellValue;      
  27.     }     

 

13、常用单元格边框格式

[c-sharp]  view plain copy
  1. HSSFCellStyle style = wb.createCellStyle();      
  2. style.setBorderBottom(HSSFCellStyle.BORDER_DOTTED);//下边框       
  3. style.setBorderLeft(HSSFCellStyle.BORDER_DOTTED);//左边框       
  4. style.setBorderRight(HSSFCellStyle.BORDER_THIN);//右边框       
  5. style.setBorderTop(HSSFCellStyle.BORDER_THIN);//上边框    

 

14、设置字体和内容位置

[c-sharp]  view plain copy
  1. HSSFFont f  = wb.createFont();      
  2. f.setFontHeightInPoints((short) 11);//字号      
  3. f.setBoldweight(HSSFFont.BOLDWEIGHT_NORMAL);//加粗      
  4. style.setFont(f);      
  5. style.setAlignment(HSSFCellStyle.ALIGN_CENTER);//左右居中      
  6. style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);//上下居中      
  7. style.setRotation(short rotation);//单元格内容的旋转的角度      
  8. HSSFDataFormat df = wb.createDataFormat();      
  9. style1.setDataFormat(df.getFormat("0.00%"));//设置单元格数据格式      
  10. cell.setCellFormula(string);//给单元格设公式      
  11. style.setRotation(short rotation);//单元格内容的旋转的角度   

 

15、插入图片

[c-sharp]  view plain copy
  1. //先把读进来的图片放到一个ByteArrayOutputStream中,以便产生ByteArray      
  2.       ByteArrayOutputStream byteArrayOut = new ByteArrayOutputStream();      
  3.       BufferedImage bufferImg = ImageIO.read(new File("ok.jpg"));      
  4.       ImageIO.write(bufferImg,"jpg",byteArrayOut);      
  5. //读进一个excel模版      
  6. FileInputStream fos = new FileInputStream(filePathName+"/stencil.xlt");       
  7. fs = new POIFSFileSystem(fos);      
  8. //创建一个工作薄      
  9. HSSFWorkbook wb = new HSSFWorkbook(fs);      
  10. HSSFSheet sheet = wb.getSheetAt(0);      
  11. HSSFPatriarch patriarch = sheet.createDrawingPatriarch();      
  12. HSSFClientAnchor anchor = new HSSFClientAnchor(0,0,1023,255,(short) 0,0,(short)10,10);           
  13. patriarch.createPicture(anchor , wb.addPicture(byteArrayOut.toByteArray(),HSSFWorkbook.PICTURE_TYPE_JPEG));    

 

16、调整工作表位置

[c-sharp]  view plain copy
  1. HSSFWorkbook wb = new HSSFWorkbook();     
  2. HSSFSheet sheet = wb.createSheet("format sheet");     
  3. HSSFPrintSetup ps = sheet.getPrintSetup();     
  4. sheet.setAutobreaks(true);     
  5. ps.setFitHeight((short)1);     
  6. ps.setFitWidth((short)1);   
  

 

17、设置打印区域

[c-sharp]  view plain copy
  1. HSSFSheet sheet = wb.createSheet("Sheet1");     
  2. wb.setPrintArea(0, "$A$1:$C$2");    

 

18、标注脚注

[c-sharp]  view plain copy
  1. HSSFSheet sheet = wb.createSheet("format sheet");     
  2. HSSFFooter footer = sheet.getFooter()     
  3. footer.setRight( "Page " + HSSFFooter.page() + " of " + HSSFFooter.numPages() );   

 

19、在工作单中清空行数据,调整行位置

[c-sharp] view plaincopy
  1. HSSFWorkbook wb = new HSSFWorkbook();     
  2. HSSFSheet sheet = wb.createSheet("row sheet");     
  3. // Create various cells and rows for spreadsheet.     
  4. // Shift rows 6 - 11 on the spreadsheet to the top (rows 0 - 5)     
  5. sheet.shiftRows(5, 10, -5);    

 

20、选中指定的工作表

[c-sharp] view plaincopy
  1. HSSFSheet sheet = wb.createSheet("row sheet");     
  2. heet.setSelected(true);     

 

21、工作表的放大缩小

 

[c-sharp]  view plain copy
  1. HSSFSheet sheet1 = wb.createSheet("new sheet");     
  2. sheet1.setZoom(1,2);   // 50 percent magnification    

 

22、头注和脚注

[c-sharp]  view plain copy
  1. HSSFSheet sheet = wb.createSheet("new sheet");     
  2. HSSFHeader header = sheet.getHeader();     
  3. header.setCenter("Center Header");     
  4. header.setLeft("Left Header");     
  5. header.setRight(HSSFHeader.font("Stencil-Normal""Italic") +     
  6. HSSFHeader.fontSize((short) 16) + "Right w/ Stencil-Normal Italic font and size 16");  

 

23、自定义颜色

[c-sharp]  view plain copy
  1. HSSFCellStyle style = wb.createCellStyle();     
  2. style.setFillForegroundColor(HSSFColor.LIME.index);     
  3. style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);     
  4. HSSFFont font = wb.createFont();     
  5. font.setColor(HSSFColor.RED.index);     
  6. style.setFont(font);     
  7. cell.setCellStyle(style);     

24、填充和颜色设置

[c-sharp]  view plain copy
  1. HSSFCellStyle style = wb.createCellStyle();     
  2. style.setFillBackgroundColor(HSSFColor.AQUA.index);     
  3. style.setFillPattern(HSSFCellStyle.BIG_SPOTS);     
  4. HSSFCell cell = row.createCell((short) 1);     
  5. cell.setCellValue("X");     
  6. style = wb.createCellStyle();     
  7. style.setFillForegroundColor(HSSFColor.ORANGE.index);     
  8. style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);     
  9. cell.setCellStyle(style);   

25、强行刷新单元格公式

[c-sharp]  view plain copy
  1. HSSFFormulaEvaluator eval=new HSSFFormulaEvaluator((HSSFWorkbook) wb);    
  2. private static void updateFormula(Workbook wb,Sheet s,int row){     
  3.         Row r=s.getRow(row);     
  4.         Cell c=null;     
  5.         FormulaEcaluator eval=null;     
  6.         if(wb instanceof HSSFWorkbook)     
  7.             eval=new HSSFFormulaEvaluator((HSSFWorkbook) wb);     
  8.         else if(wb instanceof XSSFWorkbook)     
  9.             eval=new XSSFFormulaEvaluator((XSSFWorkbook) wb);     
  10.         for(int i=r.getFirstCellNum();i<r.getLastCellNum();i++){     
  11.             c=r.getCell(i);     
  12.             if(c.getCellType()==Cell.CELL_TYPE_FORMULA)     
  13.                 eval.evaluateFormulaCell(c);     
  14.         }     
  15.     }    


说明:FormulaEvaluator提供了evaluateFormulaCell(Cell cell)方法,计算公式保存结果,但不改变公式。而evaluateInCell(Cell cell) 方法是计算公式,并将原公式替换为计算结果,也就是说该单元格的类型不在是Cell.CELL_TYPE_FORMULA而是Cell.CELL_TYPE_NUMBERIC。HSSFFormulaEvaluator提供了静态方法evaluateAllFormu

laCells(HSSFWorkbook wb) ,计算一个Excel文件的所有公式,用起来很方便。 


基于smart_rtmp直播,最简单的部署手册 版本号 添加内容 修改时间 V1.0 新建 2021年12月30日 V1.1 增加网页播放 2021年12月31日 V1.2 增加是否可以多流和测试数据 2022年1月5日 目录 一、软件储备 1.推流软件:OBS 2.服务器流媒体软件:smart_rtmp 3.播放软件:Pot... 阅读详情

相关推荐

YOLOv12中的A2C2f模块详解,涉及区域注意力模块(A2)和 R-ELAN 结构详解

区域注意力模块(Area Attention, A2)的设计出发点是为了解决传统注意力机制在计算复杂度和内存访问效率上的问题。传统的自注意力机制(Self-Attention)具有二次方的计算复杂度(O(n²)),尤其是在处理高分辨率图像时,计算成本非常高。此外,注意力机制的内存访问模式不如卷积神经网络高效,导致在实际应用中难以满足实时性要求。区域注意力模块通过将特征图划分为多个区域,并在每个区域内进行注意力计算,从而显著降低了计算复杂度。

Limiiiing的博客 5459

使用poi操作excel详解

POI工具使用

qq_45887180的博客 9166

数据中心运维管理方案PPT(61页).pptx

在当今数字化时代,数据中心作为企业IT架构的核心,其运维管理的复杂性和重要性日益凸显。面对架构复杂、性能难保证、运维管理繁琐等挑战,一套科学、高效的运维管理方案显得尤为重要。本文将围绕数据中心运维管理面临的问题与挑战,以及相应的能力建设框架与演进路径进行精炼总结,旨在为读者提供一套全面、实用的运维管理指南。一、数据中心运维管理面临的问题与挑战随着IT技术的飞速发展,数据中心架构日益复杂,多厂商集成、异构环境等问题层出不穷,给运维管理带来了巨大挑战。一方面,架构复杂导致扩展困难,消除I/O瓶颈复杂度高,多厂商集成方案成本高昂且耗时;另一方面,整体性能与可用性难以保证,异构环境下的调优与可用性管理成为运维人员的噩梦。此外,运维管理本身也充满不确定性,问题诊断、升级补丁等过程复杂且不可预测,人为操作风险难以避免。更为严峻的是,来自业务的挑战不断加剧。CIO办公室对最终用户体验缺乏可见性,业务经理要求以业务语言描述IT服务水平,而客户对服务中断和性能问题则毫无耐心。IT性能指标与业务指标脱节,导致业务需求与IT管理难以实现量化对接。这些问题不仅影响了IT服务的效率和质量,更制约了企业的业务发展。二、数据中心运维管理能力建设框架为应对上述挑战,一套完善的数据中心运维管理能力建设框架应运而生。该框架从技术、人员、流程三个维度出发,构建了全面的运维管理体系。在技术层面,通过架构整合和简化,提升运营管理能力。引入Oracle IT运营能力框架模型等技术成熟度模型,分阶段推进标准化、集中与整合、虚拟化、自动化及云计算等技术的应用,实现从有感知到业务合作伙伴的跨越。同时,构建完整的平台管理,实现从应用到磁盘的资源监控,为云提供业务驱动型应用监控。在人员层面,注重人员能力与素质的提升。通过分级支持、角色定义、职业发展路径规划等措施,打造一支高效、专业的运维团队。同时,强调以流程为中心,将运维工作与HR流程相结合,建立信任的服务模式,实现预防性维护和趋势分析。在流程层面,推动运维流程的成熟与优化。从救火队模式向服务型、业务合作伙伴模式转变,实现ITIL流程的全面成熟,集成的流程以及与业务KPI的关联。通过主动端到端监控、快速定位问题、集中配置管理等手段,提升运维效率和服务质量。三、业务驱动与全生命周期管理业务驱动是数据中心运维管理的核心。通过用户体验管理、业务交易管理等手段,实时监测用户活动,优化业务响应率和转化率。同时,将业务需求与IT管理实现量化对接,以业务视角管理IT资源,创建应用感知云,适应实际业务需求。全生命周期管理则是数据中心运维管理的关键。从规划、预配、构建、测试、部署到监视、管理、计量计费及优化,实现应用程序和业务服务的全面管理。通过自动发现资源、规划整合、打包多层企业应用程序、端到端的应用程序测试等手段,提升运维管理的自动化和智能化水平。同时,注重数据保护与安全,构建实时业务数据中心,满足整个数据中心的实时数据需求。此外,全生命周期管理还强调自助式IT服务,通过基础架构即服务(IaaS)、平台即服务(PaaS)等模式,提供自由、专业的自助式控制。同时,实现服务的计量、计费和优化,提升资源利用率和成本控制能力。综上所述,数据中心运维管理方案通过构建完善的能力建设框架、推动业务驱动与全生命周期管理,有效应对了当前面临的挑战与问题。该方案不仅提升了运维管理的效率和服务质量,更为企业的业务发展提供了有力保障。在未来的发展中,随着技术的不断进步和业务的持续发展,数据中心运维管理方案将不断优化和完善,为企业创造更大的价值。

SpringBoot实战视频教程

SpringBoot实战视频培训教程,该课程由浅入深实战SpringBoot的知识体系,几乎涵盖了目前微服务项目中常见的业务模块与典型的问题实战,基于SpingBoot整合第三方依赖实战解决常见的模块与问题,如Redis,RabbitMQ,Mybatis,Poi,发送邮件,上传文件等等,学完之后,基于SpringBoot独立自主开发一个jar或者war的服务或者项目将变得得心应手。

poi实现excel文件导入导出(基本数据导出、含格式导出、含批注导出、含图片图表导出)——springboot

POI(Poor Obfuscation Implementation)是一个用于操作Microsoft Office格式文件的Java库。它提供了对Excel、Word和PowerPoint文件的读写功能,POI是一个功能强大的Java库,可以帮助开发人员在Java应用程序中处理Excel文件。无论是创建、编辑、读取还是导出数据,POI都提供了丰富的功能和灵活的接口。

qq_45778079的博客 7677

POI操作Excel常用方法总结 .

---恢复内容开始--- 一、 POI简介 Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能。二、 HSSF概况 HSSF 是Horrible SpreadSheet Format的缩写,通过HSSF,你可以用纯Java代码来读取、写入、修...

acxx2010的博客 130

poi sheet.shiftRow 方法

在工作中遇到要删除模版行,删来删去,遇到很多问题,特别是 删除合并单元格之后

1万+

使用POI实现EXcel表格的读写

POI是Apache软件基金会用Java编写的免费开源的跨平台的 Java API,Apache POI提供API给Java程序对Microsoft Office格式档案读和写的功能。POI的主要功能是可以用Java操作的相关文件,但是一般我们都是用来操作Excel相关文件。操作.xls文档操作.xlsx文档HWPF操作Word文档HSLF操作PPT文档HDGF操作VIsio文档。

wangcheng_BI的博客 2253

poi的shiftRows方法解释

sheet.shiftRows(6, 12, -5); 从第6(在excel中指第7行)行到第12(在excel中指第13行)行全部向上移5行 例如,我想把表格除了第一行以外的内容都清空 public void deleteRow(String filePath){ //只支持Excel 2007/2010 try { FileInputStream is = new FileInputStream(filePath); .

giiiig的博客 1万+

一文了解POI,再也不怕excel导入导出了

在Java日常开发过程中,实现Excel文件的导入导出功能是一项常见的需求。通过使用相关的Java库,如Apache POI、EasyPoi或EasyExcel,可以轻松地实现Excel文件的读写操作。而这篇文章将介绍如何在Java中使用Apache POI、EasyPoi 和EasyExcel库来进行Excel文件的导入和导出操作,帮助您快速掌握这一实用的技能。

再小的帆也能远航,把分享变成一种习惯 6363

POI XSSFSheet按行删除单元格

startRow起始行,endRow终止行,n为偏移量,copyRowHeight是否复制行高,resetOriginalRowHeight是否充值行高。//上移后sheet最后一行会变,重新获取一下。//最后一行的rownum。//将该行下一行至最后一行的内容上移1行,上移后会覆盖该行的数据,就达到了删除该行的结果。

simon_servlet的博客 1663
上一篇: spring事务注解
下一篇: FusionCharts 参数设置
north_easter
博客等级 码龄15年 9粉丝 1原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值