Excel——读取文件后——组装成待插入数据库数据——实体映射模式
package com.it.excel.excelLearn; import java.io.IOException;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set; public class App {
public static void main(String[] args) throws IOException {
String filePath = "C:\\Users\\gzh\\Desktop\\test.xlsx";
List<ExcelSheetStructure> excelSheets = ExcelUtil.readExcel(filePath);
// 获取所需sheet页
ExcelSheetStructure sheetStructure = null;
for (ExcelSheetStructure sheet : excelSheets) {
if (sheet.getSheetName().equals("产品数据")) {
sheetStructure = sheet;
break;
}
}
if (null == sheetStructure) {
System.out.println("导入的Excel中没有【产品数据】sheet页");
return;
}
// 把非表头数据转化为可插入数据
Map<String, String> replaceHeaderMap = new HashMap<>();
replaceHeaderMap.put("产品编号", "productNo");
replaceHeaderMap.put("产品名称", "productName"); List<Map<String, Object>> notHeaderData = sheetStructure.getSheetTableList();
// 输出为替换前的数据
System.out.println(notHeaderData);
// 待插入数据定义
List<Map<String, Object>> insertData = new LinkedList<>();
for (Map<String, Object> notHeaderRowMap : notHeaderData) {
Map<String,Object> insertMap = new HashMap<>();
Set<Entry<String, Object>> entrySet = notHeaderRowMap.entrySet();
for (Entry<String, Object> entry : entrySet) {
Set<String> replaceHeaderMapKeySet = replaceHeaderMap.keySet();
for (String key : replaceHeaderMapKeySet) {
if(entry.getKey().equals(key)){
insertMap.put(replaceHeaderMap.get(key), entry.getValue());
break;
}
}
}
insertData.add(insertMap);
}
// 输出新待插入数据库中的数据
System.out.println(insertData);
// for循环,一条一条记录插入数据库
}
}
Excel——读取文件后——组装成待插入数据库数据——实体映射模式的更多相关文章
- C# 读取文件中的sql语句 创建数据库以及表结构
大概思路是: 读取文件 根据文件中行内容为GO 作为分割 一条条放到list中 然后在程序中逐条执行sql语句; 值得一提的是 创建数据库的语句是不允许放到程序事务中执行的 所以目前我是分了两个文本 ...
- Shapefile文件中的坐标绘制到屏幕时的映射模式设置
pDC->SetMapMode(MM_ANISOTROPIC ); //首先选择MM_ANISOTROPIC映射模式,其它映射模式都不合适 pDC->SetWindowExt( max(a ...
- Node.js中读取文件后用Json.parse方法报错
今天,在调试一个node项目时,发现了一个很大的坑,在此分享给大家! 大家都知道,Json.parse()方法对格式要求是很严格的,格式不对极其容易报错,但是有时候格式看似是正确的也会报错. 比如这一 ...
- Node.js中读取文件后用Json.parse方法报错解决方案
今天,在调试一个node项目时,发现了一个很大的坑,在此分享给大家! 大家都知道,Json.parse()方法对格式要求是很严格的,格式不对极其容易报错,但是有时候格式看似是正确的也会报错. 比如这一 ...
- .net 生成html文件后压缩成zip文件并下载
这里只做一个简单的实例 public ActionResult Index() { string path = Server.MapPath("/test/");//文件输出目录 ...
- Python读取文件内容并将内容插入到SSDB中
import os import linecache import time from SSDB import SSDB ssdb = SSDB('127.0.0.1', 8888) print(&q ...
- [Java] Java解析XML格式Response后组装成Map
//Get and Parse Response def response = context.expand(‘${TestStepName#Response}’) def xmlParser = n ...
- python读取文件后切片
from itertools import islice with open(“1.txt") as f: for a in islice(f,0,2): print(a)
- (转)php读取文件使用redis的pipeline导入大批量数据
第一次写博客,哈哈,纯属用来记录一下自己工作中遇到的问题及解决办法. 昨天因为工作的需求,需要做一个后台上传TXT文件,读取其中的内容,然后导入redis库中.要求速度快,并且支持至少10W以上的数据 ...
随机推荐
- async与await总结
全手打原创,转载请标明出处:https://www.cnblogs.com/dreamsqin/p/11533174.html,多谢,=.=~ 抛出3个疑问: 1.async是干哈的? 2.await ...
- HDU校赛 | 2019 Multi-University Training Contest 5
2019 Multi-University Training Contest 5 http://acm.hdu.edu.cn/contests/contest_show.php?cid=852 100 ...
- Luogu5611 Ynoi2013 D2T2/牛客挑战赛32F 最大子段和 分块、分治
传送门 之前一直咕着的,因为一些特殊的原因把这道题更掉算了-- 有一个对值域莫队+线段树的做法,复杂度\(O(n\sqrt{n} \log n)\)然而牛客机子实在太慢了没有希望(Luogu上精细实现 ...
- 【mysql】新增列 时间戳
参考地址:https://www.cnblogs.com/SZxiaochun/p/9299392.html ALTER TABLE worksheet_data_12 ), ADD COLUMN ` ...
- winform+CefSharp 实现和js交互
1:窗体加载的时候添加 webBrowser.RegisterJsObject("getuserName", new _Event()); 2:注册C#方法为js方法 /// // ...
- Spring MVC 复习
概念 三层架构 将整个业务应用划分为三层 表现层:用来和客户端进行数据交互,一般采用MVC设计模式 业务层:处理公司具体业务逻辑 持久层:用来操作数据库 MVC模型 Model View ...
- Java操作JSON数据(4,end)--Jackson操作JSON数据
Jackson是SpringBoot默认使用的JSON处理库,它可以轻松的将Java对象转换成JSON对象,同样也可以将JSON转换成Java对象.本文介绍下Jackson的基本使用方法,包括序列化和 ...
- python json库
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,易于人阅读和编写. 1.json库的使用 使用 JSON 函数需要导入 json 库:import jso ...
- JS基础 —— 跨域
为什么会跨域 浏览器的同源策略(MDN:https://developer.mozilla.org/zh-CN/docs/Web/Security/Same-origin_policy) URL:协议 ...
- 给router-link 标签添加事件@click 、@mouseover等无效
需要加上native修饰符. 所以如果在想要在router-link上添加事件的话需要@click.native这样写 所以如果要事件有效的话,改成如下: <router-link v-for= ...