读取EXCEL中数据并导入到数据库

本文介绍了一种使用ASP.NET将Excel文件中的数据导入到数据库的方法。首先检查文件是否存在,然后读取Excel文件的数据,并将其填充到DataSet中。接着,检查目标表中是否已有数据,若有则先删除再进行数据插入。
            if (FileUpload1.HasFile)
            {
                string xlsFilePath = FileUpload1.PostedFile.FileName.ToString();//取得FileUpload中的文件完整路径,IE8有安全级别,可能得到的只是文件名,可以上网查询解决办法,就可以得到完整路径了
                //把EXCEL当成数据库来查询得到数据
                string connectionString;
                connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + xlsFilePath + ";Extended Properties='Excel 8.0;HDR=False;IMEX=1'";
                OleDbConnection conn = new OleDbConnection(connectionString);
                String strQuery = "SELECT * FROM  [Sheet1$]";   //可以更改工作表名称
                OleDbDataAdapter da = new OleDbDataAdapter(strQuery, conn);
                DataSet ds = new DataSet();
                da.Fill(ds, "Sheet1");
                DataTable dt = ds.Tables[0];
                conn.Close();
                if (dt.Rows.Count > 0)
                {
                    //查询表ObjectMappingTable,看是否有数据,有的话全部删除了再进行插入操作
                    //SqlOperate.OperationTable("","")这个方法在一个类文件中,“集插入,删除,修改一体的操作数据库数据的方法”这篇文章写的就是这个方法
                    DataTable Table = SqlOperate.GetDataTable("select * from ObjectMappingTable");
                    if (Table.Rows.Count > 0)
                    {
                        SqlOperate.OperationTable("delete from ObjectMappingTable ", "ObjectMappingTable");
                    }
                    //循环插入数据
                    for (int i = 0; i < dt.Rows.Count; i++)
                    {
                        SqlOperate.OperationTable("insert into ObjectMappingTable(FactoryName,FactoryCode,DeviceName,DeviceCode,MeasuringObjectName,MeasuringObjectCode,InstrumentType,InstrumentCode,mailingAddress,SerialNum,CheckTemPoint) values('" + dt.Rows[i][1].ToString() + "','" + dt.Rows[i][2].ToString() + "','" + dt.Rows[i][3].ToString() + "','" + dt.Rows[i][4].ToString() + "','" + dt.Rows[i][5].ToString() + "','" + dt.Rows[i][6].ToString() + "','" + dt.Rows[i][7].ToString() + "','" + dt.Rows[i][8].ToString() + "','" + dt.Rows[i][9].ToString() + "','" + dt.Rows[i][10].ToString() + "','" + dt.Rows[i][11].ToString() + "')", "ObjectMappingTable");
                    }
                }
                else
                {
                    this.Page.RegisterStartupScript("script_" + StringCom.GetRndString(20), "<script language=javascript>$.jBox.tip('没有数据要上传!','error');</script>");
                }
            }
            else
            {
                this.Page.RegisterStartupScript("script_" + StringCom.GetRndString(20), "<script language=javascript>$.jBox.tip('请选择要上传的文件!','error');</script>");
            }
Excel数据导入数据库是一个常见的需求,尤其在数据分析、报表生成等场景中非常有用。下面我会详细介绍如何从Excel文件读取数据将其插入到数据库。 ### 使用Python实现 #### 所需工具和技术栈 1. **Pandas** - 用于处理CSV/XLSX等表格格式的数据; 2. **openpyxl** 或者 **xlrd** (适用于旧版本xlsx) - Pandas依赖此库来解析.xlsx类型的文件; 3. **SQLAlchemy / pymysql/mysql-connector-python/sqlite3**(依据目标DB选择合适的连接驱动)- 负责与特定的关系型数据库通信,执行相应的CRUD操作; #### 步骤详解: ##### 第一步:准备环境安装必要的包 ```bash pip install pandas openpyxl sqlalchemy pymysql # 如果使用MySQL示例的话还需pymysql或其他相应适配器 ``` ##### 第二步:编写脚本加载Excel内容至DataFrame结构体 ```python import pandas as pd # 加载excel文档的第一个sheet作为DataFrame对象dataframe df = pd.read_excel('path/to/excel_file.xlsx') print(df.head()) # 输出前五行查看是否正常读入了期望的内容 ``` *注意调整路径以及确认编码设置如果遇到乱码等问题* ##### 第三步:建立到目标数据库的链接 这里假设我们要向名为`mydatabase`的一个MySql实例内表test_table插入新记录。 需要替换为您实际使用的用户名密码主机地址端口号等信息。 对于SQLite或者其他类型RDBMS可以参考对应官方API更改这部分代码逻辑. ```python from sqlalchemy import create_engine engine = create_engine("mysql+pymysql://username:password@localhost/mydatabase") conn= engine.connect() ``` ##### 第四步:将DataFrame转储进指定的目标表里 确保之前已经通过DDL语句创建好了待填充数据的目标表(test_table),且字段映射关系正确无误。 ```python try: df.to_sql(name='test_table', con=engine, if_exists='append', index=False) except Exception as e: print(f"An error occurred during insertion process:\n{str(e)}") finally: conn.close() # 关闭连接避免资源泄露风险 ``` 上述过程演示了一个简单的流程框架,实际情况可能会更复杂些比如涉及到对源数据预处理转换清洗等等前置步骤才能满足入库标准。 --- 如果你打算直接利用GUI软件完成类似任务也有不少现成的选择如: - Navicat Premium(支持多种主流关系型数据库) - DBeaver(开源免费版也非常好用) 以上就是关于“读取Excel数据导入到数据库”的简要介绍了!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值