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 ...
随机推荐
- S7-300 实训3 异步电机正反转控制
含有视频 方便以后查阅 参考书籍 跟我动手学 S7-300/400 PLC 第2版 廖常初 主编 实训3 异步电动机 正反转控制 步骤1 步骤2 在 cycle execution 前方 右击 插入 ...
- HTML学习第二天
HTML学习第二天 今天学的比较少,有些乱,先只写一个知识点 三种样式表插入方式 外部样式表: <link rel="stylesheet" type="text/ ...
- Result Maps collection already contains value for com.xxx.x.dao.xxxMapper.Bas
springboot启动时候,报错如下: Result Maps collection already contains value for com.xxx.xx.dao.xxxxxMapper.Ba ...
- java简写名词解释
RPC(Remote Procedure Call)—远程过程调用 实时编译器(Just In Time Compiler,JIT) XML 指可扩展标记语言(EXtensible Markup La ...
- R函数
1. sd() 求一组数据的标准差 > x = rep(1,15) > x [1] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 > sd(x) [1] 0 2.var ...
- sqlserver插入图片数据
-- 插入 insert into [CHOLPOR].[dbo].[t_image](id, name) select '1', BulkColumn from openrowset(bulk N' ...
- 手动搭建简单的vue项目
创建项目根目录 切换到根目录下 , 并执行 npm init , 所有选项都默认即可. 安装 webpack webpack-cli vue vue-loader 添加项目结构
- windows driver 定时器的使用
#include < Ntifs.h> #pragma warning(disable:4995) #pragma comment(lib, "Ntoskrnl.lib" ...
- C语言-存储类&作用域&生命周期&链接属性
1.概念解析(1)存储类 a.存储类就是存储类型,也就是描述C语言变量在何种地方存储. b.内存有多种管理办法:栈.堆.数据段.bss段..text段......一个变量的存储类属性就是描述这个变量存 ...
- cf 760B.Frodo and pillows
二分,判断条件就是最小情况(设当前k位取x)比剩余值(m-x)要小.(貌似又做麻烦了2333) #include<bits/stdc++.h> #define LL long long # ...