`

读取Excel文件中的数据,并写到MySQL数据库

阅读更多
读取Excel文件中的数据,并写到MySQL数据库

首先要下载相应的包,具体的包如下:
pinyin4j-2.5.0.jar
poi-3.2-FINAL-20081019.jar
poi-contrib-3.2-FINAL-20081019.jar
poi-scratchpad-3.2-FINAL-20081019.jar
mysql-connector-java-5.1.10-bin.jar


package org.wcy.test;

//Function Read data from Excel
//Author ATGC
//Date of compilation Oct 29,2004

import java.io.FileInputStream;
import java.sql.Connection;
import java.sql.PreparedStatement;

import org.apache.poi.hssf.record.formula.functions.Cell;
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;

/*
* 该类为读取excel文件,并导入到数据库
*/
public class ReadExcelToDB {

public static String fileName= "E:\\text.xls";

@SuppressWarnings("deprecation")
public static void main(String argv[]) {
Connection con = null;
PreparedStatement ps = null;


try {
con = DBTools.getConnection();
//把一张*.xls的数据表读到workbook里面
HSSFWorkbook workbook = new HSSFWorkbook(new FileInputStream(fileName));
//读取第一个sheet工作表
HSSFSheet sheet = workbook.getSheetAt(0);

//获取工作表的最后一条记录
int rows = sheet.getLastRowNum();
for (int r = 0; r < rows+1; r++) {
//获取当前行数
HSSFRow row = sheet.getRow(r);
if (row != null) {
int cells = 4;
String value = "";
for (short c = 0; c < cells; c++) {
//获取当前行的列数
HSSFCell cell = row.getCell(c);
if (cell != null) {
//判断cell的类型
switch (cell.getCellType()) {
//如果当前cell的数据类型为公式型
case HSSFCell.CELL_TYPE_FORMULA:
break;
// 如果当前Cell的数据类型为数值型 
case HSSFCell.CELL_TYPE_NUMERIC:
value += String.valueOf((long)cell.getNumericCellValue())+",";
value.toString();
break;
//如果当前cell的数据类型为字符串类型
case HSSFCell.CELL_TYPE_STRING:
value += cell.getStringCellValue() + ",";
break;
//如果当前cell的数据类型为空值
case HSSFCell.CELL_TYPE_BLANK:
break;
//默认
default:
value += ",";
}
}
}

HSSFCell cell = row.getCell((short)1);
int cell0 = ExcelUtils.getIntCellValue(row, 0);
int cell2 = ExcelUtils.getIntCellValue(row, 2);
//     下面可以获取汉字拼音的首字母
String firstPy = PinyinToolkit.cn2FirstSpell(cell.getStringCellValue()).toUpperCase();
System.out.println(firstPy);

sql = "insert into t_employ(code,name,provinceCode,provinceName,namePy) values(?,?,?,?,?)";
ps = con.prepareStatement(sql);

for(int i=0;i<4;i++){
if(ExcelUtils.getStringValue(row,i)==null){
System.out.println(ExcelUtils.getStringValue(row,i));
}else{
ps.setString(i+1, ExcelUtils.getStringValue(row,i));
ps.setString(5, firstPy);
}
ps.setInt(1, cell0);
ps.setInt(3, cell2);
System.out.print(ExcelUtils.getStringValue(row,i)+"/");
}
System.out.println("");
ps.executeUpdate();

System.out.println(value);
}
}
} catch (Exception e) {
System.out.println(e);
}
}
}


//数据库的连接

DBTools.java 类

package org.wcy.test;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class DBTools {

public static Connection getConnection() {
Connection con = null;
try {
String url = "jdbc:mysql://localhost:3306/testxls?useUnicode=true&charsetEncoding=UTF-8";
String username = "root";
String password = "123456";
Class.forName("com.mysql.jdbc.Driver");
con = DriverManager.getConnection(url,username,password);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return con;
}

public static void close(Connection con) {
try {
if(con!=null) con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}

public static void close(ResultSet rs) {
try {
if(rs!=null) rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}

public static void close(PreparedStatement ps) {
try {
if(ps!=null) ps.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}




ExcelUtil.java 类

package org.wcy.test;

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

public class ExcelUtils {

public static int getIntCellValue(HSSFRow row,int index){
int rtn = 0;
try {
HSSFCell cell = row.getCell(index);
rtn = (int) cell.getNumericCellValue();
} catch (Exception e) {
}
return rtn;
}

public static String getStringValue(HSSFRow row,int index){
String rtn ="";
try {
HSSFCell cell = row.getCell(index);
rtn = cell.getRichStringCellValue().getString();
} catch (Exception e) {
}
return rtn;
}

}

//该类是用于取出汉字拼音的首字母

PinyinToolkit.java 类

package org.konghao.student.util;

import java.io.UnsupportedEncodingException;


import net.sourceforge.pinyin4j.PinyinHelper;
import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType;
import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;
import net.sourceforge.pinyin4j.format.HanyuPinyinToneType;
import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;

public class PinyinToolkit {

/**
* 获取汉字串拼音首字母,英文字符不变
*
* @param chinese
*            汉字串
* @return 汉语拼音首字母
*/
public static String cn2FirstSpell(String chinese) {
StringBuffer pybf = new StringBuffer();
char[] arr = chinese.toCharArray();
HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
for (int i = 0; i < arr.length; i++) {
if (arr[i] > 128) {
try {
String[] _t = PinyinHelper.toHanyuPinyinStringArray(arr[i],
defaultFormat);
if (_t != null) {
pybf.append(_t[0].charAt(0));
}
} catch (BadHanyuPinyinOutputFormatCombination e) {
e.printStackTrace();
}
} else {
pybf.append(arr[i]);
}
}
return pybf.toString().replaceAll("\\W", "").trim();
}

/**
* 获取汉字串拼音,英文字符不变
*
* @param chinese
*            汉字串
* @return 汉语拼音
*/
public static String cn2Spell(String chinese,String split) {
StringBuffer pybf = new StringBuffer();
char[] arr = chinese.toCharArray();
HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
for (int i = 0; i < arr.length; i++) {
try {
if(isChinese(arr[i]))
pybf.append(PinyinHelper.toHanyuPinyinStringArray(arr[i],
defaultFormat)[0]).append(split);
} catch (BadHanyuPinyinOutputFormatCombination e) {
e.printStackTrace();
}
}
return pybf.toString();
}

public static void main(String[] args) throws UnsupportedEncodingException {
String x = "SQL Server数据库技术(60) - 资源吧源码";//
System.out.println(cn2FirstSpell(x));
System.out.println(cn2Spell(x,","));
}
/**
* 判断是否为汉字
* @param c
* @return
*/
private static boolean isChinese(char c) {
if (Character.toString(c).matches("[\\u4E00-\\u9FA5]+"))
return true;
return false;
}
}
分享到:
评论

相关推荐

    定时读取excel更新到数据库

    在IT行业中,定时读取Excel更新到数据库是一项常见的任务,特别是在数据管理、数据分析或业务自动化等领域。...正确配置和执行这些步骤,可以确保从Excel文件高效、准确地获取并更新数据库中的信息。

    java实现mysql数据库的表导出到excel文件

    本文将详细讲解如何使用Java实现从MySQL数据库的表导出到Excel文件的过程,以及涉及到的关键技术和工具。 首先,我们需要了解的是Java与数据库交互的基础——JDBC(Java Database Connectivity)。JDBC是Java API,...

    C#实现读取Excel并将数据更新到Mysql数据库

    在C#编程环境中,开发一个应用来读取Excel文件并将其数据更新到Mysql数据库是一项常见的任务,尤其在数据处理和报表生成的场景下。这个程序的实现涉及到多个技术点,包括C#的文件操作、Excel数据处理以及与Mysql...

    Python-Excel一键导入MySQL数据库MySQL数据库一键读取到Excel表格

    - **写入数据库**:通过`to_sql()`方法,将DataFrame对象的数据批量写入MySQL数据库中的指定表。 2. **MySQL数据库数据导出到Excel** - **建立数据库连接**:同上,使用`mysql-connector-python`创建与MySQL...

    使用POI解析excel文件并写入数据库

    这个项目实现的功能是读取excel文件中的数据,解析并写入数据库。 读取的excel文件位于项目目录下的 excel\0805.xlsx 使用IntelliJ IDEA开发此项目 使用MYSQL查看数据库 在MYSQL中运行项目db目录下的sql文件,创建...

    读取Excel文件并导入mysql数据库

    这篇文档将聚焦于如何使用Java编程语言来读取Excel文件,并将其内容导入到MySQL数据库中。这个过程涉及到几个关键的技术点,包括Java对Excel文件的处理、数据库连接以及数据操作。 首先,Java提供了多种库来处理...

    Python3遍历指定文件夹下的excel文件,并把数据导入mysql数据库源码

    遍历指定文件夹下的excel文件,打开excel文件之后读取多个sheet中指定的sheet数据,并把读取的数据导入到mysql数据库中,是python写的源码,环境是python3。

    java实现Excel数据导入到mysql数据库.zip

    本项目"java实现Excel数据导入到mysql数据库"旨在利用Java技术将Excel表格中的数据高效地导入到MySQL数据库,并且在数据库中存在相同数据时进行更新,同时也支持将数据库中的数据导出到Excel表中。这个过程涉及到多...

    读取Excle表格中的数据,并插入到mysql数据库中

    这个任务通常涉及到两个主要部分:读取Excel文件和与MySQL数据库进行交互。以下是对这两个部分的详细说明: 1. **读取Excel表格**: Excel是一种广泛使用的电子表格软件,其数据格式通常是.XLS或.XLSX。在Python...

    从Excel中读取数据导入到数据库中

    例如,读取Excel文件后,可以对数据进行清洗和预处理,再通过SQL语句批量插入到数据库中。 数据库导入通常涉及以下步骤: 1. **建立数据库连接**:使用适当的库(如`psycopg2` for PostgreSQL,`pyodbc` for SQL ...

    C#通过NPOI库操作Excel,并将Excel数据导入Mysql数据库(自动建表)

    内容概要:本资源介绍了如何从...阅读建议:此资源以如何读取Excel数据,将Excel数据转换为Datatable格式,然后将datatable导入Mysql数据库 ,同时还介绍了如何将Datatable数据生成Excel表格,及相关NPOI操作Excel例子

    C# 写的Excel导入mysql数据库

    本项目涉及的是利用C#将Excel数据导入到MySQL数据库中,这在数据分析、报表处理或者数据迁移等场景中非常常见。下面,我将详细讲解这个过程中的关键知识点。 1. **C#与.NET Framework**: C#是微软公司开发的一种...

    Java 实现从Excel批量导入数据到MySQL

    2. **读取Excel**:使用Apache POI API来读取Excel文件。创建一个`XSSFWorkbook`对象,代表整个Excel工作簿,然后遍历`Sheet`,每个`Sheet`代表Excel的一张表。通过`Row`和`Cell`对象获取数据,可以设置读取策略,如...

    Java+MySQL+将数据导入到Excel中,Java将Excel中的数据导入到MySQL数据库中,

    本主题主要涉及如何使用Java通过Apache POI库操作Excel文件,并将数据导入到MySQL数据库中,以及反向操作,即从数据库中提取数据并导出到Excel。 首先,让我们深入了解一下Java中的Apache POI库。POI是Apache软件...

    本地excel文件数据导入到mysql数据库的表中

    - 使用MyBatis的Mapper接口和XML映射文件,编写SQL插入语句,将读取到的数据批量插入到MySQL数据库中。这里可以使用MyBatis的`&lt;foreach&gt;`标签进行循环插入。 - 最后,SpringBoot应用启动,通过配置好的数据源和...

    读取Excel数据并将数据导入到数据库范例

    在这个范例中,我们将探讨如何利用编程语言(如Python)读取Excel文件,并将数据存储到MySQL数据库中。下面将详细介绍这个过程。 首先,我们需要了解Excel文件的读取。在Python中,我们可以使用pandas库来实现这一...

    利用java 导入Excel表格数据到mysql数据库里,源码,直接导入eclipse就可以运行

    在Java开发中,将Excel表格数据导入MySQL数据库是一项常见的任务,尤其在数据处理、数据分析以及系统集成等场景中。这个项目提供了一套完整的源码,可以直接在Eclipse环境中运行,帮助开发者快速实现这一功能。下面...

    java读取excl文件内容进行mysql自动创建表

    本篇将深入探讨如何利用Java读取Excel文件内容,并自动根据这些内容在MySQL数据库中创建相应的表。 首先,我们需要了解Java中用于读取Excel文件的库。Apache POI是一个流行的选择,它提供了对Microsoft Office格式...

    nodejs将mysql数据库中的数据导出成excel表格文件

    2. 编写SQL查询,从MySQL数据库中提取所需数据。 3. 使用`xlsx`库将获取的数据转换为Excel格式。 4. 将生成的Excel文件保存到本地文件系统。 5. 可能包含一个`test.sql`文件,用于生成大规模的测试数据。 这个示例...

Global site tag (gtag.js) - Google Analytics