栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

使用Excel批量添加数据

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

使用Excel批量添加数据

使用XSSF Excel批量导入

大致的思路 先使用XSSF读取到数据 保存在list中的对象 验证数据 循环添加
XSSF的过程 读取所有行数–》开始循环 第一层 —》读取列数—》开始循环 第二层 –》读取当前行列的数据添加到对象中—》循环结束—》将对象add到list中

HSSF的思路差不多
HSSF 读取.xsl文件也就是03版的Excel
XSSF 读取.xslx文件也就是07版的Excel

使用HSSF/XSSF会非常耗费内存建议使用EasyExcel
EasyExcel的使用

public Result ? dataimport(String path) {
 Result ? result new Result ();
 SimpleDateFormat dateFormat new SimpleDateFormat( yyyy/MM/dd );
 List BizCardquality bizCardqualities new ArrayList ();
 XSSFWorkbook workbook null;
 XSSFSheet sheet null;
 XSSFCell cell null;
 // 读取数据
 try {
 //开始读取
 workbook new XSSFWorkbook(new FileInputStream(new File(uploadpath // path)));
 sheet workbook.getSheet( damage tracing );
 int lastRowNum ExcelUtils.getRowNums(sheet);
 for (int i 1; i lastRowNum; i ) {
 BizCardquality bizCardquality new BizCardquality();
 XSSFRow row sheet.getRow(i);
 List list new ArrayList();
 short lastCellNum row.getLastCellNum();
 for (int j 0; j lastCellNum; j ) {
 //获取数据
 cell row.getCell(j);
 if (null cell) continue;
 cell.setCellType(1);
 String cellValue ExcelUtils.getXCellValue(cell);
 cellValue cellValue.trim();
 list.add(cellValue);
 if (cellValue ! null) {
 if (j 0) {
 // 报告编号
 bizCardquality.setCqReportno(cellValue);
 continue;
 if (j 1) {
 // VIN码
 bizCardquality.setCqVehicleVin(cellValue);
 continue;
 if (j 2) {
 // 车型
 bizCardquality.setCqVehicleModel(cellValue);
 continue;
 if (j 3) {
 // 点检地点
 bizCardquality.setCqCheckingPoint(cellValue);
 //填充质损场站
 String station getStationIdBystsAbbrename(cellValue.substring(0,cellValue.indexOf( - )));
 if (station null){
 return Result.error( 点检地点未查询到 );
 bizCardquality.setCqDamageplace(station);
 continue;
 if (j 4) {
 // 发动机缸数
 bizCardquality.setCqTerminal(cellValue);
 continue;
 if (j 5) {
 // 方向
 bizCardquality.setCqDerection(cellValue);
 continue;
 if (j 6) {
 // 班次号
 bizCardquality.setCqTrainNumber(cellValue);
 continue;
 if (j 7) {
 //实际发运时间ATD
 if(StringUtils.isEmpty(cellValue)){
 bizCardquality.setCqAtd(null);
 continue;
 bizCardquality.setCqAtd((dateFormat.parse(cellValue)));
 continue;
 if (j 8) {
 // ATD WK
 //发运周数 
 bizCardquality.setCqAtdWk(cellValue);
 continue;
 if (j 9) {
 // ATA
 //实际到达时间 
 if(StringUtils.isEmpty(cellValue)){
 bizCardquality.setCqAta(null);
 continue;
 bizCardquality.setCqAta((dateFormat.parse(cellValue)));
 continue;
 if (j 10) {
 // ATA WK
 //到达周数 
 bizCardquality.setCqAtaWk(cellValue);
 continue;
 if (j 11) {
 // 损坏编码
 bizCardquality.setCqDamagecode(cellValue);
 continue;
 if (j 12) {
 // 损坏部位编码
 bizCardquality.setCqDamagepartcode(cellValue);
 continue;
 // 损坏类型编码
 if (j 13) {
 bizCardquality.setCqDamagetypecode(cellValue);
 continue;
 if (j 14) {
 // 损坏部位
 bizCardquality.setCqDamagepart(cellValue);
 continue;
 if (j 15) {
 // 损坏类型
 bizCardquality.setCqDamagetype(cellValue);
 continue;
 if (j 16) {
 //Instruction from vv vv指令
 bizCardquality.setCqInstructions(cellValue);
 if (j 17) {
 //Qualitative nature 质损性质 PDI)
 bizCardquality.setCqQualitativeNature(cellValue);
 if (j 18) {
 //Damgede typetwo
 bizCardquality.setCqDamagetypeTwo(cellValue);
 if (j 19) {
 // 损坏初始
 bizCardquality.setCqDamagefirstseen(cellValue);
 String station getStationIdBystsAbbrename(cellValue.substring(0,cellValue.indexOf( - )));
 if (station null){
 return Result.error( 损坏初始地未查询到 );
 bizCardquality.setCqFirstdamageplace(station);
 continue;
 if (j 20) {
 //责任方
 bizCardquality.setCqResponsibleparty(cellValue);
 continue;
 if (j 21) {
 //检验方
 bizCardquality.setCqInspectionGroup(cellValue);
 continue;
 if (j 22) {
 //检验日期
 if(StringUtils.isEmpty(cellValue)){
 bizCardquality.setCqInspectionDate(null);
 continue;
 bizCardquality.setCqInspectionDate((dateFormat.parse(cellValue)));
 continue;
 if (j 23) {
 //文件地址
 bizCardquality.setCqPath(cellValue);
 continue;
 if (j 24) {
 // 备注
 bizCardquality.setCqRemark(cellValue);
 continue;
 bizCardqualities.add(bizCardquality);
 catch (IOException | ParseException e) {
 log.error( 读取数据失败 ,e);
 e.printStackTrace();
 if (bizCardqualities ! null) {
 for (BizCardquality bizCardquality : bizCardqualities) {
 //校验是否有重复数据
 Boolean check bizCardqualityMapper.insertCheck(bizCardquality) null?false:true;
 //校验Vin是否有效
 Boolean checkVin bizCardqualityMapper.VinCheck(bizCardquality.getCqVehicleVin()) null?true:false;
 if(checkVin){
 result.setSuccess(false);
 result.setMessage( 未找到该车辆VIN码 bizCardquality.getCqVehicleVin() 不存在! );
 return result;
 if(check){
 result.setSuccess(false);
 result.setMessage( 添加失败 bizCardquality.getCqDamagecode() 或 bizCardquality.getCqVehicleVin() 重复! );
 return result;
 for (BizCardquality bizCardquality : bizCardqualities) {
 // 添加
 int insert bizCardqualityMapper.insert(bizCardquality);
 //通过vin修改车辆信息为质损
 bizCardqualityMapper.updateCar(1,bizCardquality.getCqVehicleVin());
 if (insert 0) {
 result.setSuccess(false);
 result.setMessage( 导入失败! );
 return result;
 try {
 // 文件保存
 BizUpfileinfo upfileinfo new BizUpfileinfo();
 // 相对路径
 upfileinfo.setUfiPath(path);
 // 业务id
 upfileinfo.setUfiBizid(bizCardquality.getId());
 // 业务名称
 upfileinfo.setUfiBizname( 车辆质损记录导入 );
 upfileinfoService.insertNewPosition(upfileinfo);
 } catch (IOException ioException) {
 ioException.printStackTrace();
 return result;
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/267818.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号