Excel文件上传服务器并解析存入数据库的整套过程(2003--2013都可试)
2016-03-05 14:53
585 查看
运行环境搭建:
JDK1.6.0
MyEclipse 6.5
Linux服务器
所需jar包:用积分到我的资源下载
java代码:
ReadExcel03Util.java
package com.rapoo.excelToDB;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.text.NumberFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import jxl.Workbook;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
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.poifs.filesystem.POIFSFileSystem;
public class ReadExcel03Util{
HSSFWorkbook readbook;
HSSFSheet sheet;
String FormatDate;
Log log = LogFactory.getLog(this.getClass());
public ReadExcel03Util(String uploadFilePath) throws IOException
{
FileInputStream fis=new FileInputStream(uploadFilePath);
POIFSFileSystem pfs=new POIFSFileSystem(fis);
readbook=new HSSFWorkbook(pfs);
sheet=readbook.getSheetAt(0);
}
public HSSFWorkbook getReadbook() {
return readbook;
}
public void setReadbook(HSSFWorkbook readbook) {
this.readbook = readbook;
}
public HSSFSheet getSheet() {
return sheet;
}
public void setSheet(HSSFSheet sheet) {
this.sheet = sheet;
}
public List<List<String>> ItermCell(HSSFSheet sheet){
List<List<String>> str1 = new ArrayList<List<String>>();
lable:
// 遍历行Row
for(int rowNum=1;rowNum<=sheet.getLastRowNum();rowNum++){
log.info("总共的行数:"+sheet.getLastRowNum());
List<String> str2 = new ArrayList<String>();
HSSFRow hssfRow=sheet.getRow(rowNum);
if(hssfRow==null){
break lable;
}
// 遍历列Cell
for(int cellNum=0;cellNum<hssfRow.getLastCellNum();cellNum++){
String hssfCell = getCellValue(rowNum,cellNum);
log.info("hssfCell的值:======"+hssfCell);
str2.add(hssfCell);
}
str1.add(str2);
}
return str1;
}
public int getsheetLastRow(){
return sheet.getLastRowNum();
}
public String getCellValue(int row, int col) {
String value="";
if(sheet==null)return "";
HSSFRow hrow=sheet.getRow(row);
if(hrow==null)return "";
HSSFCell cell=hrow.getCell((short) col);
if(cell==null)
return "";
int type=cell.getCellType();
switch(type)
{
case HSSFCell.CELL_TYPE_NUMERIC:
if (HSSFDateUtil.isCellDateFormatted(cell)) {
Date date = cell.getDateCellValue();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
value = sdf.format(date);
} else {
NumberFormat formatter = NumberFormat.getNumberInstance();
formatter.setMaximumFractionDigits(3);
String newD = formatter.format(
(Double) cell.getNumericCellValue()).toString()
.replace(",", "");
value = newD;
}
break;
case HSSFCell.CELL_TYPE_STRING: value=cell.getStringCellValue();break;
case HSSFCell.CELL_TYPE_FORMULA:value=cell.getStringCellValue();break;
case HSSFCell.CELL_TYPE_BOOLEAN:value=cell.getBooleanCellValue()+"";break;
case HSSFCell.CELL_TYPE_BLANK: value="";break;
default:value="";
}
return value.trim();
}
public int getRows()
{
if(sheet!=null)
return sheet.getPhysicalNumberOfRows();
else
return 0;
}
public String getDateCellValue(int r, short col) {
try{
if(getSheet()==null)
return getCellValue(r,col);
HSSFRow row=getSheet().getRow(r);
if(row==null)
return getCellValue(r,col);
HSSFCell cell=row.getCell(col);
if(cell==null)
return getCellValue(r,col);
Date date=cell.getDateCellValue();
return FormatDate.format("yyyy-MM-dd",date);
}catch(Exception e)
{
e.printStackTrace();
return getCellValue(r,col);
}
}
public int getFirstRow()
{
return sheet.getFirstRowNum();
}
public int getCols(int row)
{
return sheet.getRow(row).getPhysicalNumberOfCells();
}
}
ReadExcel10Util.java
package com.rapoo.excelToDB;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.text.NumberFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
import org.apache.poi.ss.usermodel.DateUtil;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class ReadExcel10Util {
Log log = LogFactory.getLog(this.getClass());
XSSFSheet xssfSheet;
XSSFWorkbook readbook;
public ReadExcel10Util(String fileurl) throws IOException{
FileInputStream fis= new FileInputStream(fileurl);
readbook= new XSSFWorkbook(fis);
xssfSheet= readbook.getSheetAt(0);
}
/**
* 读取excel中sheet的数量,sheet中每行每列的值
*
* @param fileurl
* @return
*/
public List<List<String>> ItemVale(XSSFWorkbook readbook){
log.info("进入ItemVale方法++++++++++++++++++");
List<List<String>> str1 = new ArrayList<List<String>>(); //存入excel中的数据
log.info("xssfWorkbook++++++++++++++++++");
//1.循环读取所有的sheet
tlable :
for (int numSheet = 0; numSheet < readbook.getNumberOfSheets(); numSheet++)
{
log.info("获取sheet表====="+readbook.getNumberOfSheets());
xssfSheet = readbook.getSheetAt(numSheet);
if (xssfSheet == null) {
break tlable;
}
log.info("读取sheet文件的所有行数======="+xssfSheet.getLastRowNum());
//2.读取行元素
for (int rowNum = 1; rowNum <=xssfSheet.getLastRowNum(); rowNum++)
{
List<String> str2 = new ArrayList<String>(); //每列中存入的数据
XSSFRow xssfRow = xssfSheet.getRow(rowNum);
if (xssfRow == null) {
break tlable;
}
for(int sheetcol=0;sheetcol<xssfRow.getLastCellNum();sheetcol++)
{
log.info("读取每行元素的每列数值======"+xssfRow.getLastCellNum());
XSSFCell cell = xssfRow.getCell(sheetcol);
String val = getCellValue(rowNum,sheetcol);
log.info("每行元素的每列的数据:"+val);
str2.add(val);
}
str1.add(str2);
}
}
return str1;
}
/**
* 2010版本Excel
*
* 获取cellValue值 判断每行每列的类型返回String value值
* @param row
* @param col
* @return
*/
public String getCellValue(int row, int col) {
String value="";
if(xssfSheet==null)return "";
XSSFRow hrow= xssfSheet.getRow(row);
if(hrow==null)return "";
XSSFCell cell= hrow.getCell(col);
if(cell==null)
return "";
int type= cell.getCellType();
switch(type)
{
case XSSFCell.CELL_TYPE_NUMERIC:
if (DateUtil.isCellDateFormatted(cell)) {
Date date = cell.getDateCellValue();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
value = sdf.format(date);
} else {
NumberFormat formatter = NumberFormat.getNumberInstance();
formatter.setMaximumFractionDigits(3);
String newD = formatter.format(
(Double) cell.getNumericCellValue()).toString()
.replace(",", "");
value = newD;
}
break;
case XSSFCell.CELL_TYPE_STRING: value=cell.getStringCellValue();break;
case XSSFCell.CELL_TYPE_FORMULA:value=cell.getStringCellValue();break;
case XSSFCell.CELL_TYPE_BOOLEAN:value=cell.getBooleanCellValue()+"";break;
case XSSFCell.CELL_TYPE_BLANK: value="";break;
default:value="";
}
return value.trim();
}
public XSSFSheet getXssfSheet() {
return xssfSheet;
}
public void setXssfSheet(XSSFSheet xssfSheet) {
this.xssfSheet = xssfSheet;
}
public XSSFWorkbook getReadbook() {
return readbook;
}
public void setReadbook(XSSFWorkbook readbook) {
this.readbook = readbook;
}
}
NewMyExcel.java
package com.rapoo.excelToDB;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.fileupload.DiskFileUpload;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileItemFactory;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import weaver.conn.RecordSet;
import weaver.file.FileUploadToPath;
import weaver.general.GCONST;
public class NewMyExcel extends HttpServlet{
Log log = LogFactory.getLog(this.getClass());
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
doPost(req, resp);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
log.info("进入NewMyExcelServle方法++++++++++");
/**
* 一、先删除suppliernumber表中的数据,再插入新数据
*
*/
String delExcel = "delete from suppliernumber";
RecordSet recordSet=new RecordSet();
recordSet.execute(delExcel);
String selExcel = "select * from suppliernumber";
RecordSet selRecordSet=new RecordSet();
selRecordSet.execute(selExcel);
if(selRecordSet.next()){
log.info("删除失败!------------");
}else{
log.info("删除成功!------------");
}
log.info("进入MyReadExcel中的doPost方法");
/**
* 二、将Excel存入服务器
*
*/
String tmpPath = "/app/ecology/tempfile/"; //存Excel文件的路径
String dirPath =""; //存Excel文件的路径地址(包含Excel名字)
//1.创建解析工厂
DiskFileUpload factory = new DiskFileUpload();
//2.解析
List<FileItem> items = null;
try {
items = factory.parseRequest(request);
} catch (FileUploadException e) {
e.printStackTrace();
}
String repName = "";
//3.遍历
File file1 ;
for(FileItem item : items){
if(item.getFieldName().equals("excelData"))
{
//将文件名加上唯一的标识 保证文件名不重复
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyMMddHHmmss");
String primatekey= sdf.format(date);
//获得字段名
String name = item.getFieldName();
log.info("字段名称=========:"+name);
//获得文件名
String fileName = item.getName();
log.info("文件名称=========:"+fileName);
int startSub = fileName.indexOf(".");
repName = fileName.substring(startSub);
log.info("截取的文件后缀名字==="+repName);
dirPath = primatekey+repName;
File remoteFile = new File(new String(dirPath.getBytes(),"utf-8"));
//4.将文件存入相应路径
log.info("存放新文件的路径======"+tmpPath+"文件名:"+dirPath);
file1 = new File(tmpPath, remoteFile.getName());
file1.createNewFile(); //创建新文件
InputStream ins = item.getInputStream(); //FileItem的内容
OutputStream ous = new FileOutputStream(file1);
byte[] buffer = new byte[1024]; //字节缓存
int len = 0 ;
while((len = ins.read(buffer)) > -1){
ous.write(buffer, 0, len);
}
ins.close();
ous.close();
}
}
/**
*
* 三、判断上传文件后缀名,不同版本Excel导入数据
*
*/
String returnval = "";
String Excelurl = tmpPath+dirPath;
if(Common.OFFICE_EXCEL_2010_POSTFIX.equals(repName)){
//1.读取10版本Excel文件中的数据
ReadExcel10Util mrs = new ReadExcel10Util(Excelurl); //始化Excel中的数据内容
XSSFWorkbook readbook = mrs.getReadbook();
List<List<String>> excelVal =
mrs.ItemVale(readbook);
for(int i =0;i<excelVal.size();i++)
{
List<String> colStr = excelVal.get(i);
log.info("Excel表行数:===="+excelVal.size()+"列数:===="+colStr.size());
String _inVal = "";
for(int j =0;j<colStr.size();j++)
{
_inVal = _inVal+"'"+colStr.get(j)+"'"+",";
}
if(_inVal.length()>0)
{
String sqlVals = _inVal.substring(0, _inVal.length()-1);
log.info("插入suppliernumber数据的val值:"+sqlVals);
String sql = "insert into suppliernumber(BH,GYSJC,GYSMC,XXGL,WLLB,SL,FKTJ,FKTJ2)values("+sqlVals+")";
log.info("sql插入数据======="+sql);
RecordSet inseSql=new RecordSet();
inseSql.execute(sql);
returnval="<div style='position:absolute;top: 50%;left:50%'><font color='red'>数据导入成功!</font></div>";
}else{
returnval="<div style='position:absolute;top: 50%;left:50%'><font color='red'>数据导入失败!</font></div>";
}
}
}
if(Common.OFFICE_EXCEL_2003_POSTFIX.equals(repName))
{
//1.读取03版本Excel文件中的数据
ReadExcel03Util mrs = new ReadExcel03Util(Excelurl); //始化Excel中的数据内容
HSSFSheet hfs = mrs.getSheet(); //03版本获取构造函数中的sheet文件
List<List<String>> strList = mrs.ItermCell(hfs); //遍历循环sheet文件中的数据
//2.将数据插入数据库
for(int i =0;i<strList.size();i++)
{
List<String> colStr = strList.get(i);
String _inVal = "";
for(int j =0;j<colStr.size();j++)
{
_inVal = _inVal+"'"+colStr.get(j)+"'"+",";
}
if(_inVal.length()>0)
{
String sqlVals = _inVal.substring(0, _inVal.length()-1);
log.info("插入suppliernumber数据的val值:"+sqlVals);
String sql = "insert into suppliernumber(BH,GYSJC,GYSMC,XXGL,WLLB,SL,FKTJ,FKTJ2)values("+sqlVals+")";
log.info("sql插入数据======="+sql);
RecordSet inseSql=new RecordSet();
inseSql.execute(sql);
returnval="<div style='position:absolute;top: 50%;left:50%'><font color='red'>数据导入成功!</font></div>";
}else{
returnval="<div style='position:absolute;top: 50%;left:50%'><font color='red'>数据导入失败!</font></div>";
}
}
}
response.setHeader("content-type", "text/html;charset=GBK");
response.setHeader("Pragma","No-cache");
response.setHeader("Cache-Control","no-cache");
response.setDateHeader("Expires", 0);
PrintWriter out = null;
try {
out = response.getWriter();
} catch (IOException e) {
e.printStackTrace();
}
out.print(returnval);
out.flush();
out.close();
}
}
Common.java
package com.rapoo.excelToDB;
public class Common {
public static final String OFFICE_EXCEL_2003_POSTFIX = ".xls";
public static final String OFFICE_EXCEL_2010_POSTFIX = ".xlsx";
}
JDK1.6.0
MyEclipse 6.5
Linux服务器
所需jar包:用积分到我的资源下载
java代码:
ReadExcel03Util.java
package com.rapoo.excelToDB;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.text.NumberFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import jxl.Workbook;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
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.poifs.filesystem.POIFSFileSystem;
public class ReadExcel03Util{
HSSFWorkbook readbook;
HSSFSheet sheet;
String FormatDate;
Log log = LogFactory.getLog(this.getClass());
public ReadExcel03Util(String uploadFilePath) throws IOException
{
FileInputStream fis=new FileInputStream(uploadFilePath);
POIFSFileSystem pfs=new POIFSFileSystem(fis);
readbook=new HSSFWorkbook(pfs);
sheet=readbook.getSheetAt(0);
}
public HSSFWorkbook getReadbook() {
return readbook;
}
public void setReadbook(HSSFWorkbook readbook) {
this.readbook = readbook;
}
public HSSFSheet getSheet() {
return sheet;
}
public void setSheet(HSSFSheet sheet) {
this.sheet = sheet;
}
public List<List<String>> ItermCell(HSSFSheet sheet){
List<List<String>> str1 = new ArrayList<List<String>>();
lable:
// 遍历行Row
for(int rowNum=1;rowNum<=sheet.getLastRowNum();rowNum++){
log.info("总共的行数:"+sheet.getLastRowNum());
List<String> str2 = new ArrayList<String>();
HSSFRow hssfRow=sheet.getRow(rowNum);
if(hssfRow==null){
break lable;
}
// 遍历列Cell
for(int cellNum=0;cellNum<hssfRow.getLastCellNum();cellNum++){
String hssfCell = getCellValue(rowNum,cellNum);
log.info("hssfCell的值:======"+hssfCell);
str2.add(hssfCell);
}
str1.add(str2);
}
return str1;
}
public int getsheetLastRow(){
return sheet.getLastRowNum();
}
public String getCellValue(int row, int col) {
String value="";
if(sheet==null)return "";
HSSFRow hrow=sheet.getRow(row);
if(hrow==null)return "";
HSSFCell cell=hrow.getCell((short) col);
if(cell==null)
return "";
int type=cell.getCellType();
switch(type)
{
case HSSFCell.CELL_TYPE_NUMERIC:
if (HSSFDateUtil.isCellDateFormatted(cell)) {
Date date = cell.getDateCellValue();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
value = sdf.format(date);
} else {
NumberFormat formatter = NumberFormat.getNumberInstance();
formatter.setMaximumFractionDigits(3);
String newD = formatter.format(
(Double) cell.getNumericCellValue()).toString()
.replace(",", "");
value = newD;
}
break;
case HSSFCell.CELL_TYPE_STRING: value=cell.getStringCellValue();break;
case HSSFCell.CELL_TYPE_FORMULA:value=cell.getStringCellValue();break;
case HSSFCell.CELL_TYPE_BOOLEAN:value=cell.getBooleanCellValue()+"";break;
case HSSFCell.CELL_TYPE_BLANK: value="";break;
default:value="";
}
return value.trim();
}
public int getRows()
{
if(sheet!=null)
return sheet.getPhysicalNumberOfRows();
else
return 0;
}
public String getDateCellValue(int r, short col) {
try{
if(getSheet()==null)
return getCellValue(r,col);
HSSFRow row=getSheet().getRow(r);
if(row==null)
return getCellValue(r,col);
HSSFCell cell=row.getCell(col);
if(cell==null)
return getCellValue(r,col);
Date date=cell.getDateCellValue();
return FormatDate.format("yyyy-MM-dd",date);
}catch(Exception e)
{
e.printStackTrace();
return getCellValue(r,col);
}
}
public int getFirstRow()
{
return sheet.getFirstRowNum();
}
public int getCols(int row)
{
return sheet.getRow(row).getPhysicalNumberOfCells();
}
}
ReadExcel10Util.java
package com.rapoo.excelToDB;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.text.NumberFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
import org.apache.poi.ss.usermodel.DateUtil;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class ReadExcel10Util {
Log log = LogFactory.getLog(this.getClass());
XSSFSheet xssfSheet;
XSSFWorkbook readbook;
public ReadExcel10Util(String fileurl) throws IOException{
FileInputStream fis= new FileInputStream(fileurl);
readbook= new XSSFWorkbook(fis);
xssfSheet= readbook.getSheetAt(0);
}
/**
* 读取excel中sheet的数量,sheet中每行每列的值
*
* @param fileurl
* @return
*/
public List<List<String>> ItemVale(XSSFWorkbook readbook){
log.info("进入ItemVale方法++++++++++++++++++");
List<List<String>> str1 = new ArrayList<List<String>>(); //存入excel中的数据
log.info("xssfWorkbook++++++++++++++++++");
//1.循环读取所有的sheet
tlable :
for (int numSheet = 0; numSheet < readbook.getNumberOfSheets(); numSheet++)
{
log.info("获取sheet表====="+readbook.getNumberOfSheets());
xssfSheet = readbook.getSheetAt(numSheet);
if (xssfSheet == null) {
break tlable;
}
log.info("读取sheet文件的所有行数======="+xssfSheet.getLastRowNum());
//2.读取行元素
for (int rowNum = 1; rowNum <=xssfSheet.getLastRowNum(); rowNum++)
{
List<String> str2 = new ArrayList<String>(); //每列中存入的数据
XSSFRow xssfRow = xssfSheet.getRow(rowNum);
if (xssfRow == null) {
break tlable;
}
for(int sheetcol=0;sheetcol<xssfRow.getLastCellNum();sheetcol++)
{
log.info("读取每行元素的每列数值======"+xssfRow.getLastCellNum());
XSSFCell cell = xssfRow.getCell(sheetcol);
String val = getCellValue(rowNum,sheetcol);
log.info("每行元素的每列的数据:"+val);
str2.add(val);
}
str1.add(str2);
}
}
return str1;
}
/**
* 2010版本Excel
*
* 获取cellValue值 判断每行每列的类型返回String value值
* @param row
* @param col
* @return
*/
public String getCellValue(int row, int col) {
String value="";
if(xssfSheet==null)return "";
XSSFRow hrow= xssfSheet.getRow(row);
if(hrow==null)return "";
XSSFCell cell= hrow.getCell(col);
if(cell==null)
return "";
int type= cell.getCellType();
switch(type)
{
case XSSFCell.CELL_TYPE_NUMERIC:
if (DateUtil.isCellDateFormatted(cell)) {
Date date = cell.getDateCellValue();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
value = sdf.format(date);
} else {
NumberFormat formatter = NumberFormat.getNumberInstance();
formatter.setMaximumFractionDigits(3);
String newD = formatter.format(
(Double) cell.getNumericCellValue()).toString()
.replace(",", "");
value = newD;
}
break;
case XSSFCell.CELL_TYPE_STRING: value=cell.getStringCellValue();break;
case XSSFCell.CELL_TYPE_FORMULA:value=cell.getStringCellValue();break;
case XSSFCell.CELL_TYPE_BOOLEAN:value=cell.getBooleanCellValue()+"";break;
case XSSFCell.CELL_TYPE_BLANK: value="";break;
default:value="";
}
return value.trim();
}
public XSSFSheet getXssfSheet() {
return xssfSheet;
}
public void setXssfSheet(XSSFSheet xssfSheet) {
this.xssfSheet = xssfSheet;
}
public XSSFWorkbook getReadbook() {
return readbook;
}
public void setReadbook(XSSFWorkbook readbook) {
this.readbook = readbook;
}
}
NewMyExcel.java
package com.rapoo.excelToDB;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.fileupload.DiskFileUpload;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileItemFactory;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import weaver.conn.RecordSet;
import weaver.file.FileUploadToPath;
import weaver.general.GCONST;
public class NewMyExcel extends HttpServlet{
Log log = LogFactory.getLog(this.getClass());
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
doPost(req, resp);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
log.info("进入NewMyExcelServle方法++++++++++");
/**
* 一、先删除suppliernumber表中的数据,再插入新数据
*
*/
String delExcel = "delete from suppliernumber";
RecordSet recordSet=new RecordSet();
recordSet.execute(delExcel);
String selExcel = "select * from suppliernumber";
RecordSet selRecordSet=new RecordSet();
selRecordSet.execute(selExcel);
if(selRecordSet.next()){
log.info("删除失败!------------");
}else{
log.info("删除成功!------------");
}
log.info("进入MyReadExcel中的doPost方法");
/**
* 二、将Excel存入服务器
*
*/
String tmpPath = "/app/ecology/tempfile/"; //存Excel文件的路径
String dirPath =""; //存Excel文件的路径地址(包含Excel名字)
//1.创建解析工厂
DiskFileUpload factory = new DiskFileUpload();
//2.解析
List<FileItem> items = null;
try {
items = factory.parseRequest(request);
} catch (FileUploadException e) {
e.printStackTrace();
}
String repName = "";
//3.遍历
File file1 ;
for(FileItem item : items){
if(item.getFieldName().equals("excelData"))
{
//将文件名加上唯一的标识 保证文件名不重复
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyMMddHHmmss");
String primatekey= sdf.format(date);
//获得字段名
String name = item.getFieldName();
log.info("字段名称=========:"+name);
//获得文件名
String fileName = item.getName();
log.info("文件名称=========:"+fileName);
int startSub = fileName.indexOf(".");
repName = fileName.substring(startSub);
log.info("截取的文件后缀名字==="+repName);
dirPath = primatekey+repName;
File remoteFile = new File(new String(dirPath.getBytes(),"utf-8"));
//4.将文件存入相应路径
log.info("存放新文件的路径======"+tmpPath+"文件名:"+dirPath);
file1 = new File(tmpPath, remoteFile.getName());
file1.createNewFile(); //创建新文件
InputStream ins = item.getInputStream(); //FileItem的内容
OutputStream ous = new FileOutputStream(file1);
byte[] buffer = new byte[1024]; //字节缓存
int len = 0 ;
while((len = ins.read(buffer)) > -1){
ous.write(buffer, 0, len);
}
ins.close();
ous.close();
}
}
/**
*
* 三、判断上传文件后缀名,不同版本Excel导入数据
*
*/
String returnval = "";
String Excelurl = tmpPath+dirPath;
if(Common.OFFICE_EXCEL_2010_POSTFIX.equals(repName)){
//1.读取10版本Excel文件中的数据
ReadExcel10Util mrs = new ReadExcel10Util(Excelurl); //始化Excel中的数据内容
XSSFWorkbook readbook = mrs.getReadbook();
List<List<String>> excelVal =
mrs.ItemVale(readbook);
for(int i =0;i<excelVal.size();i++)
{
List<String> colStr = excelVal.get(i);
log.info("Excel表行数:===="+excelVal.size()+"列数:===="+colStr.size());
String _inVal = "";
for(int j =0;j<colStr.size();j++)
{
_inVal = _inVal+"'"+colStr.get(j)+"'"+",";
}
if(_inVal.length()>0)
{
String sqlVals = _inVal.substring(0, _inVal.length()-1);
log.info("插入suppliernumber数据的val值:"+sqlVals);
String sql = "insert into suppliernumber(BH,GYSJC,GYSMC,XXGL,WLLB,SL,FKTJ,FKTJ2)values("+sqlVals+")";
log.info("sql插入数据======="+sql);
RecordSet inseSql=new RecordSet();
inseSql.execute(sql);
returnval="<div style='position:absolute;top: 50%;left:50%'><font color='red'>数据导入成功!</font></div>";
}else{
returnval="<div style='position:absolute;top: 50%;left:50%'><font color='red'>数据导入失败!</font></div>";
}
}
}
if(Common.OFFICE_EXCEL_2003_POSTFIX.equals(repName))
{
//1.读取03版本Excel文件中的数据
ReadExcel03Util mrs = new ReadExcel03Util(Excelurl); //始化Excel中的数据内容
HSSFSheet hfs = mrs.getSheet(); //03版本获取构造函数中的sheet文件
List<List<String>> strList = mrs.ItermCell(hfs); //遍历循环sheet文件中的数据
//2.将数据插入数据库
for(int i =0;i<strList.size();i++)
{
List<String> colStr = strList.get(i);
String _inVal = "";
for(int j =0;j<colStr.size();j++)
{
_inVal = _inVal+"'"+colStr.get(j)+"'"+",";
}
if(_inVal.length()>0)
{
String sqlVals = _inVal.substring(0, _inVal.length()-1);
log.info("插入suppliernumber数据的val值:"+sqlVals);
String sql = "insert into suppliernumber(BH,GYSJC,GYSMC,XXGL,WLLB,SL,FKTJ,FKTJ2)values("+sqlVals+")";
log.info("sql插入数据======="+sql);
RecordSet inseSql=new RecordSet();
inseSql.execute(sql);
returnval="<div style='position:absolute;top: 50%;left:50%'><font color='red'>数据导入成功!</font></div>";
}else{
returnval="<div style='position:absolute;top: 50%;left:50%'><font color='red'>数据导入失败!</font></div>";
}
}
}
response.setHeader("content-type", "text/html;charset=GBK");
response.setHeader("Pragma","No-cache");
response.setHeader("Cache-Control","no-cache");
response.setDateHeader("Expires", 0);
PrintWriter out = null;
try {
out = response.getWriter();
} catch (IOException e) {
e.printStackTrace();
}
out.print(returnval);
out.flush();
out.close();
}
}
Common.java
package com.rapoo.excelToDB;
public class Common {
public static final String OFFICE_EXCEL_2003_POSTFIX = ".xls";
public static final String OFFICE_EXCEL_2010_POSTFIX = ".xlsx";
}
相关文章推荐
- redis配置说明
- mysql数据库cure操作
- Redis的高级应用——数据安全
- ecshop mysql
- Mysql----游标的嵌套循环
- 10Redis键空间通知(keyspace notifications)
- SQL 基础--> 子查询
- SQL 基础-->SELECT 查询
- SQL基础-->多表查询
- mac 下安装 mongodb,Robommongodb
- win7-x64安装mysql5.7.11(官方zip版)
- MOS上oracle升级补丁查询
- MySQL优化技巧之三(索引操作和查询优化)
- mysql日志详细解析
- Oracle 11g R2 用exp无法导出空表解决方案
- EF(EntityFramework) 的 CodeFirst 使用指南一(创建)
- MySQL使用内存算法
- j2ee 使用db.properties连接mysql数据库
- mysql插入数据,获取最新插入的ID(自增列)
- OGG(ORACLE GOLDENGATE)使用手册