Java--Excel操作
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操作的更多相关文章
- Npoi导入导出Excel操作
之前公司的一个物流商系统需要实现对订单的批量导入和导出,翻阅了一些资料,最后考虑使用NPOI实现这个需求. 在winform上面实现excel操作:http://www.cnblogs.com/Cal ...
- Java文件操作源码大全
Java文件操作源码大全 1.创建文件夹 52.创建文件 53.删除文件 54.删除文件夹 65.删除一个文件下夹所有的文件夹 76.清空文件夹 87.读取文件 88.写入文件 99.写入随机文件 9 ...
- Apache POI - Java Excel APIs
文档来源:https://www.yiibai.com/apache_poi/ POI 什么是Apache POI? Apache POI是一种流行的API,它允许程序员使用Java程序创建,修改和显 ...
- jxl(Java Excel API) 使用方法 【2】
JAVA EXCEL API简介 Java Excel是一开放源码项目,通过它Java开发人员可以读取Excel文件的内容.创建新的Excel文件.更新已经存在的Excel文件.使用该 API非Win ...
- Java Excel 导入导出(一)
本文主要描述通过java实现Excel导入导出 一.读写Excel三种常用方式 1.JXL——Java Excel开放源码项目:读取,创建,更新 2.POI——Apache POI ,提供API给Ja ...
- java poi 操作
Java POI 操作Excel(读取/写入) https://www.cnblogs.com/dzpykj/p/8417738.html Java操作Excel之Poi基本操作 https://my ...
- 🏆【Alibaba工具型技术系列】「EasyExcel技术专题」摒除OOM!让你的Excel操作变得更加优雅和安全
前提概要 针对于后端开发者而言的,作为报表的导入和导出是一个很基础且有很棘手的问题!之前常用的工具和方案大概有这么几种: JXL(Java Excel API 工具服务),此种只支持xls的文件格式, ...
- Java实现操作dos命令
java实现操作dos命令的两种方式 1.读取文件中的命令 package com; import java.io.InputStream; public class cmd { public sta ...
- JAVA 链表操作:循环链表
主要分析示例: 一.循环链表简述 二.单链表循环链表 三.双链表循环链表 一.循环链表简述 循环链表即链表形成了一个循环的结构,尾节点不再指向NULL,而是指向头节点HEAD,此时判定链表的结束是尾节 ...
- Delphi Excel 操作大全
Delphi Excel 操作大全 (一) 使用动态创建的方法首先创建 Excel 对象,使用ComObj:var ExcelApp: Variant;ExcelApp := CreateOleObj ...
随机推荐
- Acwing199 余数之和
原题面:https://www.acwing.com/problem/content/201/ 题目大意:给出正整数n和k,计算j(n, k)=k mod 1 + k mod 2 + k mod 3 ...
- Redis数据类型及其操作
redis数据类型即操作 1. 字符串 set 设置字符串 格式: set key value 例子: set name kainhuck get 获取字符串的值 格式: get key 例子: ge ...
- 【剑指Offer】面试题28. 对称的二叉树
题目 请实现一个函数,用来判断一棵二叉树是不是对称的.如果一棵二叉树和它的镜像一样,那么它是对称的. 例如,二叉树 [1,2,2,3,4,4,3] 是对称的. 1 / \ 2 2 ...
- 018-PHP判断文件是否存在
<?php print("data.txt文件是否存在?" . "<br>"); if (file_exists("data.txt ...
- 实验吧-web-天下武功唯快不破(Python中byte和str的转换)
题目:看看响应头 打开网站,既然已经提示我们看响应头了,那我们就看看呗(习惯bp,也可直接F12查看) 可以看到,响应头部分有个FLAG,而且有提示:please post what you find ...
- Eclipse 中打开工程目录的插件
我们想在Eclipse中的打开工程目录,Eclipse 自身没有这个功能,我们可以安装一个插件来实现这个功能.具体的操作方法如下: (1).到以下链接中下载插件:https://github.com/ ...
- 学习spring第6天(aop获取目标方法参数)
关于<aop:around>中的方法,需要第一个参数为ProceedJoinPoint,在方法体中通过该参数调用proceed()才能使目标方法得到调用. 当一个切面中有多个<aop ...
- 每天一点点之vue框架开发 - vue-router路由在循环中携带参数
场景:要实现一个标签云,通过循环把标签渲染,然后单击标签的时候实现跳转,跳转路由一样,通过唯一参数来实现请求不同的数据 因此,就需要在for循环中来携带参数,本节所讲的是路由使用对象的形式(别名)来实 ...
- Java算法练习——字符串转换整数 (atoi)
题目链接 题目描述 请你来实现一个 atoi 函数,使其能将字符串转换成整数. 首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止. 当我们寻找到的第一个非空字符为正或者负 ...
- Day2-T3
原题目 Describe:质数问题 code: #pragma GCC optimize(2) #include<bits/stdc++.h> #define KKK 1200 using ...