Java -> 把Excel表格中的数据写入数据库与从数据库中读出到本地 (未完善)
写入:没有关闭流,容错并不完善。
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表格中的数据写入数据库与从数据库中读出到本地 (未完善)的更多相关文章
- Django上传excel表格并将数据写入数据库
前言: 最近公司领导要统计技术部门在各个业务条线花费的工时百分比,而 jira 当前的 Tempo 插件只能统计个人工时.于是就写了个报表工具,将 jira 中导出的个人工时excel表格 导入数据库 ...
- 读取Excel表格日期类型数据的时候
用POI读取Excel数据:(版本号:POI3.7) 1.读取Excel 2.Excel数据处理: Excel存储日期.时间均以数值类型进行存储,读取时POI先判断是是否是数值类型,再进行判断转化 1 ...
- JAVA处理Excel表格数据并写入数据库
package com.hncj.test; import java.io.FileInputStream; import java.sql.Connection; import java.sql.D ...
- 将Oracle数据库中的数据写入Excel
将Oracle数据库中的数据写入Excel 1.准备工作 Oracle数据库"TBYZB_FIELD_PRESSURE"表中数据如图: Excel模板(201512.xls): 2 ...
- Java读取excel表格
Java读取excel表格 一般都是用poi技术去读取excel表格的,但是这个技术又是什么呢 什么是Apache POI? Apache POI是一种流行的API,它允许程序员使用Java程序创建, ...
- Java操作excel表格
(1)Java读取excel表格 package com.songyan.excel; import java.io.File; import java.io.FileInputStream; imp ...
- java导出excel表格
java导出excel表格: 1.导入jar包 <dependency> <groupId>org.apache.poi</groupId> <artifac ...
- Java读取Excel指定列的数据详细教程和注意事项
本文使用jxl.jar工具类库实现读取Excel中指定列的数据. jxl.jar是通过java操作excel表格的工具类库,是由java语言开发而成的.这套API是纯Java的,并不依赖Windows ...
- 转:Java修改Excel单元格的数据及格式
https://blog.csdn.net/aking21alinjuju/article/details/6001153?locationNum=2 继前两节的Java读取.写入Excel后,本期将 ...
- java的excel表格的导出与下载
今天做一个java对excel表格的导出和下载的时候,从网络上搜寻了下载的模板,代码如下: 控制层: @RequestMapping(value = "excelOut_identifier ...
随机推荐
- PS快捷键
- APP开发+发布流程
ios开发(证书+应用发布) 证书获取:http://newdocx.appcan.cn/newdocx/docx?type=1297_1291ios应用发布:http://newdocx.appca ...
- IBatis 批量插入数据之SqlBulkCopy
public void AddLetters(IList<int> customerIds, string title, string content, LetterEnum.Letter ...
- eclipse安装Eclipse Memory Analyzer插件
在Install New software中输入 http://archive.eclipse.org/mat/1.2/update-site/ 然后选择Memory Analyzer for Ecl ...
- HTML补充
补充一: 让DIV 自动居中 width:980px;margin:0 auto; 补充二: 内敛标签: inline #块级标签转换成内联标签. block #变成块级. inline-block ...
- FireFox每次访问页面时检查最新版本
FireFox每次访问页面时检查最新版本 浏览器都有自己的缓存机制,作为开发人员,每次js的修改都要清空缓存,显然很不方便.而firefox并没有提供ie那样的设置. 下面的方法就可以非常方便的设置f ...
- 在Activity之间传递参数(三)——serializable和parcelable的区别
传递值对象: 一.serializable实现:简单易用 serializable的迷人之处在于你只需要对某个类以及它的属性实现Serializable 接口即可.Serializable 接口是一种 ...
- Html限制input输入框只能输入数字
限制输入框只能输入数字, onafterpaste防止用户从其它地方copy内容粘贴到输入框: <input type="text" onkeyup="this.v ...
- PhpStorm 2016.3 For Mac 重大里程碑更新 -- 终于解决了不能输入中文标点符号的重大bug
PhpStorm 2016.3 For Mac 重大里程碑更新 1.[终于解决了]不能输入中文标点符号的重大bug,如 逗号“,”.“.”: 2.可以在一个窗体中,同时打开多个项目: 3.其他... ...
- 【Android开发实践】android.view.InflateException: Binary XML file line #12: Error inflating class fragment问题解决
一般出现的原因是fragment引入的包错了,应该是import android.app.ListFragment;而不是import android.support.v4.app.ListFragm ...