poi中文api文档

POI中文API文档
一、 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 plaincopyprint?

POIFSFileSystem fs=newPOIFSFileSystem(new FileInputStream("d:/test.xls"));   
//得到Excel工作簿对象    
HSSFWorkbook wb = new HSSFWorkbook(fs);  
//得到Excel工作表对象    
HSSFSheet sheet = wb.getSheetAt(0);   
//得到Excel工作表的行    
HSSFRow row = sheet.getRow(i);  
//得到Excel工作表指定行的单元格    
HSSFCell cell = row.getCell((short) j);  
cellStyle = cell.getCellStyle();//得到单元格样式  

2、建立Excel常用对象

[c-sharp] view plaincopyprint?

HSSFWorkbook wb = new HSSFWorkbook();//创建Excel工作簿对象   
HSSFSheet sheet = wb.createSheet("new sheet");//创建Excel工作表对象     
HSSFRow row = sheet.createRow((short)0); //创建Excel工作表的行   
cellStyle = wb.createCellStyle();//创建单元格样式   
row.createCell((short)0).setCellStyle(cellStyle); //创建Excel工作表指定行的单元格   
row.createCell((short)0).setCellValue(1); //设置Excel工作表的值  

3、设置sheet名称和单元格内容

[c-sharp] view plaincopyprint?

wb.setSheetName(1, "第一张工作表",HSSFCell.ENCODING_UTF_16);          
cell.setEncoding((short) 1);      
cell.setCellValue("单元格内容");  

4、取得sheet的数目

[c-sharp] view plaincopyprint?

wb.getNumberOfSheets()   

5、 根据index取得sheet对象

[c-sharp] view plaincopyprint?

HSSFSheet sheet = wb.getSheetAt(0);  

6、取得有效的行数

[c-sharp] view plaincopyprint?

int rowcount = sheet.getLastRowNum();  

7、取得一行的有效单元格个数

[c-sharp] view plaincopyprint?

row.getLastCellNum();  

8、单元格值类型读写

[c-sharp] view plaincopyprint?

cell.setCellType(HSSFCell.CELL_TYPE_STRING); //设置单元格为STRING类型   
cell.getNumericCellValue();//读取为数值类型的单元格内容  

9、设置列宽、行高

[c-sharp] view plaincopyprint?

sheet.setColumnWidth((short)column,(short)width);      
row.setHeight((short)height);    

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

[c-sharp] view plaincopyprint?

Region region = new Region((short)rowFrom,(short)columnFrom,(short)rowTo  
,(short)columnTo);//合并从第rowFrom行columnFrom列   
sheet.addMergedRegion(region);// 到rowTo行columnTo的区域      
//得到所有区域       
sheet.getNumMergedRegions()  

11、保存Excel文件

[c-sharp] view plaincopyprint?

FileOutputStream fileOut = new FileOutputStream(path);   
wb.write(fileOut); 

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

[c-sharp] view plaincopyprint?

public String getCellStringValue(HSSFCell cell) {      String cellValue = "";      switch (cell.getCellType()) {      case HSSFCell.CELL_TYPE_STRING://字符串类型   cellValue = cell.getStringCellValue();      if(cellValue.trim().equals("")||cellValue.trim().length()<=0)      cellValue=" ";      break;      case HSSFCell.CELL_TYPE_NUMERIC: //数值类型   cellValue = String.valueOf(cell.getNumericCellValue());      break;      case HSSFCell.CELL_TYPE_FORMULA: //公式   cell.setCellType(HSSFCell.CELL_TYPE_NUMERIC);      cellValue = String.valueOf(cell.getNumericCellValue());      break;      case HSSFCell.CELL_TYPE_BLANK:      cellValue=" ";      break;      case HSSFCell.CELL_TYPE_BOOLEAN:      break;      case HSSFCell.CELL_TYPE_ERROR:      break;      default:      break;      }      return cellValue;      }     

13、常用单元格边框格式

[c-sharp] view plaincopyprint?

HSSFCellStyle style = wb.createCellStyle();      
style.setBorderBottom(HSSFCellStyle.BORDER_DOTTED);//下边框        
style.setBorderLeft(HSSFCellStyle.BORDER_DOTTED);//左边框        
style.setBorderRight(HSSFCellStyle.BORDER_THIN);//右边框        
style.setBorderTop(HSSFCellStyle.BORDER_THIN);//上边框

14、设置字体和内容位置

[c-sharp] view plaincopyprint?

HSSFFont f  = wb.createFont();      
f.setFontHeightInPoints((short) 11);//字号       
f.setBoldweight(HSSFFont.BOLDWEIGHT_NORMAL);//加粗       
style.setFont(f);      
style.setAlignment(HSSFCellStyle.ALIGN_CENTER);//左右居中       
style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);//上下居中       
style.setRotation(short rotation);//单元格内容的旋转的角度       
HSSFDataFormat df = wb.createDataFormat();      
style1.setDataFormat(df.getFormat("0.00%"));//设置单元格数据格式       
cell.setCellFormula(string);//给单元格设公式       
style.setRotation(short rotation);//单元格内容的旋转的角度 

15、插入图片

[c-sharp] view plaincopyprint?

//先把读进来的图片放到一个ByteArrayOutputStream中,以便产生ByteArray       ByteArrayOutputStream byteArrayOut = new ByteArrayOutputStream();      BufferedImage bufferImg = ImageIO.read(new File("ok.jpg"));      ImageIO.write(bufferImg,"jpg",byteArrayOut);      
//读进一个excel模版       
FileInputStream fos = new FileInputStream(filePathName+"/stencil.xlt");       
fs = new POIFSFileSystem(fos);      
//创建一个工作薄       
HSSFWorkbook wb = new HSSFWorkbook(fs);      
HSSFSheet sheet = wb.getSheetAt(0);      
HSSFPatriarch patriarch = sheet.createDrawingPatriarch();      
HSSFClientAnchor anchor = new HSSFClientAnchor(0,0,1023,255,(short) 0,0,(short)10,10);           
patriarch.createPicture(anchor , wb.addPicture(byteArrayOut.toByteArray(),HSSFWorkbook.PICTURE_TYPE_JPEG));  

16、调整工作表位置

[c-sharp] view plaincopyprint?

HSSFWorkbook wb = new HSSFWorkbook();     
HSSFSheet sheet = wb.createSheet("format sheet");     
HSSFPrintSetup ps = sheet.getPrintSetup();     
sheet.setAutobreaks(true);     
ps.setFitHeight((short)1);     
ps.setFitWidth((short)1);   

17、设置打印区域

[c-sharp] view plaincopyprint?

HSSFSheet sheet = wb.createSheet("Sheet1");     
wb.setPrintArea(0, "$A$1:$C$2");    

18、标注脚注

[c-sharp] view plaincopyprint?

HSSFSheet sheet = wb.createSheet("format sheet");     
HSSFFooter footer = sheet.getFooter()     
footer.setRight( "Page " + HSSFFooter.page() + " of " + HSSFFooter.numPages() );   

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

[c-sharp] view plaincopyprint?

HSSFWorkbook wb = new HSSFWorkbook();     
HSSFSheet sheet = wb.createSheet("row sheet");     
// Create various cells and rows for spreadsheet.      
// Shift rows 6 - 11 on the spreadsheet to the top (rows 0 - 5)      
sheet.shiftRows(5, 10, -5);    

20、选中指定的工作表

[c-sharp] view plaincopyprint?

HSSFSheet sheet = wb.createSheet("row sheet");     
heet.setSelected(true);     

21、工作表的放大缩小

[c-sharp] view plaincopyprint?

HSSFSheet sheet1 = wb.createSheet("new sheet");     
sheet1.setZoom(1,2);   // 50 percent magnification    

22、头注和脚注

[c-sharp] view plaincopyprint?

HSSFSheet sheet = wb.createSheet("new sheet");     
HSSFHeader header = sheet.getHeader();     
header.setCenter("Center Header");     
header.setLeft("Left Header");     
header.setRight(HSSFHeader.font("Stencil-Normal", "Italic") +     
HSSFHeader.fontSize((short) 16) + "Right w/ Stencil-Normal Italic font and size 16");  

23、自定义颜色

[c-sharp] view plaincopyprint?

HSSFCellStyle style = wb.createCellStyle();     
style.setFillForegroundColor(HSSFColor.LIME.index);     
style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);     
HSSFFont font = wb.createFont();     
font.setColor(HSSFColor.RED.index);     
style.setFont(font);     
cell.setCellStyle(style);     

24、填充和颜色设置

[c-sharp] view plaincopyprint?

HSSFCellStyle style = wb.createCellStyle();     
style.setFillBackgroundColor(HSSFColor.AQUA.index);     
style.setFillPattern(HSSFCellStyle.BIG_SPOTS);     
HSSFCell cell = row.createCell((short) 1);     
cell.setCellValue("X");     
style = wb.createCellStyle();     
style.setFillForegroundColor(HSSFColor.ORANGE.index);     
style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);     
cell.setCellStyle(style);   

25、强行刷新单元格公式

[c-sharp] view plaincopyprint?

HSSFFormulaEvaluator eval=new HSSFFormulaEvaluator((HSSFWorkbook) wb);    
private static void updateFormula(Workbook wb,Sheet s,int row){     Row r=s.getRow(row);     Cell c=null;     FormulaEcaluator eval=null;     if(wb instanceof HSSFWorkbook)     eval=new HSSFFormulaEvaluator((HSSFWorkbook) wb);     else if(wb instanceof XSSFWorkbook)     eval=new XSSFFormulaEvaluator((XSSFWorkbook) wb);     for(int i=r.getFirstCellNum();ic=r.getCell(i);     if(c.getCellType()==Cell.CELL_TYPE_FORMULA)     eval.evaluateFormulaCell(c);     }     }    

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

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

——————————————-poi 方法总结——————————————————————-

-.设置不显示excel网格线
sheet.setDisplayGridlines(false);其中sheet是Sheet对象
2.设置excel单元格中的内容换行
cellStyle.setWrapText(true);其中cellStyle是WorkBook创建的CellStyle对象,然后将cellStyle设置到要换行的Cell对象,最后在要换行的对象(一般为字符串)加入”/r/n”。如
topTile.append(“/r/n” +”cellContent”);

3.单元格的合并
sheet.addMergedRegion(new CellRangeAddress(0, 4, 0, 2));本示例为合并4行2列

4.设置页眉和页脚的页数
HSSFHeader header = sheet.getHeader();
header.setCenter(“Center Header”);
header.setLeft(“Left Header”);
header.setRight(HSSFHeader.font(“Stencil-Normal”, “Italic”) +
HSSFHeader.fontSize((short) 16) + “Right w/ Stencil-Normal Italic font and size 16”);

HSSFFooter footer = (HSSFFooter )sheet.getFooter()
footer.setRight( “Page ” + HSSFFooter.page() + ” of ” + HSSFFooter.numPages() );

5.使得一个Sheet适合一页
sheet.setAutobreaks(true);
6.设置放大属性(Zoom被明确为一个分数,例如下面的75%使用3作为分子,4作为分母)
sheet.setZoom(3,4);

7.设置打印
HSSFPrintSetup print = (HSSFPrintSetup) sheet.getPrintSetup();
print.setLandscape(true);//设置横向打印
print.setScale((short) 70);//设置打印缩放70%
print.setPaperSize(HSSFPrintSetup.A4_PAPERSIZE);//设置为A4纸张
print.setLeftToRight(true);//設置打印顺序先行后列,默认为先列行
print.setFitHeight((short) 10);设置缩放调整为10页高
print.setFitWidth((short) 10);设置缩放调整为宽高

sheet.setAutobreaks(false);
if (i != 0 && i % 30 == 0)
sheet.setRowBreak(i);//設置每30行分頁打印

8.反复的行和列(设置打印标题)
HSSFWorkbook wb = new HSSFWorkbook();
wb.setRepeatingRowsAndColumns(0, 0, 12, 1, 6);//设置1到12列,行1到6每一页重复打印

9.调整单元格宽度
  sheet.setAutobreaks(true);
  sheet.setColumnWidth((short)i,colsWidth[i]); //设定单元格长度
sheet.autoSizeColumn((short) i);//自动根据长度调整单元格长度

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/331089.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

聊聊MyBatis缓存机制

转载自 聊聊MyBatis缓存机制前言MyBatis是常见的Java数据库访问层框架。在日常工作中&#xff0c;开发人员多数情况下是使用MyBatis的默认缓存配置&#xff0c;但是MyBatis缓存机制有一些不足之处&#xff0c;在使用中容易引起脏数据&#xff0c;形成一些潜在的隐患。个人在业务…

maven(6)仓库

【0】README1&#xff09;本文部分文字转自 “maven实战”&#xff0c;旨在 review “maven(6)仓库” 的相关知识&#xff1b; 【1】何为 Maven仓库1&#xff09;intro to 构件&#xff1a;在maven中&#xff0c;任何一个依赖&#xff0c;插件或者项目构建的输出&#xff0c;都…

防止用户重复提交表单数据,session方式,js方式

1. 使用session的方式创建Token令牌解决 创建一个生成令牌的工具类&#xff0c;在该类中有返回类的对象&#xff0c;生成token的方法public class TokenUtil {/**单例设计模式&#xff08;保证类的对象在内存中只有一个&#xff09;*1、把类的构造函数私有*2、自己创建一个类的…

mybatis_user_guide(3)XML配置

【-1】README1&#xff09;本文全文总结于 http://www.mybatis.org/mybatis-3/zh/configuration.html#environments【0】MyBatis 的配置文件包含了影响 MyBatis 行为甚深的设置&#xff08;settings&#xff09;和属性&#xff08;properties&#xff09;信息。文档的顶层结构如…

easyUI 运用窗口和form表单制作导出功能

这里运用到easyUI的窗口模式和form表单的提交制作一个有条件的导出excel数据统计的功能&#xff0c;主要是知道了怎么运用easyUI的窗口和表单 jsp中&#xff1a;<!-- 导出数据来源条件窗口 --><div id"exportSign" ><form id"condition" me…

分布式一致性算法:可能比你想象得更复杂

转载自 分布式一致性算法&#xff1a;可能比你想象得更复杂分布式系统的难题张大胖遇到了一个难题。他们公司的有个服务器&#xff0c;上面保存着宝贵的数据&#xff0c;领导Bill 为了防止它挂掉&#xff0c; 要求张大胖想想办法把数据做备份。张大胖发挥了抽象的能力&#xff…

mybatis_user_guide(4) Mapper XML 文件

【-1】README 1&#xff09;本文全文总结于 http://www.mybatis.org/mybatis-3/zh/sqlmap-xml.html【0】SQL 映射文件有很少的几个顶级元素&#xff08;按照它们应该被定义的顺序&#xff09;&#xff1a; cache – 给定命名空间的缓存配置。cache-ref – 其他命名空间缓存配置…

Hibernate关联关系配置(一对多、一对一和多对多)

第一种关联关系&#xff1a;一对多&#xff08;多对一&#xff09; “一对多”是最普遍的映射关系&#xff0c;简单来讲就如消费者与订单的关系。 一对多&#xff1a;从消费者角的度来说一个消费者可以有多个订单&#xff0c;即为一对多。 多对一&#xff1a;从订单的角度来…

3分钟了解“关联规则”推荐

转载自 3分钟了解“关联规则”推荐 “把啤酒放在尿布旁&#xff0c;有助于提升啤酒销售量”是关联规则推荐的经典案例&#xff0c;今天&#xff0c;和大家聊聊“关联规则推荐”&#xff0c;正文不含任何公式&#xff0c;保证PM弄懂。一、概念 什么是关联规则&#xff08;Associ…

mybatis_user_guide(5) 动态 SQL

【-1】README 1&#xff09;本文全文总结于 http://www.mybatis.org/mybatis-3/zh/dynamic-sql.html 【0】动态 SQL 元素和使用 JSTL 或其他类似基于 XML 的文本处理器相似。在 MyBatis 之前的版本中,有很多的元素需要来了解。MyBatis 3 大大提升了它们,现在用不到原先一半的元…

sqlserver还原差异备份

因为之前遇到还原差异备份&#xff0c;最开始遇到SQLServer报错&#xff1a;”无法还原日志备份或差异备份&#xff0c;因为没有文件可用于前滚“。查阅很多资料后&#xff0c;终于得到解决。收集整理成这篇随笔。   问题原因&#xff1a;出现这种错误绝大多数是因为还原完整…

1分钟了解相似性推荐

转载自 1分钟了解相似性推荐前几天聊的“协同过滤&#xff08;Collaborative Filtering&#xff09;”和“基于内容的推荐&#xff08;Content-based Recommendation&#xff09;”&#xff0c;都必须分析用户的历史行为数据&#xff08;例如电影点击数据&#xff0c;职位查看数…

mybatis_user_guide(6) Java API

【0】README1&#xff09;本文全文总结于 http://www.mybatis.org/mybatis-3/zh/java-api.html【1】SqlSessions1)intro&#xff1a; 我们知道&#xff0c; SqlSessionFactoryBuilder 创建 SqlSessionFactory &#xff0c; SqlSessionFactory 创建 SqlSession&#xff0c;然后…

hibernate左连接查询时在easyUI的dataGrid中有些行取值为空的解决办法

1 当使用left join左连连接&#xff0c;sql语句为 select t from SecondPage t left join t.rightNavbar n where 11 页面中出现了部分空行的情况&#xff0c;上述语句返回的list集合为 DataGrid dataGrid new DataGrid(); List<SecondPage> listsecondPageDao.find(…

1分钟了解基于内容的推荐,pm又懂了

转载自 1分钟了解基于内容的推荐&#xff0c;pm又懂了什么是基于内容的推荐&#xff08;Content-based Recommendation&#xff09;&#xff1f; 答&#xff1a;通过用户历史感兴趣的信息&#xff0c;抽象信息内容共性&#xff0c;根据内容共性推荐其他信息。比如&#xff0c;如…

mybatis_user_guide(7) SQL语句构建器类

【0】README1&#xff09;本文全文总结于 http://www.mybatis.org/mybatis-3/zh/statement-builders.html【1】在Java代码中来动态生成SQL代码就是一场噩梦1&#xff09;problemsolutions&#xff1a;1.1&#xff09;problem&#xff1a;Java程序员面对的最痛苦的事情之一就是…

datagrid获取页面总记录数的方法,datagrid获取页面总记录数为0的解决方法

1 在网上查了一大堆博客&#xff0c;都只有下面这一段&#xff0c;也不知道这些人有没有测试 var data$(#tt).datagrid(getData); alert(总数据量:data.total)//注意你的数据源一定要定义了total&#xff0c;要不会为undefined&#xff0c;datagrid分页就是靠这个total定义 al…

1分钟了解协同过滤,pm都懂了

转载自 1分钟了解协同过滤&#xff0c;pm都懂了工程架构方向的程序员&#xff0c;看到推荐/搜索/广告等和算法相关的技术&#xff0c;心中或多或少有一丝胆怯。但认真研究之后&#xff0c;发现其实没有这么难。今天的1分钟系列&#xff0c;给大家介绍下推荐系统中的“协同过滤”…

mybatis_user_guide(8) 日志

【0】README 1&#xff09;本文全文总结于 http://www.mybatis.org/mybatis-3/zh/logging.html 2&#xff09;Mybatis内置的日志工厂提供日志功能&#xff0c;具体的日志实现有以下几种工具&#xff1a; SLF4JApache Commons LoggingLog4j 2Log4jJDK logging 3&#xff09;具体…

hibernate在saveOrUpdate时,update报错:a different object with the same identifier value was already assoc

1 原因&#xff1a;网上说是&#xff0c;在hibernate中同一个session里面有了两个相同标识但是是不同实体。 2 我找出的解决方法是&#xff1a; getSession().clear(); //在dao层把session清理一下 3 网上查找出还有其他解决方法&#xff0c;其中 getSession().merge(arg0…