Java使用poi对Execl简单_读_操作

 1 public class ReadExecl {
 2
 3 //    private final String XLSX = ".xlsx"; // 2007以上版本
 4 //    private final String XLS = ".xls"; // 2003版本
 5
 6     @Test
 7     public void readExeclTest() throws Exception{
 8         File file = new File("F:/execl/readTest2.xlsx");
 9         InputStream is = new FileInputStream(file); // 读取Execl
10
11 //        String suffix = file.toString().substring(file.toString().lastIndexOf("."),file.toString().length()); // 截取文件的后缀
12 //        Workbook wb = null; // 创建一个工作簿
13 //        if(XLSX.equals(suffix)) // 判断下 Execl 的后缀是那个版本
14 //             wb = new XSSFWorkbook(is);
15 //        else if(XLS.equals(suffix))
16 //             wb = new HSSFWorkbook(is);
17 //        else
18 //            throw new RuntimeException("貌似这不是Execl的后缀,请重新检查喔^_^");  // 如果不是Execl就上抛异常
19
20         Workbook wb = WorkbookFactory.create(is); // 万能处理版本问题,如果不用 上面注释的准确度创建,就可以考虑这种方式(其实底层也是那样判定的)
21
22         Sheet sheet = wb.getSheetAt(0); // 获取一个Execl里面的sheet默认从0开始,也可以通过name来获取wb.getSheet(String name);
23         FormulaEvaluator evaluator = wb.getCreationHelper().createFormulaEvaluator(); // 创建公式计算器(用来判断获取Execl中的数据是什么类型)
24
25         int firstRow = sheet.getFirstRowNum(); // 获取第一行
26         int lastRow = sheet.getLastRowNum(); // 获取最后一行
27
28         for (int i = firstRow; i <= lastRow; i++) {
29             Row row = sheet.getRow(i); // 获取当前行
30             int firstCell = row.getFirstCellNum(); // 获取第一个单元格
31             int lastCell = row.getLastCellNum(); // 获取最后一个单元格
32             for(int j = firstCell; j <= lastCell; j++){
33                 Cell cell = row.getCell(j); // 获取单元格
34                 CellValue cellValue = evaluator.evaluate(cell); // 计算当前的单元格是什么数据类型
35                 if(cellValue == null) // 如果execl的单元格是空则继续下次循环
36                     continue;
37                 switch (cellValue.getCellType()) {
38                 case Cell.CELL_TYPE_NUMERIC:
39                     if (DateUtil.isCellDateFormatted(cell)) {  // 这里的日期类型会被转换为数字类型,需要判别后区分处理
40                         try {
41                             new SimpleDateFormat("yyyy年MM月dd日").format(new SimpleDateFormat ("EEE MMM dd HH:mm:ss Z yyyy", Locale.UK).parse(cell.getDateCellValue().toString()));
42                             System.out.println("numeric转日期...");
43                         } catch (ParseException e) {
44                             e.printStackTrace();
45                         }
46                     } else {
47                         System.out.println("numeric类型...");
48                     }
49                     break;
50                 case Cell.CELL_TYPE_BOOLEAN:
51                     System.out.println("boolean类型...");
52                     break;
53                 case Cell.CELL_TYPE_STRING:
54                     System.out.println("string类型...");
55                     break;
56                 case Cell.CELL_TYPE_FORMULA:
57                     System.out.println("formula类型...");
58                     break;
59                 case Cell.CELL_TYPE_BLANK:
60                     System.out.println("blank类型...");
61                     break;
62                 case Cell.CELL_TYPE_ERROR:
63                     System.out.println("error类型...");
64                     break;
65                 default:
66                     break;
67                 }
68             }
69         }
70
71         is.close(); // 记得关闭流,释放资源
72     }
73 }
时间: 2024-08-01 22:45:06

Java使用poi对Execl简单_读_操作的相关文章

Java使用poi对Execl简单操作_总结

poi是Apache组织给开发者提供一套操作office(Execl,Word,PowerPoint)等Java API,开发者通过Poi API可以快速的操作office办公软件,以上3篇博文只是一个简单入门(望已经熟练操作Poi API的开发者莫笑)⊙﹏⊙∥,更多API和操作方法还是建议大家看官方文档,在实际开发中如果业务数据不是很复杂,用Execl足以,如果很复杂的业务数据和样式建议可以考虑使用别的报表框架,在对Execl的读和写的操作我们往往都是以对象的操作,所以大家可以考虑封装下,还有

Java使用poi对Execl简单_写_操作

1 public class WriteExecl { 2 3 @Test 4 public void writeExeclTest() throws Exception{ 5 OutputStream os = new FileOutputStream("F:/execl/writeTest2.xlsx"); 6 // Workbook wb = new HSSFWorkbook(); // 创建一个 2003 版本的Execl 7 Workbook wb = new XSSFWor

Excel导出学习之道:Java Web利用POI导出Excel简单例子

采用Spring mvc架构: Controller层代码如下 [java] view plaincopy @Controller public class StudentExportController{ @Autowired private StudentExportService studentExportService; @RequestMapping(value = "/excel/export") public void exportExcel(HttpServletReq

java 使用poi 结合Struts2导出execl表格

第一步写action方法: public String exportActiveExcel() { String name ="活跃度列表.xls"; try { name = java.net.URLEncoder.encode(name, "UTF-8"); fileName = new String(name.getBytes(), "iso-8859-1"); } catch (UnsupportedEncodingException e

Java:封装POI实现word的docx文件的简单模板功能

一:场景 通过Word模板来实现动态的word生成 二: 基本要求 1:替换文本中的内容 2:替换表格中的内容(不用动态生成表格) 3:替换后的内容应该与替换前的内容格式相同 4:模板修改方便 5:效果如下: 模板: 结果: 三:poi分析 使用方法:直接读取word文件,替换里面各个部分的内容 优点:直接使用word文件作为模板 缺点:本身的替换逻辑无法保留格式 四:为什么选择封装POI 1:因为时间和学习成本(懒)的问题,没有研究docx的xml规则,因此决定直接对现有的工具进行封装,来实现

java的poi技术写Excel的Sheet

在这之前写过关于java读,写Excel的blog如下: Excel转Html java的poi技术读,写Excel[2003-2007,2010] java的poi技术读取Excel[2003-2007,2010] java的poi技术读取Excel数据到MySQL java的jxl技术导入Excel java的poi技术读取和导入Excel 然而,这篇blog主要内容是关于Excel里面怎样去写Sheet数据. 那么在Excel里面什么叫做Sheet呢?如下图红色框里面的内容就是Excel的

Java 使用poi导入excel,结合xml文件进行数据验证的例子(增加了jar包)

ava 使用poi导入excel,结合xml文件进行数据验证的例子(增加了jar包) 假设现在要做一个通用的导入方法: 要求: 1.xml的只定义数据库表中的column字段,字段类型,是否非空等条件. 2.excel定义成模板,里面只填写了所需要的数据,有可能数据有问题. 3.在导入的时候就需要对每个excel单元格的数据进行验证. 4.验证完之后,若所有数据正确,那么批量保存.若有一点点错误,就不执行保存操作,并提示错误原因. 思路: 1.完美使用了Map的功能,先将xml中的数据存入map

Java使用POI实现数据导出excel报表

在上篇文章中,我们简单介绍了java读取word,excel和pdf文档内容 ,但在实际开发中,我们用到最多的是把数据库中数据导出excel报表形式.不仅仅简单的读取office中的数据.尤其是在生产管理或者财务系统中用的非常普遍,因为这些系统经常要做一些报表打印的工作.而数据导出的格式一般是EXCEL或者PDF .所以今天我们来简单看一下利用Apache  POI实现数据库中数据导出excel报表.在java中有很多实现数据导出excel报表的第三方jar包.但在比较了一下感觉还是POI相对来

java 使用POI批量导入excel数据

一.定义 Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能. 二.所需jar包: 三.简单的一个读取excel的demo 1.读取文件方法 /** * 读取出filePath中的所有数据信息 * @param filePath excel文件的绝对路径 * */ public static void getDataFromExcel(String filePath) { //String fileP