随着信息化建设的不断发展,数据管理和处理已成为各行各业不可或缺的一部分。同时,在工作和生活中,使用的软件和工具也不断增多。其中Excel表格作为一种常用的办公软件,凭借着易操作、图形化展示等特点,得到了广泛应用。但是,Excel表格数据一般较为简单,难以处理复杂的数据,此时SQL数据库就成为了我们更好的选择。另外,如果将Excel表格数据放到SQL数据库中来管理,有助于统一数据格式和规范,提高数据整合的效率。
接下来,本文将介绍如何实现读取Excel表格数据到SQL数据库,让我们享受更快、更便捷地管理数据的乐趣。
一、配置环境
在读取Excel到SQL数据库之前,首先需要搭建相应的环境环境。以下是最常见的几种语言环境和数据库环境:
1. Python + MySQL
Python作为一种易于上手的程序语言,有着许多第三方包可以帮助我们轻松地读取Excel表格数据。而MySQL数据库由于其开源、跨平台、支持多用户的特点,也成为了许多开发人员喜欢的数据库之一。
需要注意的是,Python需要装对应的包-xlrd、pymysql。
2. Java + MySQL
Java作为一种多用途开发语言,在数据处理方面也拥有良好的表现。而MySQL数据库作为Java工程中广泛使用的数据库,也是开发人员处理Excel数据存储到数据库中一个很好的选择。
需要注意的是,Java需要用到的包是apache POI和mysql连接驱动-jdbc.jar。
3. .NET + SQL Server
.NET作为Microsoft公司推出的开发框架,具有强大的功能、丰富的特性和良好的体系结构设计。而SQL Server作为Microsoft公司推出的关系型数据库管理系统,同样是数据处理常用的DBMS之一。
需要注意的是,.NET需要用到的是Microsoft.Ace.OleDb.12.0和System.Data.SqlClient。
二、读取Excel文件
有时我们需要将Excel文件中的数据读取到数据库中,以便数据归并或存储。以下我们将介绍如何使用Python读取Excel表格。
1. Python读取Excel表格
Python读取Excel有很多方式,此处介绍使用第三方包xlrd读取Excel表格的方法。xlrd是python读取Excel的第三方包,与xlsxwriter一样都是非常好用的第三方库。
Excel数据表格为
调用xlrd的open_workbook函数打开xls文件,并获取需要读取的工作表worksheet:
import os
import xlrd
path = os.getcwd()
filename = path + ‘/data.xlsx’
workbook = xlrd.open_workbook(filename)
worksheet = workbook.sheet_by_index(0)
nrows = worksheet.nrows
ncols = worksheet.ncols
2. Java读取Excel表格
Java读取Excel有很多库可供选择,常用的包括jxl、poi、easyexcel等。此处使用POI读取Excel表格:
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.*;
FileInputStream fis = new FileInputStream(new File(“data.xls”));
Workbook workbook = new HSSFWorkbook(fis);
Sheet sheet = workbook.getSheetAt(0);
int rowCount = sheet.getLastRowNum();
3. C#读取Excel表格
C#读取Excel需要使用Microsoft提供的Microsoft.Ace.OleDb.12.0数据库连接组件和System.Data.SqlClient组件:
private System.Data.OleDb.OleDbConnection connection;
private System.Data.OleDb.OleDbDataAdapter oleDbAdapter;
private ExcelDataSet.事业部DataTable table;
try
{
connection = new System.Data.OleDb.OleDbConnection(“Provider=Microsoft.ACE.OLEDB.12.0;Data Source=”data.xlsx”;Extended Properties=”Excel 8.0;HDR=YES;IMEX=1””);
oleDbAdapter = new System.Data.OleDb.OleDbDataAdapter(“SELECT * FROM [Sheet1$]”, connection);
table = new ExcelDataSet.事业部DataTable();
oleDbAdapter.Fill(table);
}
catch (Exception ex)
{
throw new Exception(“读取Excel失败,错误信息:” + ex.Message);
}
finally
{
if (connection != null)
{
connection.Close();
}
}
三、将Excel中数据读取到数据库中
1. Python将数据存储到MySQL
下面介绍使用Python将Excel数据写入到MySQL数据库中的方法。由于Python本身并不支持MySQL,所以我们需要通过第三方库pymysql来实现与MySQL的交互。首先需要安装pymysql:
pip install pymysql
import pymysql
conn = pymysql.connect(host=’localhost’, user=’root’, passwd=’***’, db=’***’, port=3306, charset=’utf8′)
cursor = conn.cursor()
# 创建表结构
try:
cursor.execute(”’CREATE TABLE excelData(name VARCHAR(22), age INT(20), address VARCHAR(40))”’)
conn.commit()
except:
print(‘数据表已存在,无需再创。’)
conn.rollback()
# 插入数据
for i in range(1, nrows):
name = worksheet.cell(i, 0).value
age = int(worksheet.cell(i, 1).value)
address = worksheet.cell(i, 2).value
values = (name, age, address)
cursor.execute(“INSERT INTO excelData (name, age, address) VALUES (%s, %s, %s)”, values)
conn.commit()
2. Java将数据存储到MySQL
下面介绍使用Java将Excel数据写入到MySQL数据库中的方法。同样需要使用mysql-connector-java的jar包:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
Connection conn = null;
PreparedStatement pstm = null;
try {
String url = “jdbc:mysql://localhost:3306/database?useSSL=false&serverTimezone=GMT%2B8&allowPublicKeyRetrieval=true”;
String username = “root”;
String password = “root”;
Class.forName(“com.mysql.cj.jdbc.Driver”);
conn = DriverManager.getConnection(url, username, password);
conn.setAutoCommit(false);
pstm = conn.prepareStatement(sql);
for (int i = 1; i
Row row = sheet.getRow(i);
if (row != null) {
Cell cell0 = row.getCell(0);
Cell cell1 = row.getCell(1);
Cell cell2 = row.getCell(2);
String name = cell0.getStringCellValue();
int age = (int)cell1.getNumericCellValue();
String address = cell2.getStringCellValue();
pstm.setString(1, name);
pstm.setInt(2, age);
pstm.setString(3, address);
pstm.executeUpdate();
}
}
conn.commit();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (pstm != null) {
pstm.close();
}
if (conn != null) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
3. C#将数据存储到SQL Server
下面介绍使用C#将Excel数据写入到SQL Server数据库中的方法:
private void BtnImport_Click(object sender, EventArgs e)
{
string connectionString = “Server=localhost;Database=database;User ID=sa;Password=***”;
string sql = “INSERT INTO excelData(name, age, address)VALUES(@name,@age,@address)”;
SqlConnection connection = new SqlConnection(connectionString);
try
{
connection.Open();
using (SqlCommand cmd = new SqlCommand(sql, connection))
{
for (int i = 0; i