public static List<Info> readXml(String fileName, Map<String, Fuck> pcMap) throws Exception{
boolean isE2007 = false; //判断是否是excel2007格式
if(fileName.endsWith("xlsx"))
isE2007 = true;
try {
InputStream input = new FileInputStream(fileName); //建立输入流
Workbook wb = null;
//根据文件格式(2003或者2007)来初始化
if(isE2007) {
wb = new XSSFWorkbook(input);
} else {
wb = new HSSFWorkbook(input);
}
Sheet sheet = wb.getSheetAt(0); //获得第一个表单
Iterator<Row> rows = sheet.rowIterator(); //获得第一个表单的迭代器 //初始化列标
Map<String, Integer> map = new HashMap<String, Integer>();
if(rows.hasNext()) {
Row row = rows.next();
Iterator<Cell> cells = row.cellIterator();
int i = 0;
while(cells.hasNext()) {
Cell cell = cells.next();
if(map.containsKey(cell.toString())) {
continue ;
}
map.put(cell.toString(), i++);
}
}
// for(Map.Entry<String, Integer> set : map.entrySet()) {
// System.out.println(set.getKey() + " " + set.getValue());
// } //取数据
List<Info> dataList = new ArrayList<Info>();
while (rows.hasNext()) {
Row row = rows.next(); //获得行数据
// System.out.println("Row #" + row.getRowNum()); //获得行号从0开始
Iterator<Cell> cells = row.cellIterator(); //获得第一行的迭代器 String msg = "";
if(cells.hasNext()) {
Cell cell = cells.next();
cell.setCellType(Cell.CELL_TYPE_STRING);
Info info = new Info(); Cell org_noCell = row.getCell(map.get("美国编号"));
org_noCell.setCellType(Cell.CELL_TYPE_STRING);
info.setOrg_no(org_noCell.toString()); Cell org_nameCell = row.getCell(map.get("餐厅名字"));
org_nameCell.setCellType(Cell.CELL_TYPE_STRING);
info.setOrg_name(org_nameCell.toString()); Cell szcsCell = row.getCell(map.get("城市"));
szcsCell.setCellType(Cell.CELL_TYPE_STRING);
info.setSzcs(szcsCell.toString()); Cell addrCell = row.getCell(map.get("地址"));
addrCell.setCellType(Cell.CELL_TYPE_STRING);
info.setAddr(addrCell.toString()); Cell telCell = row.getCell(map.get("电话"));
telCell.setCellType(Cell.CELL_TYPE_STRING);
info.setTel(telCell.toString()); Cell taxcodeCell = row.getCell(map.get("对应纳税号"));
taxcodeCell.setCellType(Cell.CELL_TYPE_STRING);
info.setTaxcode(taxcodeCell.toString()); msg = org_noCell.toString() + org_nameCell + szcsCell + addrCell + telCell + taxcodeCell;
if("".equals(msg.trim())) {
continue ;
}
if(info != null) {
if(pcMap.containsKey(taxcodeCell.toString())) {
Fuck fuck = pcMap.get(taxcodeCell.toString());
info.setPayee(info.getOrg_no());
info.setChecker(fuck.getChecker());
}
dataList.add(info);
}
}
}
return dataList;
} catch (IOException ex) {
ex.printStackTrace();
throw new Exception("请参考模板并选择正确的文件!");
}
}

Java--Excel操作的更多相关文章

  1. Npoi导入导出Excel操作

    之前公司的一个物流商系统需要实现对订单的批量导入和导出,翻阅了一些资料,最后考虑使用NPOI实现这个需求. 在winform上面实现excel操作:http://www.cnblogs.com/Cal ...

  2. Java文件操作源码大全

    Java文件操作源码大全 1.创建文件夹 52.创建文件 53.删除文件 54.删除文件夹 65.删除一个文件下夹所有的文件夹 76.清空文件夹 87.读取文件 88.写入文件 99.写入随机文件 9 ...

  3. Apache POI - Java Excel APIs

    文档来源:https://www.yiibai.com/apache_poi/ POI 什么是Apache POI? Apache POI是一种流行的API,它允许程序员使用Java程序创建,修改和显 ...

  4. jxl(Java Excel API) 使用方法 【2】

    JAVA EXCEL API简介 Java Excel是一开放源码项目,通过它Java开发人员可以读取Excel文件的内容.创建新的Excel文件.更新已经存在的Excel文件.使用该 API非Win ...

  5. Java Excel 导入导出(一)

    本文主要描述通过java实现Excel导入导出 一.读写Excel三种常用方式 1.JXL——Java Excel开放源码项目:读取,创建,更新 2.POI——Apache POI ,提供API给Ja ...

  6. java poi 操作

    Java POI 操作Excel(读取/写入) https://www.cnblogs.com/dzpykj/p/8417738.html Java操作Excel之Poi基本操作 https://my ...

  7. 🏆【Alibaba工具型技术系列】「EasyExcel技术专题」摒除OOM!让你的Excel操作变得更加优雅和安全

    前提概要 针对于后端开发者而言的,作为报表的导入和导出是一个很基础且有很棘手的问题!之前常用的工具和方案大概有这么几种: JXL(Java Excel API 工具服务),此种只支持xls的文件格式, ...

  8. Java实现操作dos命令

    java实现操作dos命令的两种方式 1.读取文件中的命令 package com; import java.io.InputStream; public class cmd { public sta ...

  9. JAVA 链表操作:循环链表

    主要分析示例: 一.循环链表简述 二.单链表循环链表 三.双链表循环链表 一.循环链表简述 循环链表即链表形成了一个循环的结构,尾节点不再指向NULL,而是指向头节点HEAD,此时判定链表的结束是尾节 ...

  10. Delphi Excel 操作大全

    Delphi Excel 操作大全 (一) 使用动态创建的方法首先创建 Excel 对象,使用ComObj:var ExcelApp: Variant;ExcelApp := CreateOleObj ...

随机推荐

  1. 验证试验 更改了从机CAN通信的MAC地址 从机新挂CAN网络 上电自检通过

    更改前 该之后 主机程序 与 从机 程序 已经上传到网盘上 ,主机和从机程序基本一致, 唯一的区别是 从机更好了MAC地址 为0X10  主机的固定MAC地址为 0X1F 改程序的配置上设置的是双滤波 ...

  2. GNS3 模拟Arp命令2

    R1 : conf t int f0/0 no shutdown ip add 192.168.1.1 255.255.255.0 no ip routing end R2 f0/0: conf t ...

  3. mybatis update set 多个字段

    <update id="updateCustomer" parameterType="com.entrym.domain.Customer"> UP ...

  4. 033-PHP取1-100的随机数

    <?php // 生成一个随机数 // 从1到100中取得随机数 for ($index = 0; $index < 100; $index++) { $number = (rand() ...

  5. 第二阶段scrum-5

    1.整个团队的任务量: 2.任务看板: 会议照片: 产品状态: 注册登陆界面功能正在实装,前端制作完成 数据库配置中

  6. ServletContext 详解

    ServletContext——它是一个全局的储存信息的空间,服务器开始,其就存在,服务器关闭,其才释放.request,一个用户可有多个:session,一个用户一个:而servletContext ...

  7. 理解依赖注入(DI - Dependency Injection)

    系列教程 Spring 框架介绍 Spring 框架模块 Spring开发环境搭建(Eclipse) 创建一个简单的Spring应用 Spring 控制反转容器(Inversion of Contro ...

  8. Java高级特性——注解,这也许是最简单易懂的文章了

    最近,浪尖在做flink的项目时source和sink的绑定那块用到了注解,当然新版本1.6以后就变为server load的方式加载. 但是浪尖也是觉得很有毕业讲一下注解,毕竟高级免试也会问答的吧. ...

  9. Linux基础命令层级图-01

    Linux基础命令层级图-01:

  10. 洛谷 P5542 [USACO19FEB]Painting The Barn

    题目传送门 解题思路: 二维差分的板子题.题解传送门 AC代码: #include<iostream> #include<cstdio> using namespace std ...