/**
* excel导入
* @param req
* @param resp
* @return
*/
public void excelImport(){
//先将要上传的Excel文件上传到项目下的excel_Temp临时文件夹
String path= request.getSession().getServletContext().getRealPath("/excel_Temp/");
String fileName = UUID.randomUUID().toString().replace("-", "")+excelFileName;
FileOutputStream fos = null;
FileInputStream fis = null;
try {
fis = new FileInputStream(excel);
fos = new FileOutputStream(new File(path,fileName));
int len=0;
byte[] buffer = new byte[1024];
while((len = fis.read(buffer))!= -1){
fos.write(buffer, 0, len);
}
fos.close();
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
//读取excel文件并获取其值
try {
List<List<Object>> list= Read_Excel.readExcel(new File(path,fileName));
//将获取到的值赋给要导入的对象
if(!(list.size()<1) ){
for (int i = 1; i < list.size(); i++) {
if(list.get(i).size() != 0){
String pk1 = pk.generateStringPk();
arcGongcInnerfile.setId(pk1);
arcGongcInnerfile.setCreDeptId(userDeptID);
arcGongcInnerfile.setCreTime(JDateToolkit.getNowDate4());
arcGongcInnerfile.setCreUserId(userID);
arcGongcInnerfile.setOrgId(orgId);
arcGongcInnerfile.setStatus("1");
arcGongcInnerfile.setInnerfileSeq((String) list.get(i).get(0));
arcGongcInnerfile.setDutyMan((String) list.get(i).get(1));
arcGongcInnerfile.setDocTitle((String) list.get(i).get(2));
arcGongcInnerfile.setDocCode((String) list.get(i).get(3));
arcGongcInnerfile.setSecurity(arcGongcInnerfileService.getIdByName((String) list.get(i).get(4)==" "?"无":(String) list.get(i).get(4)));
arcGongcInnerfile.setDocDate((String) list.get(i).get(5));
arcGongcInnerfile.setPageNum((String) list.get(i).get(6));
arcGongcInnerfile.setArchiveLink((String) list.get(i).get(7));
arcGongcInnerfile.setMemo((String) list.get(i).get(8));
try {
//将对象设值后持久化到数据库
arcGongcInnerfileService.save(arcGongcInnerfile);
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
response.setCharacterEncoding("utf-8");
response.getWriter().print("导入成功!");
}catch(Exception e){
e.printStackTrace();
}
//将上传到excel_Temp文件夹里的文件清空
File file = new File(path);
File[] fileList = file.listFiles();
for (int i = 0; i < fileList.length; i++) {
File delfile = fileList[i];
delfile.delete();
}
}
package com.sinosoft.module.arc.common;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.LinkedList;
import java.util.List; import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFDateUtil;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.xssf.usermodel.XSSFCell; public class Read_Excel { /**
* 读取 office excel
* @throws IOException
* @throws FileNotFoundException */
public static List<List<Object>> readExcel(File file) throws IOException{
List<List<Object>> list = new LinkedList<List<Object>>();
HSSFWorkbook hwb = new HSSFWorkbook(new FileInputStream(file));
HSSFSheet sheet = hwb.getSheetAt(0);
Object value = null;
HSSFRow row = null;
HSSFCell cell = null;
for(int i = sheet.getFirstRowNum();i<= sheet.getPhysicalNumberOfRows();i++){
  row = sheet.getRow(i);
  if (row == null) {
    continue;
  }
  List<Object> linked = new LinkedList<Object>();
  int count = 0;
  for (int j = row.getFirstCellNum(); j <= row.getLastCellNum(); j++) {
    cell = row.getCell(j);
    if (cell == null) {
      continue;
    }
       DecimalFormat df = new DecimalFormat("0");// 格式化 number String 字符
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");// 格式化日期字符串
DecimalFormat nf = new DecimalFormat("0");// 格式化数字
switch (cell.getCellType()) {
  case XSSFCell.CELL_TYPE_STRING:
    value = cell.getStringCellValue();
        break;
       case XSSFCell.CELL_TYPE_NUMERIC:
      if("@".equals(cell.getCellStyle().getDataFormatString())){
         value = df.format(cell.getNumericCellValue());
      } else if("General".equals(cell.getCellStyle().getDataFormatString())){
      value = nf.format(cell.getNumericCellValue());
      }else{
       value = sdf.format(HSSFDateUtil.getJavaDate(cell.getNumericCellValue()));
      }
      break;
     case XSSFCell.CELL_TYPE_BOOLEAN:
       value = cell.getBooleanCellValue();
       break;
     case XSSFCell.CELL_TYPE_BLANK:
       value = " ";
       count ++;
       break;
     default:
     value = cell.toString();
}
if (value == null || "".equals(value)) {
value = "";
continue;
}
linked.add(value);
}
if(count<9){
list.add(linked);
} }
return list;
}
}

简单的Excel导入(上传、解析、持久化)的更多相关文章

  1. 一个简单的excel文件上传到数据库方法

    因为以前项目中有用到过Excel导入,所以整理了一下,这是一个导入Excel数据到数据库的方法 注意:需要导入poi jar包 代码清单 /** * Excel 导入 * @param mapping ...

  2. IT轮子系列(六)——Excel上传与解析,一套代码解决所有Excel业务上传,你Get到了吗

    前言 在日常开发当中,excel的上传与解析是很常见的.根据业务不同,解析的数据模型也都不一样.不同的数据模型也就需要不同的校验逻辑,这往往需要写多套的代码进行字段的检验,如必填项,数据格式.为了避免 ...

  3. 基于Spring Mvc实现的Excel文件上传下载

    最近工作遇到一个需求,需要下载excel模板,编辑后上传解析存储到数据库.因此为了更好的理解公司框架,我就自己先用spring mvc实现了一个样例. 基础框架 之前曾经介绍过一个最简单的spring ...

  4. [SAP ABAP开发技术总结]客户端文本文件、Excel文件上传下载

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  5. 利用Bootstrap简单实现一个文件上传进度条

    © 版权声明:本文为博主原创文章,转载请注明出处 说明: 1. 使用commons-fileupload.jar实现文件上传及进度监听 2. 使用bootstrap的进度条进行页面显示 3. 因为进度 ...

  6. extjs实现简单的多文件上传(不借助任何插件),以及包含处理上传大文件的错误的各种处理办法

    在extjs的学习过程中,有遇到过有关多文件上传的问题,但是网上的大多数都是专门的去实现多文件上传而去做的组件之类的,没有特别简单的方式,于是小白便做了下面的内容,只是通过动态的去添加extjs的自带 ...

  7. [SAP ABAP开发技术总结]文本文件、Excel文件上传下传

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  8. JQUERY插件JqueryAjaxFileUplaoder----更简单的异步文件上传

    异步上传相信大家都做过类似的功能,JqueryAjaxFileUploader为我们提供了更简单的实现和使用方式.不过既然是JQUERY的插件那么它所依赖的环境大家都懂得.JqueryAjaxFile ...

  9. 简单的文件ftp上传

    目录 简单的文件ftp上传 简单的文件ftp上传 server import socket import struct service=socket.socket() service.bind(('1 ...

随机推荐

  1. Kb,KB,Kbps,Mb,Mbps等一些列概念

    先普及一下Kb,KB,Kbps,Mb,Mbps等一些列概念 1Byte = 8bit1KB (Kilobyte 千字节)=1024Byte1MB (Megabyte,兆字节,简称“兆”)=1024KB ...

  2. SpringBoot系列三:SpringBoot基本概念(统一父 pom 管理、SpringBoot 代码测试、启动注解分析、配置访问路径、使用内置对象、项目打包发布)

    声明:本文来源于MLDN培训视频的课堂笔记,写在这里只是为了方便查阅. 1.了解SpringBoot的基本概念 2.具体内容 在之前所建立的 SpringBoot 项目只是根据官方文档实现的一个基础程 ...

  3. MP3帧时长为26ms的来历

  4. Retrofit/OkHttp API接口加固技术实践(下)

    作者/Tamic http://blog.csdn.net/sk719887916/article/details/65448628 imageMogr2/auto-orient/strip%7Cim ...

  5. 转载:erlang实现安卓和IOS的推送。

    erlang-百度云推送Android服务端功能实现-erlang erlang -- ios apns provider -- erlang 实现 转自:http://www.cnblogs.com ...

  6. 工作所用的日常 Git 命令

    几乎每个开发人员都在使用 Git,当然很可能是 GitHub.但大多数开发者大概有 99% 的时间只是使用这三个命令: #使用命令git add <file>,将文件添加到暂存区 git ...

  7. nginx配置一、二级域名、多域名对应(api接口、前端网站、后台管理网站)

    前提:安装好nginx,如果已经启动nginx,先停止,命令: ./usr/local/nginx/sbin/nginx -s stop 修改nginx配置 vi /usr/local/nginx/c ...

  8. 给NSMutableArray添加copy属性就变成了NSArray

    -copy, as implemented by mutable Cocoa classes, always returns their immutable counterparts. Thus, w ...

  9. Linux I/O优化 磁盘读写参数设置

    关于页面缓存的信息,可以用cat /proc/meminfo 看到.其中的Cached 指用于pagecache的内存大小(diskcache-SwapCache).随着写入缓存页,Dirty 的值会 ...

  10. 【ML】人脸识别

    https://github.com/colipso/face_recognition https://medium.com/@ageitgey/machine-learning-is-fun-par ...