java实现excel与mysql的导入导出
注意:编码前先导入poi相关jar包
1 /**
* 读excel 到list
*
* @param file excel file
* @param fields 字段数组
* @return
* example OfficeHandle.readExcel("d:/test/test.xls",
* new String[]{"id","num","name"})
*/
public static JSONArray readExcel(String file,String[] fields){
if(null == file || null == fields)
return null; JSONArray jarr = new JSONArray();
FileInputStream fis = null;
int cols = 0;
try {
/************************读取本地文件(如d:/test/test.xls)********************************************/
fis = new FileInputStream(new File(file));//读取本地文件(如d:/test/test.xls)
HSSFWorkbook workbook = new HSSFWorkbook(fis);
/**********************读取服务器文件(file="http://你的地址")******************************************/
URL url = new URL(file); //file="http://你的地址"
URLConnection connection = url.openConnection();
InputStream is = connection.getInputStream();
HSSFWorkbook workbook = new HSSFWorkbook(is);
/**************************************************************************************************/
HSSFSheet sheet = workbook.getSheetAt(0);
if(sheet != null){
HSSFRow row = sheet.getRow(0);
if(row != null)
cols = row.getLastCellNum(); for(int i=1,len=sheet.getLastRowNum();i<=len;i++){
row = sheet.getRow(i);
if(row != null){
JSONObject jo = new JSONObject();
for(int j=0;j<cols;j++){
HSSFCell cell = row.getCell(j);
if(cell != null){
Object v=null;
HSSFCellStyle type = cell.getCellStyle();
switch (cell.getCellType()) {
case HSSFCell.CELL_TYPE_NUMERIC:
v = cell.getNumericCellValue();
break;
case HSSFCell.CELL_TYPE_STRING:
v = cell.getStringCellValue();
break;
case HSSFCell.CELL_TYPE_BOOLEAN:
v = cell.getBooleanCellValue();
break;
case HSSFCell.CELL_TYPE_FORMULA:
v = cell.getCellFormula();
break;
default:
System.out.println("unsuported sell type");
break;
}
jo.put(fields[j], v); }
}
jarr.add(jo);
}
}
}
} catch (FileNotFoundException e ) { }catch(IOException e){ }finally{
try {
fis.close();
} catch (IOException e) { }
}
return jarr;
} /**
* 从list生成excel
*
* @param lstData json array data
* @param fieldEn 字段英文名
* @param fieldZh 生成字段名
* @return
* example OfficeHandle.exportExcel(lstdata,
* new String[]{"schoolId","schoolno","schoolName","address","remarks","linkMobile","linkMan"},
* new String[]{"学校编号","","","","","",""},
* "d:/test/exel1.xls");
*/
public static String exportExcel(JSONArray lstData,String[] fieldEn,String[] fieldZh,String fname){
if(null == lstData || null == fieldEn)
return null; int fieldLen = fieldEn.length;
HSSFWorkbook workbook = new HSSFWorkbook();
HSSFSheet sheet = workbook.createSheet();
HSSFRow row = sheet.createRow(0);
for(int i=0;i<fieldLen;i++){
String fn = fieldEn[i];
if(null != fieldZh && !StringUtils.isEmpty(fieldZh[i])){
fn = fieldZh[i];
}
HSSFCell cell = row.createCell(i);
cell.setCellValue(fn);
}
for(int i=0,len=lstData.size();i<len;i++){
row = sheet.createRow(i+1);
for(int j=0;j<fieldLen;j++){
JSONObject jo = lstData.getJSONObject(i);
if(jo != null){
HSSFCell cell = row.createCell(j);
if(jo.containsKey(fieldEn[j])){
cell.setCellValue(jo.getString(fieldEn[j]));
}
}
}
}
FileOutputStream fos = null;
try {
fos = new FileOutputStream(fname);
workbook.write(fos); } catch (FileNotFoundException e) { e.printStackTrace();
}catch (IOException e) { }finally{
try {
fos.close();
} catch (IOException e) { }
}
return fname;
}
案例展示
/**
* 导入excel数据
*/
public void importExcel(){
String x = null;
JSONArray jar = new JSONArray();
School sc = new School();
String[] fields = new String[]{"schoolId","schoolno","schoolName","address","remarks","linkMobile","linkMan"}; try{ jar = officHandle.readExcel(filePath, fields,true);
for(int i=0,len=jar.size();i<len;i++){
JSONObject ob = JSONObject.fromObject(jar.get(i));
String schoolno = ob.getString("schoolno");
if(!school.isExist(schoolno)){//根据学校编号判断,若不存在就添加否则更新
sc = (School)school.addRecord((School)JSONObject.toBean(ob,School.class));
}else{
School sch = (School)school.findByProperty("School", new String[]{"schoolno"}, new Object[]{schoolno}).get(0);//获取存在的记录id
ob.put("schoolId", sch.getSchoolId());
sc = (School)school.editRecord((School)JSONObject.toBean(ob,School.class));
}
}
x = sc.getSchoolId().toString();
}catch(Exception e){
x = errorHandle.handleErr(e);
}
servletHandle.writeToClient1(ServletActionContext.getResponse(), x);
}
/**
* 导出数据到Excel
*/
public void exportData(){
String x = null;
String[] idArr = model.getIds().split(",");
List<School> schoolList = new ArrayList<School>();
JSONArray jar = new JSONArray();//数据list
String[] fieldEn = new String[]{"schoolno","schoolName","address","linkMobile","linkMan","remarks"};
String[] fieldCn = new String[]{"学校编号","学校名称","学校地址","联系电话","联系人","备注"};
try{
if(StringUtils.isEmpty(model.getIds())){//全部导出
x = school.findByProperty("School", "*",
"json", true,null, null, null, null, 0, 0);
schoolList = (List<School>) JSONObject.fromObject(x).get("rows");
if(schoolList.size() > 0){
for(int i=0,len=schoolList.size();i<len;i++){
jar.add(schoolList.get(i));
}
} }else{
for(int i=0,len=idArr.length;i<len;i++){//导出选择记录
schoolList = school.findByProperty("School", new String[]{"schoolId"}, new Object[]{Long.parseLong(idArr[i])});
if(schoolList.size() > 0)
jar.add(schoolList.get(0));
}
}
String basePath = ServletActionContext.getServletContext().getRealPath("/");//获取服务器文件存放地址
String path = "/assets/export/" + UUID.randomUUID().toString().replaceAll("-", "") + ".xls";//拼接随机生成文件名,用于写入excel数据流
String fn = basePath + path;
officHandle.exportExcel(jar, fieldEn, fieldCn, fn);//传入数据list,字段名及保存文件名
x = CommonConfig.domainName + CommonConfig.contextPath + path;//获取文件路径返回,location.href = x(浏览器自动下载文件)
}catch(Exception e){
x = errorHandle.handleErr(e);
}
servletHandle.writeToClient1(ServletActionContext.getResponse(), x);
}
java实现excel与mysql的导入导出的更多相关文章
- java中 Excel表实现数据导入导出
需要引入依赖: <!-- https://mvnrepository.com/artifact/org.apache.poi/poi --> <dependency> < ...
- MySQL数据导入导出方法与工具mysqlimport
MySQL数据导入导出方法与工具mysqlimport<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office ...
- MYSQL数据库导入导出(可以跨平台)
MYSQL数据库导入导出.sql文件 转载地址:http://www.cnblogs.com/cnkenny/archive/2009/04/22/1441297.html 本人总结:直接复制数据库, ...
- mysql数据库导入导出 查询 修改表记录
mysql数据导入导出: 导入: 把系统的文件的内容,保存到数据库的表里 导入数据的基本格式:mysql> load data infile "文件名" into table ...
- 学习 MySQL中导入 导出CSV
学习 MySQL中导入 导出CSV http://blog.csdn.net/sara_yhl/article/details/6850107 速度是很快的 导出 select * from t ...
- MySql 利用mysql&mysqldum导入导出数据
MySql 利用mysql&mysqldum导入导出数据 by:授客 QQ:1033553122 测试环境 Linux下测试,数据库MySql 工具 mysqldump,该命令位于mysq ...
- mysql执行导入导出数据源
mysql执行导入导出数据源 一.导出数据表结构 导出数据库建表的结构,不带数据,windows环境下,在cmd下,执行: mysqldump –no-data –u username –p* dat ...
- MySQL数据导入导出(一)
今天遇到一个需求,要用自动任务将一张表的数据导入另一张表.具体场景及限制:将数据库A中表A的数据导入到数据库B的表B中(增量数据或全量数据两种方式):体系1和体系2只能分别访问数据库A和数据库B.附图 ...
- Java实现Mysql数据导入导出
package com.backup; import java.io.BufferedReader;import java.io.FileInputStream;import java.io.File ...
随机推荐
- 本人整理的一些PHP常用函数
<?php //===============================时间日期=============================== //y返回年最后两位,Y年四位数,m月份数字 ...
- C#:实现托盘
1.向窗体上添加如下控件:MenuStrip menuStrip1, NotifyIcon ni_frmMain,Timer timer1, ContentMenuStrip cms_notify.其 ...
- 用ThreadLocal为线程生成唯一标识及实现原理
1.在多线程编程中,有时候需要自动为每个启动的线程生成一个唯一标识,这个时候,通过一个ThreadLocal变量来保存每个线程的标识是最有效.最方便的方式了. 2.ThreadLocal 实例通常是类 ...
- js实现图片的瀑布流
先看效果: 初始状态:
- Java中的String为什么是不可变的?
转载:http://blog.csdn.net/zhangjg_blog/article/details/18319521 什么是不可变对象? 众所周知, 在Java中, String类是不可变的.那 ...
- uva 10673 Play with Floor and Ceil
Problem APlay with Floor and CeilInput: standard inputOutput: standard outputTime Limit: 1 second Th ...
- (7)redis pipeline
redis是一个cs模式的tcp server,使用和http类似的请求响应协议.一个client可以通过一个socket连接发起多个请求命令.每个请求命令发出后client通常 会阻塞并等待redi ...
- 编写shell管理脚本(二)
8.1 先测试“/etc/vsftpd”.“/etc/hosts”是否为目录,并通过“$?”变量查看返回状态值,据此判断测试结果.[root@localhost ~]# [ -d /etc/vsft ...
- mysql DATE_ADD DATE_SUB
一.DATE_ADD() 函数向日期添加指定的时间间隔. DATE_ADD(date,INTERVAL expr type)date 参数是合法的日期表达式.expr 参数是您希望添加的时间间隔. t ...
- 【leetcode❤python】237. Delete Node in a Linked List
#-*- coding: UTF-8 -*- # Definition for singly-linked list.# class ListNode(object):# def __init ...