用java怎么将excel表格数据导入到mysql数据库中

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用java怎么将excel表格数据导入到mysql数据库中相关的知识,希望对你有一定的参考价值。

参考下面方法:
import java.io.FileInputStream;­
import java.io.FileNotFoundException;­
import java.io.IOException;­
import org.apache.commons.logging.Log;­
import org.apache.commons.logging.LogFactory;­
import org.apache.poi.hssf.usermodel.HSSFCell;­
import org.apache.poi.hssf.usermodel.HSSFRow;­
import org.apache.poi.hssf.usermodel.HSSFSheet;­
import org.apache.poi.hssf.usermodel.HSSFWorkbook;­

public class TestExcel ­
//记录类的输出信息­
static Log log = LogFactory.getLog(TestExcel.class); ­
//获取Excel文档的路径­
public static String filePath = "D://excel.xls";­
public static void main(String[] args) ­
try ­
// 创建对Excel工作簿文件的引用­
HSSFWorkbook wookbook = new HSSFWorkbook(new FileInputStream(filePath));­
// 在Excel文档中,第一张工作表的缺省索引是0
// 其语句为:HSSFSheet sheet = workbook.getSheetAt(0);­
HSSFSheet sheet = wookbook.getSheet("Sheet1");­
//获取到Excel文件中的所有行数­
int rows = sheet.getPhysicalNumberOfRows();
//遍历行­
for (int i = 0; i < rows; i++) ­
// 读取左上端单元格­
HSSFRow row = sheet.getRow(i);­
// 行不为空­
if (row != null) ­
//获取到Excel文件中的所有的列­
int cells = row.getPhysicalNumberOfCells();­
String value = ""; ­
//遍历列­
for (int j = 0; j < cells; j++) ­
//获取到列的值­
HSSFCell cell = row.getCell(j);­
if (cell != null) ­
switch (cell.getCellType()) ­
case HSSFCell.CELL_TYPE_FORMULA:­
break;­
case HSSFCell.CELL_TYPE_NUMERIC:­
value += cell.getNumericCellValue() + ","; ­
break; ­
case HSSFCell.CELL_TYPE_STRING:­
value += cell.getStringCellValue() + ",";­
break;­
default:­
value += "0";­
break;­
­

­
// 将数据插入到mysql数据库中­
String[] val = value.split(",");­
TestEntity entity = new TestEntity();­
entity.setNum1(val[0]);­
entity.setNum2(val[1]);­
entity.setNum3(val[2]);­
entity.setNum4(val[3]);­
entity.setNum5(val[4]);­
entity.setNum6(val[5]);­
TestMethod method = new TestMethod();­
method.Add(entity);­
­
­
catch (FileNotFoundException e) ­
e.printStackTrace();­
catch (IOException e) ­
e.printStackTrace();­
­
­
­
参考技术A 现有poi读取到java里,然后通过java操作数据库把读取的内容插入到数据库里。 参考技术B 不用java,直接复制excel到sql就可以

将Excel数据导入mysql数据库的几种方法

将Excel数据导入mysql数据库的几种方法

 

“我的面试感悟”有奖征文大赛结果揭晓!

前几天需要将Excel表格中的数据导入到mysql数据库中,在网上查了半天,研究了半天,总结出以下几种方法,下面和大家分享一下:

一.用java来将Excel表格中的数据转到mysql中

这是我们用的第一种方法,就是在java找你感谢个类,然后这个类会将Excel表格中的数据存储到内存里,然后再从内存中读出来插入到数据库中,但是要 注意了,这里是存储到String[ ]数组里面,所以取出来的数据也是String类型,如果你的表里面有int类型的数据,那么你一定要将那一条取出来然后强制转换,如果你的数据表结构没 有那么复杂,比较简单的话那么可以使用这种方法,如果字段的结构复杂那也可以使用,只不过要慢慢转,多写点代码,不怕累的同志可以试试.下面是我从网上查 的代码:

1、添加POI jar包到项目的lib目录下­

2、Excel文件目录:d://excel.xls­

3、数据库字段为:num1 num2 num3 num4 num5 num6­

4、数据库名:blog­

5、表名:test­

6、编写类:连接mysql的字符串方法、插入的方法、实体类­­

import java.io.FileInputStream;­

import java.io.FileNotFoundException;­

import java.io.IOException;­

import org.apache.commons.logging.Log;­

import org.apache.commons.logging.LogFactory;­

import org.apache.poi.hssf.usermodel.HSSFCell;­

import org.apache.poi.hssf.usermodel.HSSFRow;­

import org.apache.poi.hssf.usermodel.HSSFSheet;­

import org.apache.poi.hssf.usermodel.HSSFWorkbook;­

public class TestExcel {­

       //记录类的输出信息­

       static Log log = LogFactory.getLog(TestExcel.class); ­

       //获取Excel文档的路径­

       public static String filePath = "D://excel.xls";­

       public static void main(String[] args) {­

             try {­

                   // 创建对Excel工作簿文件的引用­

                   HSSFWorkbook wookbook = new HSSFWorkbook(new FileInputStream(filePath));­

                   // 在Excel文档中,第一张工作表的缺省索引是0,­

                   // 其语句为:HSSFSheet sheet = workbook.getSheetAt(0);­

                   HSSFSheet sheet = wookbook.getSheet("Sheet1");­

                   //获取到Excel文件中的所有行数­

                   int rows = sheet.getPhysicalNumberOfRows();­

                   //遍历行­

                   for (int i = 0; i < rows; i++) {­

                         // 读取左上端单元格­

                         HSSFRow row = sheet.getRow(i);­

                         // 行不为空­

                         if (row != null) {­

                               //获取到Excel文件中的所有的列­

                               int cells = row.getPhysicalNumberOfCells();­

                               String value = "";     ­

                               //遍历列­

                               for (int j = 0; j < cells; j++) {­

                                     //获取到列的值­

                                     HSSFCell cell = row.getCell(j);­

                                     if (cell != null) {­

                                           switch (cell.getCellType()) {­

                                                 case HSSFCell.CELL_TYPE_FORMULA:­

                                                 break;­

                                                 case HSSFCell.CELL_TYPE_NUMERIC:­

                                                       value += cell.getNumericCellValue() + ",";         ­

                                                 break;   ­

                                                 case HSSFCell.CELL_TYPE_STRING:­

                                                       value += cell.getStringCellValue() + ",";­

                                                 break;­

                                                 default:­

                                                       value += "0";­

                                                 break;­

                                     }­

                               }       ­

                         }­

                         // 将数据插入到mysql数据库中­

                         String[] val = value.split(",");­

                         TestEntity entity = new TestEntity();­

                     //现在开始数据转换啦!!!!!!*************************************************

                         double a = Double.parseDouble(val[0]);

                         long code = (long)a;

                         entity.setNum1(code);­

                         entity.setNum2(val[1]);­

                         entity.setNum3(val[2]);­

                         entity.setNum4(val[3]);­

                         entity.setNum5(val[4]);­

                         entity.setNum6(val[5]);­

                         TestMethod method = new TestMethod();­

                         method.Add(entity);­

                   }­

             }­

       } catch (FileNotFoundException e) {­

             e.printStackTrace();­

       } catch (IOException e) {­

             e.printStackTrace();­

       }­

       }­

我们的数据库实在是太复杂,所以这个方法bye-bye了!!!

 

二.手动进行Excel数据和MySql数据转换

这个方法也是从网上查到的,比第一种要简单一些,一个命令就搞定,下面copy给大家:

假如要把如图所示的Excel表格导入到MySql数据库中,如图:

技术分享

 

步骤一:

选取要导入的数据快儿,另外要多出一列,如下图:

技术分享

 

步骤二:

将选中的数据快儿拷贝到一个新建的表格工作薄,然后“另存为” -》“文本文件(制表符分割)(*.txt)”,假如存到“D:data.txt”这个位置里。如图:

技术分享

 

步骤三:

根据要导入的数据快儿建立MySql数据库和表,然后使用命令

load data local infile ‘D:data.txt‘ into table exceltomysql fields terminated by ‘t‘;

进行导入操作。如下图:

技术分享

现在数据已经全部导入到MySql里了,

让我们来select一下吧,如图:

技术分享

 

到此,数据由Excel到MySql的转换已经完成。

 

下面说下,数据从MySql到Excel的转化,其过程其实还是借助那个“制表符分割”的文本文件。

将如要将这个表中的男生信息导入到Excel中,可以这样。

select * into outfile ‘D:man.txt‘ from exceltomysql where xingbie="男";

如图:

技术分享

这样,表中所有男生的信息都被输出到以制表符分割,‘n‘结尾的文本文件D:man.txt文件中。

你可以打开Excel,然后选择“数据”->“导入外部数据”->“导入数据”,选中“D:man.txt”,一路确定就行了。

 

好了,这个方法我们也是过了,可行度倒是可以,但是我们还是遇到了一个问题,那就是当我们导入有汉字的数据时,数据库的那个字段显示不了,有一点点乱码, 但很多是空,不知道为什么,字段的属性是varchar,没错的,所以这一问题没有解决,我们只好又换!!!知道怎么回事的同学指点指点啊,先谢谢 了!!!

三.软件导入

哈哈,这个方法是最爽的,我们终于搜到了一个这么方便的东东,名字叫"xls2sql",大家去百度一下也可以搜到,下下来用就是了,但是问题还是接踵而 至啊,真是超级郁闷!!就是你在到如数据的时候他会跟你的Excel自动建表,然后字段属性也是很智能的帮你完成,完全就是一款傻瓜软件,可是我们的表已 经建好了,字段属性也已经完成,它没那么听话我们也只好另寻他法了,无奈啊..........

四.csv导入

这是我们最终采取的方法,就是你先从mysql数据库中导出csv的空数据表,然后再把Excel中的数据复制到相应的csv表格中,然后再用mysql 导入csv数据表...不过这里也有点小麻烦,就是有的时候csv表格保存的时候他会出错,你再打开的时候可能他会把多有的数据都挤到第一列去,没有关 系,在mysql插入数据的时候选择制表键就可以了~~,如果cvs中的数据排列正常的话那就什么都不用选,插入的时候默认选择是字符....

以上是关于用java怎么将excel表格数据导入到mysql数据库中的主要内容,如果未能解决你的问题,请参考以下文章

将Excel数据导入mysql数据库的几种方法

用java将数据导出到wps表格中,怎么实现

如何用Java实现将word里的表格数据写入到excel中去

如何用JAVA将数据库中的数据导入到excel表格

如何把EXCEL整理好的数据表直接导入到MYSQL中

word表格怎么导入Excel