poi对excel的基本读写操作
最近简单的弄了下poi对excel的应用,为方便自己以后的使用就把一些基本操作记录下来,其他更复杂的操作可以等以后有需求的时候再来深入了解一番!
写操作:
- /**
- *
- * 层次结构就是workbook-->Sheet-->Row-->Cell
- * 只要按照这种层次结构操作就不会有什么大的问题
- * @author Administrator
- *
- */
- public class Test1 {
- public static void main(String args[]) throws IOException {
- //HSSFWorkbook对应的是2003
- //XSSFWorkbook对应的是2007
- //对于03和07它们的操作都是差不多的,只是在需要用07的时候把相应的HSSF前缀改成XSSF前缀就可以了
- //第一步建一个工作簿,即workbook
- Workbook workbook = new HSSFWorkbook();
- //第二步建一个工作表单,急sheet
- Sheet sheet = workbook.createSheet("mysheet1");
- for (int i=0;i<5;i++) {
- //有了表单以后就是行Row了,
- Row row = sheet.createRow(i);
- for (int j=0;j<5;j++) {
- //有了row以后就是row上的一个个小的单元格了
- Cell cell = row.createCell(j);
- //给单元格添加内容
- cell.setCellValue("row"+(i+1)+",column"+(j+1));
- }
- }
- //建一个用于存放新建的excel的文件输出流
- OutputStream os = new FileOutputStream("file/test1.xls");
- //把形成的workbook写到一个输出流里面
- workbook.write(os);
- os.close();
- }
- }
读操作:
- public class Test4 {
- public static void main(String args[]) throws IOException {
- InputStream is = new FileInputStream("file/test1.xls");
- Workbook wb = new HSSFWorkbook(is);
- Sheet sheet = wb.getSheetAt(0);
- // 因为Row,Cell,Sheet都继承了java.lang.Iterator接口,所以可以用下面的方法来进行遍历
- for (Row row : sheet) {
- for (Cell cell : row) {
- int cellType = cell.getCellType();
- switch (cellType) {
- //在取数据的时候类型一定要取对,否则将抛出异常
- case Cell.CELL_TYPE_STRING:
- String str = cell.getRichStringCellValue().getString();
- System.out.println(str);// 对取得的数据的简单处理;
- break;
- case Cell.CELL_TYPE_BLANK:
- if (DateUtil.isCellDateFormatted(cell)) {
- System.out.println(cell.getDateCellValue());
- } else {
- System.out.println(cell.getNumericCellValue());
- }
- break;
- case Cell.CELL_TYPE_FORMULA:
- System.out.println(cell.getCellFormula());
- break;
- case Cell.CELL_TYPE_BOOLEAN:
- System.out.println(cell.getBooleanCellValue());
- break;
- default:
- System.out.println("---------------------");
- break;
- }
- }
- }
- //当然还可以这样来遍历
- //row是从1开始的,cell是从头0开始的,但是在创建的时候它们都是0-based;
- for (int i=0;i<sheet.getLastRowNum()+1;i++) {
- Row row = sheet.getRow(i);
- if (row==null)
- continue;
- for (int j=0;j<row.getLastCellNum();j++) {
- Cell cell = row.getCell(j);
- if (cell==null)
- continue;
- //在取数据的时候数据类型一定要取对,否则将抛出异常,like NumberFormatException
- System.out.println(cell.getStringCellValue());
- }
- }
- is.close();
- }
- }
合并单元格:
- public static void main(String args[]) throws IOException {
- Workbook wb = new HSSFWorkbook();
- Sheet sheet = wb.createSheet("sheet1");
- Row row = sheet.createRow(1);
- Cell cell = row.createCell(1);
- cell.setCellValue("a test of merge!");
- //执行合并操作的语句
- sheet.addMergedRegion(new CellRangeAddress(
- 1,// 开始行
- 1,// 结束行
- 1,// 开始列
- 3// 结束列
- ));
- OutputStream os = new FileOutputStream("file/test3.xls");
- wb.write(os);
- os.close();
- }
换行:
- public static void main(String args[]) throws IOException {
- Workbook wb = new HSSFWorkbook();
- Sheet sheet = wb.createSheet();
- Row row = sheet.createRow(6);
- sheet.autoSizeColumn(2);
- for (int i=0;i<5;i++) {
- Cell cell = row.createCell(i+2);
- CellStyle style = wb.createCellStyle();
- //to set cell newLine should set its wrap true
- style.setWrapText(true);
- //利用\n来实现换行操作,只有在Cell设置为setWrapText(true)的时候才能实现人为的换行
- cell.setCellValue("just use \n to wrap in a cell!");
- cell.setCellStyle(style);
- }
- OutputStream os = new FileOutputStream("file/test6_newLine.xls");
- wb.write(os);
- os.close();
- System.out.println("----------------------------");
- }
画图:
- //drawing shapes
- /*
- * To create a shape you have to go through the following steps:
- 1.Create the patriarch.
- 2.Create an anchor to position the shape on the sheet.
- 3.Ask the patriarch to create the shape.
- 4.Set the shape type (line, oval, rectangle etc...)
- 5.Set any other style details converning the shape. (eg: line thickness, etc...)
- */
- HSSFPatriarch partriarch = (HSSFPatriarch) sheet5.createDrawingPatriarch();
- HSSFSimpleShape shape = partriarch.createSimpleShape(new HSSFClientAnchor(0,0,0,0,(short)3,3,(short)5,5));
- shape.setShapeType(HSSFSimpleShape.OBJECT_TYPE_OVAL);
- //shape可以设置很多的属性
- shape.setFillColor(255,200,200);
- shape.setLineStyle(HSSFSimpleShape.LINESTYLE_DASHGEL);
- //Text boxes are created using a different call:
转载于:https://www.cnblogs.com/telwanggs/p/4933046.html
poi对excel的基本读写操作相关推荐
- 利用java poi对excel表的读写操作
2019独角兽企业重金招聘Python工程师标准>>> 利用java poi对excel表的读写操作 POI简介: Apache POI是一种流行的API,它允许程序员使用Java程 ...
- Java 使用 POI 对 Excel文件 进行读写操作
Java 使用 POI 对 Excel文件 进行读写操作 一.背景 目前正在做一个问卷功能模块,收集完问卷信息后,需要将数据库中的数据导出到Excel数据表中进行留存,因此就学习了在Java中如何对E ...
- POI和easyExcel使用(2)PoI对Excel的基本读写操作
excel有四个主要对象:工作薄.工作表.行.单元格 1.POI的写操作 创建一个maven项目,需要引入POI的一些包 <!--xls(03)--> <dependency> ...
- python sqlserver 数据操作_python对Excel数据进行读写操作
python对Excel数据进行读写操作 将学习到的基础操作记录在这里,便与复习查看 1.python读取Excel工作簿.工作表 import xlrd # 读取工作簿 wb=xlrd.open_w ...
- python对Excel数据进行读写操作
python对Excel数据进行读写操作 将学习到的基础操作记录在这里,便与复习查看 1.python读取Excel工作簿.工作表 import xlrd # 读取工作簿 wb=xlrd.open_w ...
- poi设置excel打印时分页操作
poi设置excel打印时分页操作 使用poi的Sheet对象 Workbook desWorkbook = new HSSFWorkbook();Sheet desSheet = desWorkbo ...
- qt在linux操作wps,Qt实现Excel表格的读写操作(office,WPS)
我们用QT经常会将表格的数据导入数据库或者将数据库中的数据导出为*.xls/*.xlsx.使用比较多的就是用QAxObject对象进行操作.一般首先会连接数据库: QAxObject *excel = ...
- Qt实现Excel表格的读写操作(office,WPS)
我们用QT经常会将表格的数据导入数据库或者将数据库中的数据导出为*.xls/*.xlsx.使用比较多的就是用QAxObject对象进行操作.一般首先会连接数据库: QAxObject *excel = ...
- python对Excel文件的读写操作
xlrd模块 读excel文件 .xls xlwt模块 写excel文件 .xls openpyxl模块 写和追写 安装第三方模块 xlrd xlwt openpyxl 安装方式一:使用pip命令安装 ...
最新文章
- prolog_如何通过观看权力的游戏学习Prolog
- 限制HTTP数据包发送Referer
- CM:How is the version of word installed in client returned to Application server
- uwsgi指定python路径_uwsgi-安装实操
- 1.Consul 简介和环境搭建
- C#实践设计模式原则SOLID
- 桥接模式和路由模式区别_联通创维光猫DT541-CSF改桥接模式方法
- java dbcursor_优化JAVA查询Mongodb数量过大,查询熟读慢的方法
- 【转】IT从业人员必看的10个论坛
- 树莓派-13-红外遥控器HX1838
- Apple Swift学习资料汇总
- 《你要如何衡量你的人生》笔记与感想(三)不提供答案,只提供寻找答案的方法
- 计算机无法识别ipad2,iTunes无法识别iPad mini怎么办【解决方法】
- 转载:SRT传输库评估报告(V1.0.0)
- matlab 矩阵维度必须一致,错误使用 /
- 强化练习200题(一)正题:160
- arcgis怎么压缩tif文件_怎么将pdf文件压缩到指定大小?
- Command 模式——读书笔记
- 刘胜勇著作被中国高校图书馆馆藏的统计
- 微型计算机中使用较多的是SATA接口,NVMe U.2+PCIe SSD三盘RAID 0首发测试
热门文章
- (116)System Verilog类合成(类包含关系)详解
- (11)FPGA面试技能提升篇(Cadence)
- FPGA资源不足导致vivado生成bit失败
- 主程序与子程序不在同一程序模块中_数控车床子程序M98、M99编程实例!
- 1.FreeRTOS学习笔记-入门概述
- STM32 定时器输出pwm的频率计算方法 PWM 频率检测方法 直流电机的位置控制
- Python 语法糖
- 12021.ADS7952采集芯片
- 计算机主板的概念,华硕新型概念主机大爆料:内置未来主板
- mtk一键usb驱动_6寸三防手持终端 Windows系统 安卓系统,高通 MTK 条码扫描 NFC