博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java poi reader常用API汇总
阅读量:5921 次
发布时间:2019-06-19

本文共 4259 字,大约阅读时间需要 14 分钟。

 注意:

(1)判断行的最大数量建议使用sheet.getLastRowNum();
(2)判断每行最大列数建议使用row.getLastCellNum();

【JAVA】特别注意,POI中getLastRowNum() 和getLastCellNum()的区别hssfSheet.getLastRowNum();//最后一行的下标,编号从0开始,即比行数小1。如果sheet中一行数据都没有,则返回-1,只有第一行有数据时,返回0hssfSheet.getRow(k).getLastCellNum();//获取列数,比最后一列列标大1.如果row中一列数据都没有,则返回-1,只有第一列有数据时,返回1

getLastRowNum()获取的是最后一行的编号(编号从0开始)。

int ......getLastRowNum()

Gets the last row on the sheet

Returns: last row contained in this sheet (0-based)

 

getPhysicalNumberOfRows  获取有记录的行数,即:最后有数据的行是第n行,前面有m行是空行没数据,则返回n-m;getPhysicalNumberOfCells   获取有记录的列数,即:最后有数据的列是第n列,前面有m列是空列没数据,则返回n-m;

getPhysicalNumberOfRows()获取的是物理行数,也就是不包括那些空行(隔行)的情况。

int ......getPhysicalNumberOfRows()

Returns the number of physically defined rows (NOT the number of rows in the sheet)

 

java使用poi解析或处理excel的时候,如何防止数字变成科学计数法的形式当使用POI处理excel的时候,遇到了比较长的数字,虽然excel里面设置该单元格是文本类型的,但是POI的cell的类型就会变成数字类型。 而且无论数字是否小数,使用cell.getNumbericCellValue() 去获取值的时候,会得到一个double,而且当长度大一点的时候会变成科学计数法形式。 那么获取这个单元格的原始的数据,就其实是一个double怎么转换成整数的问题了。 使用DecimalFormat对这个double进行了格式话,随后使用format方法获得的String就是你想要的值了。 DecimalFormat df = new DecimalFormat("0");  String whatYourWant = df.format(cell.getNumericCellValue());

 

单元格内容换行:

Java利用POI生成Excel强制换行
1. 首先在需要强制换行的单元格里使用poi的样式,并且把样式设定为自动换行

HSSFCellStyle cellStyle=workbook.createCellStyle();       cellStyle.setWrapText(true);       cell.setCellStyle(cellStyle); 

2. 其次是在需要强制换行的单元格,使用/就可以实再强制换行

换行用"\r\n",和文本分开

HSSFCell cell = row.createCell((short)0);    cell.setCellStyle(cellStyle);                           cell.setCellValue(new HSSFRichTextString("hello/r/n world!"));

 

 

public class ImportExcel {        private static Logger log = LoggerFactory.getLogger(ImportExcel.class);                /**     * 工作薄对象     **/    private Workbook wb;        /**     * 工作表对象     **/    private Sheet sheet;        /**     * 标题行号     */    private int headerNum;        /**     * 构造函数     * @param path 导入文件,读取第1个工作表     * @param headerNum 标题行号,数据行等于标题行号+1     * @throws InvalidFormatException      * @throws IOException      */    public ImportExcel(String fileName, int headerNum)             throws InvalidFormatException, IOException {        this(new File(fileName), headerNum);    }        /**     * 构造函数     * @param path 导入文件对象,读取第1个工作表     * @param headerNum 标题行号,数据行等于标题行号+1     * @throws InvalidFormatException      * @throws IOException      */    public ImportExcel(File file, int headerNum)             throws InvalidFormatException, IOException {        this(file, headerNum, 0);    }    /**     * 构造函数     * @param path 导入文件     * @param headerNum 标题行号,数据行等于标题行号+1     * @param sheetIndex 工作表编号,以0开始     * @throws InvalidFormatException      * @throws IOException      */    public ImportExcel(String fileName, int headerNum, int sheetIndex)             throws InvalidFormatException, IOException {        this(new File(fileName), headerNum, sheetIndex);    }        /**     * 构造函数     * @param path 导入文件对象     * @param headerNum 标题行号,数据行等于标题行号+1     * @param sheetIndex 工作表编号,以0开始、     * @throws InvalidFormatException      * @throws IOException      */    public ImportExcel(File file, int headerNum, int sheetIndex)             throws InvalidFormatException, IOException {        this(file.getName(), new FileInputStream(file), headerNum, sheetIndex);    }        /**     * 构造函数     * @param file 导入文件对象     * @param headerNum 标题行号,数据行等于标题行号+1     * @param sheetIndex 工作表编号,以0开始、      * @throws InvalidFormatException      * @throws IOException      */    /**     * 构造函数     * @param path 导入文件对象     * @param headerNum 标题行号,数据行等于标题行号+1     * @param sheetIndex 工作表编号,以0开始、     * @throws InvalidFormatException      * @throws IOException      */    public ImportExcel(String fileName, InputStream is, int headerNum, int sheetIndex)             throws InvalidFormatException, IOException {        if (StringUtils.isBlank(fileName)){            throw new RuntimeException("导入文档为空!");        }else if(fileName.toLowerCase().endsWith("xls")){                this.wb = new HSSFWorkbook(is);            }else if(fileName.toLowerCase().endsWith("xlsx")){              this.wb = new XSSFWorkbook(is);        }else{              throw new RuntimeException("文档格式不正确?");        }          if (this.wb.getNumberOfSheets()

 

转载于:https://www.cnblogs.com/softidea/p/3746723.html

你可能感兴趣的文章
[cb]扩展Hierarchy 添加二级菜单
查看>>
MVC验证01-基础、远程验证
查看>>
Flash中的文本应用
查看>>
WCF:如何将net.tcp协议寄宿到IIS
查看>>
基于MVC4+EasyUI的Web开发框架经验总结(7)--实现省份、城市、行政区三者联动...
查看>>
通过tarball形式安装HBASE Cluster(CDH5.0.2)——如何配置分布式集群中的zookeeper
查看>>
亿级数据的高并发通用搜索引擎架构设计(转-张宴)
查看>>
CircleImageManager——圆形 / 圆角图片的工具类
查看>>
C语言 小游戏之贪吃蛇
查看>>
康师傅
查看>>
Tokumx 安装指南(做法如同MongoDB)
查看>>
前端收集
查看>>
Unity3D研究院之IOS本地消息通知LocalNotification的使用(六十七)
查看>>
Android判断App是否在前台运行(转)
查看>>
【原】MyEclipse8.5集成Tomcat7时启动错误:Exception in thread “main” java.lang.NoClassDefFoundError...
查看>>
指针数组/数组指针
查看>>
JAVA 的wait(), notify()与synchronized同步机制
查看>>
图的连通性问题专题整理
查看>>
MVC利用MvcHtmlString在后台生成HTML
查看>>
理财一年原创工具
查看>>