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

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. PS快捷键

  2. APP开发+发布流程

    ios开发(证书+应用发布) 证书获取:http://newdocx.appcan.cn/newdocx/docx?type=1297_1291ios应用发布:http://newdocx.appca ...

  3. IBatis 批量插入数据之SqlBulkCopy

    public void AddLetters(IList<int> customerIds, string title, string content, LetterEnum.Letter ...

  4. eclipse安装Eclipse Memory Analyzer插件

    在Install New software中输入 http://archive.eclipse.org/mat/1.2/update-site/ 然后选择Memory Analyzer for Ecl ...

  5. HTML补充

    补充一: 让DIV 自动居中 width:980px;margin:0 auto; 补充二: 内敛标签: inline #块级标签转换成内联标签. block #变成块级. inline-block ...

  6. FireFox每次访问页面时检查最新版本

    FireFox每次访问页面时检查最新版本 浏览器都有自己的缓存机制,作为开发人员,每次js的修改都要清空缓存,显然很不方便.而firefox并没有提供ie那样的设置. 下面的方法就可以非常方便的设置f ...

  7. 在Activity之间传递参数(三)——serializable和parcelable的区别

    传递值对象: 一.serializable实现:简单易用 serializable的迷人之处在于你只需要对某个类以及它的属性实现Serializable 接口即可.Serializable 接口是一种 ...

  8. Html限制input输入框只能输入数字

    限制输入框只能输入数字, onafterpaste防止用户从其它地方copy内容粘贴到输入框: <input type="text" onkeyup="this.v ...

  9. PhpStorm 2016.3 For Mac 重大里程碑更新 -- 终于解决了不能输入中文标点符号的重大bug

    PhpStorm 2016.3 For Mac 重大里程碑更新 1.[终于解决了]不能输入中文标点符号的重大bug,如 逗号“,”.“.”: 2.可以在一个窗体中,同时打开多个项目: 3.其他... ...

  10. 【Android开发实践】android.view.InflateException: Binary XML file line #12: Error inflating class fragment问题解决

    一般出现的原因是fragment引入的包错了,应该是import android.app.ListFragment;而不是import android.support.v4.app.ListFragm ...