写入:没有关闭流,容错并不完善。

private void insertFile(HttpServletRequest request,
HttpServletResponse response) throws IOException { String path_member = request.getParameter("path_member");
List list = this.insert("f:/tmp001.xls", "gs_sale_members"); // url
// table
PrintWriter pw = response.getWriter();
pw.print("{\"result\":" + list + "}"); // 返回插入失败的行数
pw.close();
}
/**
*
* @param path
* 要解析的excel文件路径
* @param dataTable
* 要写入到数据库中的表名
* @throws BiffException
* @throws IOException
*/
public List insert(String path, String dataTable) throws IOException,
IOException { int a = 0;
File file = new File(path); List list = new ArrayList(); HSSFWorkbook rwb = null;
// 创建输入流
InputStream is = new FileInputStream(path);
rwb = new HSSFWorkbook(is); // 得到工作簿
HSSFSheet sheet = rwb.getSheetAt(0); int rsRows = sheet.getLastRowNum();// 获取总行数
String simNumber = "";// 每个单元格中的数据 DBConn jdbc = new DBConn(); String str = "gs_salemen_seq,gs_salemen_name,gs_salemen_id,gs_salemen_papers_id,gs_salemen_jgid,gs_salemen_type,gs_salemen_status";// 拼接要插入的列
HSSFRow row = sheet.getRow(0); // 获取第一行
int rsColumns = row.getPhysicalNumberOfCells();// 列数
// for (short j = 0; j < rsColumns; j++) {
// HSSFCell cell = row.getCell(j);
// simNumber = cell.getStringCellValue();
// if (j == rsColumns - 1) {
// // 最后一列不用加逗号
// str += simNumber;
// } else {
// str += simNumber + ",";
// }
// }
for (short i = 0; i < rsRows; i++) {
HSSFRow row1 = sheet.getRow(i); // 获取行
// 拼接sql
String sql = "insert into " + dataTable + "(" + str + ") values("; for (short j = 0; j < rsColumns; j++) { HSSFCell cell = row1.getCell(j);
if (cell != null) {
row1.getCell(j).setCellType(cell.CELL_TYPE_STRING);
}
System.out.println(cell);
simNumber = cell.getStringCellValue();
if (j == 0) {
sql += base.createId("gs_salemen_seq") + ",'" + simNumber
+ "',";
} else if (j == 5) {
sql += "'" + simNumber + "'";
} else {
sql += "'" + simNumber + "',";
}
}
sql += " )";
a = jdbc.executeUpdate(sql);// 执行sql
if (a == 0) {
list.add(i);
}
// 查看拼的sql
System.out.println("第" + (i + 1) + "行" + sql);
}
jdbc.closeStmt();
jdbc.closeConnection();
return list;
}
package com.lj.util;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement; /**
* Oracle数据库连接
*
*/
public class DBConn { private Connection conn = null;
private Statement stmt = null;
private ResultSet rs = null; /** Oracle数据库连接 URL */
private final static String DB_URL = "jdbc:oracle:thin:@192.168.1.7:1521:orcl"; /** Oracle数据库连接驱动 */
private final static String DB_DRIVER = "oracle.jdbc.driver.OracleDriver"; /** 数据库用户名 */
private final static String DB_USERNAME = "scott"; /** 数据库密码 */
private final static String DB_PASSWORD = "tiger"; /**
* 获取数据库连接
*
* @return
*/
public Connection getConnection() {
/** 声明Connection连接对象 */
Connection conn = null;
try {
/** 使用 Class.forName()方法自动创建这个驱动程序的实例且自动调用DriverManager来注册它 */
Class.forName(DB_DRIVER);
/** 通过 DriverManager的getConnection()方法获取数据库连接 */
conn = DriverManager
.getConnection(DB_URL, DB_USERNAME, DB_PASSWORD);
stmt = conn.createStatement();
} catch (Exception ex) {
ex.printStackTrace();
}
return conn;
} /**
* 查询数据部分
*
* @return ResultSet
*/
public ResultSet executeQuery(String sqlStr) {
if (sqlStr == null || sqlStr.length() == 0)
return null;
try {
this.getConnection();
rs = stmt.executeQuery(sqlStr);
return rs;
} catch (SQLException ex) {
ex.printStackTrace();
return null;
} } /**
* 更新数据部分
*
* @return 更新是否成功
*/
public int executeUpdate(String sqlStr) { if (sqlStr == null || sqlStr.length() == 0)
return 0;
try {
this.getConnection();
stmt.executeUpdate(sqlStr);
return 1;
} catch (SQLException ex) {
ex.printStackTrace();
return 0;
} finally {
try {
if (stmt != null) {
stmt.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
try {
if (conn != null) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
} public void closeStmt() {
try {
if (stmt != null) {
stmt.close();
}
} catch (Exception e) {
e.printStackTrace();
}
} /**
* 关闭数据库连接
*
* @param connect
*/
public void closeConnection() {
try {
if (conn != null) {
/** 判断当前连接连接对象如果没有被关闭就调用关闭方法 */
if (!conn.isClosed()) {
conn.close();
}
}
} catch (Exception ex) {
ex.printStackTrace();
}
} }

读出:

private void outExcel(HttpServletRequest request,
HttpServletResponse response) throws IOException {
// 输出地址
String loc = request.getParameter("loc");
// 查询的表
String table = request.getParameter("table"); File file = new File(loc);
if (!file.exists()) { file.createNewFile();
}
String sql = "select * from " + table;
List<Map<String, Object>> list = base.querySql(sql);
write2excel(list, file);
}
public static void write2excel(List<Map<String, Object>> list, File file) {

        HSSFWorkbook excel = new HSSFWorkbook();

        HSSFSheet sheet = excel.createSheet("dept");

        HSSFRow firstRow = sheet.createRow(0);

        HSSFCell cells[] = new HSSFCell[3];

        String[] titles = new String[] { "deptno", "dname", "loc" };

        for (int i = 0; i < 3; i++) {

            cells[0] = firstRow.createCell(i);

            cells[0].setCellValue(titles[i]);

        }

        for (int i = 0; i < list.size(); i++) {

            HSSFRow row = sheet.createRow(i + 1);

            // Computer computer = computers.get(i);

            HSSFCell cell = row.createCell(0);

            System.out.println(list.get(i).get("deptno"));

            cell.setCellValue(list.get(i).get("deptno").toString());

            cell = row.createCell(1);

            cell.setCellValue((String) list.get(i).get("dname"));

            cell = row.createCell(2);

            cell.setCellValue((String) list.get(i).get("loc"));

            cell = row.createCell(3);

        }

        OutputStream out = null;

        try {

            out = new FileOutputStream(file);

            excel.write(out);

            out.close();

        } catch (FileNotFoundException e) {

            e.printStackTrace();

        } catch (IOException e) {

            e.printStackTrace();

        }

    }

Java -> 把Excel表格中的数据写入数据库与从数据库中读出到本地 (未完善)的更多相关文章

  1. Django上传excel表格并将数据写入数据库

    前言: 最近公司领导要统计技术部门在各个业务条线花费的工时百分比,而 jira 当前的 Tempo 插件只能统计个人工时.于是就写了个报表工具,将 jira 中导出的个人工时excel表格 导入数据库 ...

  2. 读取Excel表格日期类型数据的时候

    用POI读取Excel数据:(版本号:POI3.7) 1.读取Excel 2.Excel数据处理: Excel存储日期.时间均以数值类型进行存储,读取时POI先判断是是否是数值类型,再进行判断转化 1 ...

  3. JAVA处理Excel表格数据并写入数据库

    package com.hncj.test; import java.io.FileInputStream; import java.sql.Connection; import java.sql.D ...

  4. 将Oracle数据库中的数据写入Excel

    将Oracle数据库中的数据写入Excel 1.准备工作 Oracle数据库"TBYZB_FIELD_PRESSURE"表中数据如图: Excel模板(201512.xls): 2 ...

  5. Java读取excel表格

    Java读取excel表格 一般都是用poi技术去读取excel表格的,但是这个技术又是什么呢 什么是Apache POI? Apache POI是一种流行的API,它允许程序员使用Java程序创建, ...

  6. Java操作excel表格

    (1)Java读取excel表格 package com.songyan.excel; import java.io.File; import java.io.FileInputStream; imp ...

  7. java导出excel表格

    java导出excel表格: 1.导入jar包 <dependency> <groupId>org.apache.poi</groupId> <artifac ...

  8. Java读取Excel指定列的数据详细教程和注意事项

    本文使用jxl.jar工具类库实现读取Excel中指定列的数据. jxl.jar是通过java操作excel表格的工具类库,是由java语言开发而成的.这套API是纯Java的,并不依赖Windows ...

  9. 转:Java修改Excel单元格的数据及格式

    https://blog.csdn.net/aking21alinjuju/article/details/6001153?locationNum=2 继前两节的Java读取.写入Excel后,本期将 ...

  10. java的excel表格的导出与下载

    今天做一个java对excel表格的导出和下载的时候,从网络上搜寻了下载的模板,代码如下: 控制层: @RequestMapping(value = "excelOut_identifier ...

随机推荐

  1. BZOJ4416: [Shoi2013]阶乘字符串

    可以大胆猜想n>21时无解,至于依据,不开O2,1s,n<=21刚好能卡过去= = 并不会证= = #include<cstdio> void up(int& a,in ...

  2. HTML3

    1. HTML5新增的标签 主体结构标签, 用来做布局.比div更具语义 <header> 定义文档的页眉 <nav> 定义导航链接的部分 <article> 规定 ...

  3. global name 'validate_on_submit' is not defined错误

    原因就是validate_on_submit()方法是属于form的方法我使用的时候忘了form. 还有一个比较重要的是validate_on_submit()方法是wtf特有的而wtform是没有这 ...

  4. c++11 中成员变量初始化的顺序

    参考C++11FAQ https://www.chenlq.net/cpp11-faq-chs 11以后可以直接在类里面初始化成员变量,类似这样 class A { int a=1; const in ...

  5. hadoop源码编译——2.5.0版本

    强迫症必治: WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using b ...

  6. Android 实现分页(使用TabWidget/TabHost)

    注:本文为转载,但该内容本人已亲身尝试,确认该方法可行,代码有点小的改动,转载用作保存与分享. 原作者地址:http://gundumw100.iteye.com/blog/853967 个人吐嘈:据 ...

  7. vijos1404 遭遇战

    描述 今天,他们在打一张叫DUSTII的地图,万恶的恐怖分子要炸掉藏在A区的SQC论坛服务器!我们SQC的人誓死不屈,即将于恐怖分子展开激战,准备让一个人守着A区,这样恐怖分子就不能炸掉服务器了.(一 ...

  8. Shell入门教程:Shell当中的特殊变量

    Shell当中的特殊变量 一.保留变量 $IFS 这个变量中保存了用于分割输入参数的分割字符,默认识空格. $HOME 这个变量中存储了当前用户的根目录路径. $PATH 这个变量中存储了当前 She ...

  9. 安卓TabHost页面

    <?xml version="1.0" encoding="UTF-8"?> <!-- TabHost组件id值不可变--> <T ...

  10. LINUX DNS解析的3种修改方法~

    1.HOST 本地DNS解析 vi /etc/hosts 添加规则 例如: 223.231.234.33 www.baidu.com 2.网卡配置文件DNS服务地址  vi /etc/sysconfi ...