POI常用功能整理

news/2024/7/21 7:15:30 标签: POI, Java, Excel

1.读取excel文件

读取.xlsx常见方式有:

1. Workbook wb = new XSSFWorkbook(new FileInputStream(fileName));
2. Workbook wb = WorkbookFactory.create( new File(filename));

读取.xls常见的方式有:

1. Workbook wb = new HSSFWorkbook(new FileInputStream(fileName));
2. Workbook wb = WorkbookFactory.create( new File(filename));

2.新建一个workbook

HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet sheet = wb.createSheet(sheetName);
HSSFRow row = sheet.createRow(0);
HSSFCell cell = row.createCell(0);
cell.setCellValue(""); //设置单元格内容
cell.setCellStyle(cellStyle); //设置单元格风格

//将上面创建的workbook写出到excel文件,后缀为.xls
FileOutputStream output = null;
try {
	output = new FileOutputStream(filename);
	wb.write(output);
	output.flush(); 
	System.out.println("Successfullt export excel file!");
} catch (Exception e) {
	e.printStackTrace();
}finally {
	try {
		output.close();
		wb.close();
	} catch (IOException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
}

3.常用的cellstyle

//设置单元格样式
HSSFCellStyle cellStyle = wb.createCellStyle();
cellStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN); //下边框  
cellStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN);//左边框  
cellStyle.setBorderTop(HSSFCellStyle.BORDER_THIN);//上边框  
cellStyle.setBorderRight(HSSFCellStyle.BORDER_THIN);//右边框
cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 水平居中 
cellStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER); //垂直居中
cellStyle.setWrapText(true);//自动换行
cellStyle2.setFillForegroundColor(HSSFColor.RED.index); //设置背景颜色
cellStyle2.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);//设置填充格式

4.合并单元格

// 表示从【first row,firstcol】 到【lastrow,lastcol】 将这块区域合并为一个单元
// 需要注意 如果合并单元格也要有样式,可以对区域内每个单元格都设置样式,这样合并之后就不会覆盖掉样式
sheet.addMergedRegion(new CellRangeAddress(firstRow, lastRow, firstCol, lastCol));

5.获取所有子表的全部内容

public static  void showExcel() throws Exception {
        HSSFWorkbook workbook=new HSSFWorkbook(new FileInputStream(fileName));
        HSSFSheet sheet=null;
        for (int i = 0; i < workbook.getNumberOfSheets(); i++) {//获取每个Sheet表
             sheet=workbook.getSheetAt(i);
             for (int j = 0; j < sheet.getPhysicalNumberOfRows(); j++) {//获取每行
                HSSFRow row=sheet.getRow(j);
                for (int k = 0; k < row.getPhysicalNumberOfCells(); k++) {//获取每个单元格
                    System.out.print(row.getCell(k)+"\t");
                }
                System.out.println("---Sheet表"+i+"处理完毕---");
            }
    }
}

6.往现有表中添加不定量条记录

// 调用这个添加方法,一次调用添加一条
private static void insert(String info) {
	//hssf默认一张sheet只能添加65535个数据,所有需要数据量超过需要换sheet!
	if(count % 65535==0) {
		sheet = wb.createSheet();
		WriteLabel = true;
		count = 0;
	}
	
	Row r = sheet.createRow(count++);
	for(int i=0;i<17;i++) {
		Cell c = r.createCell(i);
		c.setCellValue(String.valueOf(info));
	}
}

7.注意事项

新创建生成的表,如果有创建空行,即执行了row = sheet.createRow但是没有往里面添加内容,报错以后,如果没有进行改动(人工打开生成的表格进行修改),那程序再次读取时 row!=null 但是 cell == null,因为并没有创建cell!如果有改动,再次读取时row==null !


http://www.niftyadmin.cn/n/705434.html

相关文章

质心算法(数学)

参考文章&#xff1a;《质心算法》 参考地址&#xff1a;https://wenku.baidu.com/view/2b08a1eeb8f67c1cfad6b8ef.html

Hadoop MapReduce任务的执行过程

注&#xff1a;本文注重原理介绍&#xff0c;较少涉及编程实现&#xff0c;有错误请指正&#xff0c;感谢~ 在进入正文之前需要了解这几个概念&#xff1a; HDFS&#xff1a;可以先简单理解为它是一个大型分布式的文件系统&#xff0c;里面存放了大量文件&#xff0c;也可以理…

人脸比对离线产品公司

1、颜鉴&#xff08;ColorReco&#xff09; 网址&#xff1a;http://www.colorreco.com/faceCompare 2、腾讯云 网址&#xff1a;https://cloud.tencent.com/act/event/ci_demo.html 3、讯飞开发平台 网址&#xff1a;https://www.xfyun.cn/?chbdtg 4、慧知连&#xff08;Face…

Flink的计数功能探索

探索flink计数功能&#xff0c;欢迎指正&#xff01;&#xff01; 使用场景&#xff1a;需要对经过算子处理后的DataStream中不同类型的数据进行全局统计个数&#xff08;正解见第三种&#xff09; 1.Metric 参考地址&#xff1a;https://ci.apache.org/projects/flink/flin…

人脸识别API/SDK 汇总(转)

原文地址&#xff1a;https://www.zhihu.com/question/19561362 1、face.com 以色列公司&#xff0c;某年六月时被Facebook收购&#xff0c;同时暂停了API服务&#xff0c;之前测试过他们的服务&#xff0c;基本上是了解到的应用中做得最牛的了。2、orbeOrbeus由麻省理工学院和…

如何利用llvm得到一个函数的CFG结构

1.安装llvm-5.0 安装原文&#xff1a;https://www.jianshu.com/p/861c1a630059 &#xff08;为方便查看&#xff0c;把要点复制过来了&#xff09; 准备工作 首先安装必要的软件&#xff0c;官方是使用 svn 进行版本控制的&#xff0c;我们可以通过 svn 获取其源码。安装过程中…

ubuntu如何切换默认python版本

1.找到python的位置 whereis python用这个命令找到/usr/bin下的python名称&#xff0c;比如我的是python-2.7和python3.6 2.添加python-list 将两个版本的python放置在update-alternatives中。 后面的数字表示版本的优先级 update-alternatives --install /usr/bin/python …

Map按照value排序并截取Top10

递增P>0返回正值,递减P>0返回负值 List<Map.Entry<String,Double>> listsnew ArrayList<Map.Entry<String,Double>>(map.entrySet());Collections.sort(lists,new Comparator<Map.Entry<String, Double>>() {public int compare(Ma…