最近简单的弄了下poi对excel的应用,为方便自己以后的使用就把一些基本操作记录下来,其他更复杂的操作可以等以后有需求的时候再来深入了解一番!

写操作:

Java代码  
  1. /**
  2. *
  3. * 层次结构就是workbook-->Sheet-->Row-->Cell
  4. * 只要按照这种层次结构操作就不会有什么大的问题
  5. * @author Administrator
  6. *
  7. */
  8. public class Test1 {
  9. public static void main(String args[]) throws IOException {
  10. //HSSFWorkbook对应的是2003
  11. //XSSFWorkbook对应的是2007
  12. //对于03和07它们的操作都是差不多的,只是在需要用07的时候把相应的HSSF前缀改成XSSF前缀就可以了
  13. //第一步建一个工作簿,即workbook
  14. Workbook workbook = new HSSFWorkbook();
  15. //第二步建一个工作表单,急sheet
  16. Sheet sheet = workbook.createSheet("mysheet1");
  17. for (int i=0;i<5;i++) {
  18. //有了表单以后就是行Row了,
  19. Row row = sheet.createRow(i);
  20. for (int j=0;j<5;j++) {
  21. //有了row以后就是row上的一个个小的单元格了
  22. Cell cell = row.createCell(j);
  23. //给单元格添加内容
  24. cell.setCellValue("row"+(i+1)+",column"+(j+1));
  25. }
  26. }
  27. //建一个用于存放新建的excel的文件输出流
  28. OutputStream os = new FileOutputStream("file/test1.xls");
  29. //把形成的workbook写到一个输出流里面
  30. workbook.write(os);
  31. os.close();
  32. }
  33. }

读操作:

Java代码  
  1. public class Test4 {
  2. public static void main(String args[]) throws IOException {
  3. InputStream is = new FileInputStream("file/test1.xls");
  4. Workbook wb = new HSSFWorkbook(is);
  5. Sheet sheet = wb.getSheetAt(0);
  6. // 因为Row,Cell,Sheet都继承了java.lang.Iterator接口,所以可以用下面的方法来进行遍历
  7. for (Row row : sheet) {
  8. for (Cell cell : row) {
  9. int cellType = cell.getCellType();
  10. switch (cellType) {
  11. //在取数据的时候类型一定要取对,否则将抛出异常
  12. case Cell.CELL_TYPE_STRING:
  13. String str = cell.getRichStringCellValue().getString();
  14. System.out.println(str);// 对取得的数据的简单处理;
  15. break;
  16. case Cell.CELL_TYPE_BLANK:
  17. if (DateUtil.isCellDateFormatted(cell)) {
  18. System.out.println(cell.getDateCellValue());
  19. } else {
  20. System.out.println(cell.getNumericCellValue());
  21. }
  22. break;
  23. case Cell.CELL_TYPE_FORMULA:
  24. System.out.println(cell.getCellFormula());
  25. break;
  26. case Cell.CELL_TYPE_BOOLEAN:
  27. System.out.println(cell.getBooleanCellValue());
  28. break;
  29. default:
  30. System.out.println("---------------------");
  31. break;
  32. }
  33. }
  34. }
  35. //当然还可以这样来遍历
  36. //row是从1开始的,cell是从头0开始的,但是在创建的时候它们都是0-based;
  37. for (int i=0;i<sheet.getLastRowNum()+1;i++) {
  38. Row row = sheet.getRow(i);
  39. if (row==null)
  40. continue;
  41. for (int j=0;j<row.getLastCellNum();j++) {
  42. Cell cell = row.getCell(j);
  43. if (cell==null)
  44. continue;
  45. //在取数据的时候数据类型一定要取对,否则将抛出异常,like NumberFormatException
  46. System.out.println(cell.getStringCellValue());
  47. }
  48. }
  49. is.close();
  50. }
  51. }

合并单元格:

Java代码  
  1. public static void main(String args[]) throws IOException {
  2. Workbook wb = new HSSFWorkbook();
  3. Sheet sheet = wb.createSheet("sheet1");
  4. Row row = sheet.createRow(1);
  5. Cell cell = row.createCell(1);
  6. cell.setCellValue("a test of merge!");
  7. //执行合并操作的语句
  8. sheet.addMergedRegion(new CellRangeAddress(
  9. 1,// 开始行
  10. 1,// 结束行
  11. 1,// 开始列
  12. 3// 结束列
  13. ));
  14. OutputStream os = new FileOutputStream("file/test3.xls");
  15. wb.write(os);
  16. os.close();
  17. }

换行:

Java代码  
  1. public static void main(String args[]) throws IOException {
  2. Workbook wb = new HSSFWorkbook();
  3. Sheet sheet = wb.createSheet();
  4. Row row = sheet.createRow(6);
  5. sheet.autoSizeColumn(2);
  6. for (int i=0;i<5;i++) {
  7. Cell cell = row.createCell(i+2);
  8. CellStyle style = wb.createCellStyle();
  9. //to set cell newLine should set its wrap true
  10. style.setWrapText(true);
  11. //利用\n来实现换行操作,只有在Cell设置为setWrapText(true)的时候才能实现人为的换行
  12. cell.setCellValue("just use \n to wrap in a cell!");
  13. cell.setCellStyle(style);
  14. }
  15. OutputStream os = new FileOutputStream("file/test6_newLine.xls");
  16. wb.write(os);
  17. os.close();
  18. System.out.println("----------------------------");
  19. }

画图:

Java代码  
  1. //drawing shapes
  2. /*
  3. * To create a shape you have to go through the following steps:
  4. 1.Create the patriarch.
  5. 2.Create an anchor to position the shape on the sheet.
  6. 3.Ask the patriarch to create the shape.
  7. 4.Set the shape type (line, oval, rectangle etc...)
  8. 5.Set any other style details converning the shape. (eg: line thickness, etc...)
  9. */
  10. HSSFPatriarch partriarch = (HSSFPatriarch) sheet5.createDrawingPatriarch();
  11. HSSFSimpleShape shape = partriarch.createSimpleShape(new HSSFClientAnchor(0,0,0,0,(short)3,3,(short)5,5));
  12. shape.setShapeType(HSSFSimpleShape.OBJECT_TYPE_OVAL);
  13. //shape可以设置很多的属性
  14. shape.setFillColor(255,200,200);
  15. shape.setLineStyle(HSSFSimpleShape.LINESTYLE_DASHGEL);
  16. //Text boxes are created using a different call:

转载于:https://www.cnblogs.com/telwanggs/p/4933046.html

poi对excel的基本读写操作相关推荐

  1. 利用java poi对excel表的读写操作

    2019独角兽企业重金招聘Python工程师标准>>> 利用java poi对excel表的读写操作 POI简介: Apache POI是一种流行的API,它允许程序员使用Java程 ...

  2. Java 使用 POI 对 Excel文件 进行读写操作

    Java 使用 POI 对 Excel文件 进行读写操作 一.背景 目前正在做一个问卷功能模块,收集完问卷信息后,需要将数据库中的数据导出到Excel数据表中进行留存,因此就学习了在Java中如何对E ...

  3. POI和easyExcel使用(2)PoI对Excel的基本读写操作

    excel有四个主要对象:工作薄.工作表.行.单元格 1.POI的写操作 创建一个maven项目,需要引入POI的一些包 <!--xls(03)--> <dependency> ...

  4. python sqlserver 数据操作_python对Excel数据进行读写操作

    python对Excel数据进行读写操作 将学习到的基础操作记录在这里,便与复习查看 1.python读取Excel工作簿.工作表 import xlrd # 读取工作簿 wb=xlrd.open_w ...

  5. python对Excel数据进行读写操作

    python对Excel数据进行读写操作 将学习到的基础操作记录在这里,便与复习查看 1.python读取Excel工作簿.工作表 import xlrd # 读取工作簿 wb=xlrd.open_w ...

  6. poi设置excel打印时分页操作

    poi设置excel打印时分页操作 使用poi的Sheet对象 Workbook desWorkbook = new HSSFWorkbook();Sheet desSheet = desWorkbo ...

  7. qt在linux操作wps,Qt实现Excel表格的读写操作(office,WPS)

    我们用QT经常会将表格的数据导入数据库或者将数据库中的数据导出为*.xls/*.xlsx.使用比较多的就是用QAxObject对象进行操作.一般首先会连接数据库: QAxObject *excel = ...

  8. Qt实现Excel表格的读写操作(office,WPS)

    我们用QT经常会将表格的数据导入数据库或者将数据库中的数据导出为*.xls/*.xlsx.使用比较多的就是用QAxObject对象进行操作.一般首先会连接数据库: QAxObject *excel = ...

  9. python对Excel文件的读写操作

    xlrd模块 读excel文件 .xls xlwt模块 写excel文件 .xls openpyxl模块 写和追写 安装第三方模块 xlrd xlwt openpyxl 安装方式一:使用pip命令安装 ...

最新文章

  1. prolog_如何通过观看权力的游戏学习Prolog
  2. 限制HTTP数据包发送Referer
  3. CM:How is the version of word installed in client returned to Application server
  4. uwsgi指定python路径_uwsgi-安装实操
  5. 1.Consul 简介和环境搭建
  6. C#实践设计模式原则SOLID
  7. 桥接模式和路由模式区别_联通创维光猫DT541-CSF改桥接模式方法
  8. java dbcursor_优化JAVA查询Mongodb数量过大,查询熟读慢的方法
  9. 【转】IT从业人员必看的10个论坛
  10. 树莓派-13-红外遥控器HX1838
  11. Apple Swift学习资料汇总
  12. 《你要如何衡量你的人生》笔记与感想(三)不提供答案,只提供寻找答案的方法
  13. 计算机无法识别ipad2,iTunes无法识别iPad mini怎么办【解决方法】
  14. 转载:SRT传输库评估报告(V1.0.0)
  15. matlab 矩阵维度必须一致,错误使用 /
  16. 强化练习200题(一)正题:160
  17. arcgis怎么压缩tif文件_怎么将pdf文件压缩到指定大小?
  18. Command 模式——读书笔记
  19. 刘胜勇著作被中国高校图书馆馆藏的统计
  20. 微型计算机中使用较多的是SATA接口,NVMe U.2+PCIe SSD三盘RAID 0首发测试

热门文章

  1. (116)System Verilog类合成(类包含关系)详解
  2. (11)FPGA面试技能提升篇(Cadence)
  3. FPGA资源不足导致vivado生成bit失败
  4. 主程序与子程序不在同一程序模块中_数控车床子程序M98、M99编程实例!
  5. 1.FreeRTOS学习笔记-入门概述
  6. STM32 定时器输出pwm的频率计算方法 PWM 频率检测方法 直流电机的位置控制
  7. Python 语法糖
  8. 12021.ADS7952采集芯片
  9. 计算机主板的概念,华硕新型概念主机大爆料:内置未来主板
  10. mtk一键usb驱动_6寸三防手持终端 Windows系统 安卓系统,高通 MTK 条码扫描 NFC