Java实现把excel xls中数据转为可直接插入数据库的sql文件_java

我的一贯风格,代码说明一切。。

废话不多说了,直接给大家贴代码了,具体代码如下所示:

package Tools;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.List;
import jxl.Sheet;
import jxl.Workbook;
import entity.Student;
public class ConvertXMSToSQL {
/**
* 从xls表格中获取数据,生成可执行的sql文件,用以插入数据库,注意需要引入jxl包!支持int,Integer,long,Long,String
* ,可自行扩展
*
* @param args
* @throws IllegalArgumentException
* @throws IllegalAccessException
*/
public static void main(String[] args) throws IllegalArgumentException,
IllegalAccessException {
// 得到表格中所有的数据
List<Student> listExcel = getAllByExcel("C:\\Users\\xxx\\Desktop\\zzz.xls");
try {
String path = "C:\\Users\\xxx\\Desktop\\convert.sql";// 文件保存路径、名字
File file = new File(path);
BufferedWriter ow = new BufferedWriter(new FileWriter(file));
for (Student c : listExcel) {
String sql = "insert into cfg_avatar values (" + outSql(c)
+ ")";
ow.write(sql + ";" + "\n");
}// 写入内容
ow.close();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 从xls中获取数据
*
* @param file
* @return
*/
public static List<Student> getAllByExcel(String file) {
List<Student> list = new ArrayList<Student>();
try {
Workbook rwb = Workbook.getWorkbook(new File(file));
Sheet rs = rwb.getSheet(0);
int clos = rs.getColumns();// 得到所有的列
int rows = rs.getRows();// 得到所有的行
// 样例中,数据从第三列第一行开始
for (int i = 2; i < rows; i++) {
// 取得的每一行的所有数据存入listString
List<String> listString = new ArrayList<String>();
for (int j = 0; j < clos; j++) {
String str = rs.getCell(j, i).getContents();
listString.add(str);
}
Student Student = (Student) newObject(new Student(), listString);
list.add(Student);
}
} catch (Exception e) {
e.printStackTrace();
}
return list;
}
/**
* 使用反射设置数据。此例中可设置的数据类型有限,没有的请自己添加!!!
*
* @param obj
* @param list
* @return
* @throws IllegalArgumentException
* @throws IllegalAccessException
*/
public static Object newObject(Object obj, List<String> list)
throws IllegalArgumentException, IllegalAccessException {
Field[] field = obj.getClass().getDeclaredFields();
for (int i = 0; i < field.length; i++) {
Field f = field[i];
f.setAccessible(true);
if (f.getType() == String.class) {
f.set(obj, list.get(i));
}
if (f.getType() == Integer.class) {
f.set(obj, Integer.parseInt(list.get(i)));
}
if (f.getType() == int.class) {
f.set(obj, Integer.parseInt(list.get(i)));
}
if (f.getType() == Long.class) {
f.set(obj, Long.parseLong(list.get(i)));
}
if (f.getType() == long.class) {
f.set(obj, Long.parseLong(list.get(i)));
}
}
return obj;
}
/**
*
* @param obj
* @return
* @throws IllegalArgumentException
* @throws IllegalAccessException
*/
public static String outSql(Object obj) throws IllegalArgumentException,
IllegalAccessException {
StringBuffer buffer = new StringBuffer();
Field[] field = obj.getClass().getDeclaredFields();
for (int i = 0; i < field.length; i++) {
Field f = field[i];
f.setAccessible(true);
if (f.getType() == String.class) {
buffer.append("'");
}
buffer.append(f.get(obj));
if (f.getType() == String.class) {
buffer.append("'");
}
if (i < field.length - 1) {
buffer.append(",");
}
}
return buffer.toString();
}
}

有关Java实现把excel xls中数据转为可直接插入数据库的sql文件的知识,小编就给大家介绍这么多,希望对大家有所帮助!

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索java_excel_xls数据库
java xml 转为xls、java csv转为xls、java实现数据库同步、java实现数据库备份、java实现数据库监听器,以便于您获取更多的相关知识。

时间: 2024-10-29 00:50:17

Java实现把excel xls中数据转为可直接插入数据库的sql文件_java的相关文章

jsp-java 中JSP 实现把excel表中数据导入到mysql数据库中的表中的具体实现方法

问题描述 java 中JSP 实现把excel表中数据导入到mysql数据库中的表中的具体实现方法 java 中JSP 实现把excel表中数据导入到mysql数据库中的表中的具体实现方法 解决方案 参考:http://blog.csdn.net/casilin/article/details/5750773 解决方案二: 楼主幸苦了!!谢谢分享!!! 解决方案三: jsp导excel到mysql数据库 http://wenku.it168.com/d_000468232.shtml

java:导入excel并校验数据的效率问题

问题描述 java:导入excel并校验数据的效率问题 导入1000行的数据,第一次用windows系统下的oracle数据库,每校验一条数据执行时间为0.003秒:第二次用linux系统下的oracle数据库,每校验一条数据执行时间为0.3秒.linux系统下的数据库数据量较多,但只查一次用时0.5秒(以后999行记录不再查数据库),查询出来的结果集与windows下的结果集一样(两条数据).这两次除上述数据库环境不同外(只改了连接数据库的配置文件),其他因素均一样(自己的机器测试,windo

对Excel表中数据一对多查询的方法

  对Excel表中数据一对多查询的方法          举个例子,如下图,左侧A1:C10是一份学员名单表,现在需要根据F1单元格的"EH图班"这个指定的条件,在F2:F10单元格区域中,提取该班级全部学员名单. 今天说一个函数查询方面的方法:Index+Small. F2单元格输入以下数组公式,按住Ctrl+Shift键不放,再按回车键,然后向下填充: =INDEX(B:B,SMALL(IF(A$1:A$10=F$1,ROW($1:$10),4^8),ROW(A1))),&quo

Excel表格中数据的增减怎么用箭头标注

  Excel表格中数据的增减怎么用箭头标注          两幅图,是一组销售数据,C列是每个月的销售额与销售平均值的比较情况: 图一 图二 图二明显要比图一的效果更直观吧? 其实实现这样的效果并不难. 选中C2:C10单元格区域,按Ctrl+1,弹出[设置单元格格式]对话框. 在[数字]选项卡下单击[自定义],在格式框中输入以下格式代码: [蓝色]↑0.0%;[红色]↓0.0%;0.0% OK,完成了,就这么简单. 说说格式代码的意思: [蓝色]↑0.0%;[红色]↓0.0%;0.0% 格

Excel表中数据开头的0没有显示怎么办?

问题状态如下: 我们把文本中的数据导入到excel中时你会发现如下图所示前面的0都就消失不见了,如下图所示. 解决方案: 我们点击excel表中"数据"选项卡的"获取外部数据"-->"自文本"具体绍下图所示: 然后我们再找到要操作的文件之后点击"导入"菜单,细节如下图所示: 然后在弹出的导入向导中我们点击"分隔符号"然后我们再把"逗号"复选框,然后单击"下一步"

java 实现导入excel(多工作表)到数据库,求代码

问题描述 java实现导入excel(多工作表)到数据库,求代码 解决方案 解决方案二:..自己百度一下满屏幕都是解决方案三:引用1楼kissclf的回复: ..自己百度一下满屏幕都是 确实是但是是单个excel的多工作表的大神有例子吗解决方案四:/**自行引入Poijar包*/importjava.io.File;importjava.io.FileNotFoundException;importjava.io.FileOutputStream;importjava.io.IOExceptio

求教如何java程序调用cmd 连接mysql数据库读取sql文件

问题描述 求教如何java程序调用cmd 连接mysql数据库读取sql文件 开始 -> 运行 -> 输入CMD D: cd mysqlbin mysql -u root -p123456 test <d:a.sql 这是在命令行执行的 谁能告诉我JAVA要怎么写 谢谢啦 解决方案 http://www.cnblogs.com/taoweiji/archive/2012/12/11/2812852.html 解决方案二: java本身就是在虚拟机里面运行的,不可能去调用Windows的组

把Excel表中数据导入数据库

  这是第二次了,市场部那边又来要求改数据.他们要改的是数据库某张表中类似商品价格等的数据,需要改的地方又多,我们上次是靠新来的兄弟一个个给Update进去的,这次老大去教了他们Update语句,把烦人的皮球踢给他们了.但这样一个个更新很明显不是办法,我想通过excel直接把数据导入数据库应该是可行的吧,就开始找方法了 我想至少有这样两种比较容易实现的方法: 1.直接用Sql语句查询 2.先用excle中的数据生成xml文件,再把xml导入数据库 第一种方法(方法二以后再试),找到联机丛书里实现

将Excel中数据导入到Access数据库中的方法_实用技巧

Default.aspx 复制代码 代码如下: <%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http:/