首页 优化推广 导入Excel到数据库

导入Excel到数据库

来源: | 时间:2014/3/3 10:32:09 |

导入的 Excel 文件可以包含多个 Sheet,并且最终可以将所有 Sheet 的数据整合到同一个 DataSet(或数据库表)中‌。导入的Excel可以包含多个sheet,最终都导入到dataset的同一个table中。根据公开资料,这在技术实现上是完全可行的,且有多种成熟方法支持。


一、实现方式概览

‌1)使用 Power Query(Excel 内置工具)‌

适用于非编程用户,通过图形界面操作即可将多个 Sheet 合并为一个表。


‌2)使用 VBA 宏代码‌

适合自动化处理大量 Sheet,可遍历所有工作表并复制数据到目标总表。


‌3)使用 C# + OleDb / EPPlus / NPOI‌

开发人员常用方式,可将 Excel 多 Sheet 数据读入 DataSet,并合并到同一 DataTable 中‌‌。


‌4)使用 Office Scripts(适用于 Excel Online / Microsoft 365)‌

通过 TypeScript 脚本自动合并当前工作簿中所有或指定 Sheet 的数据‌‌。


‌5)使用 Python(pandas + openpyxl)‌

虽未在资料中详述,但也是常见方案:读取每个 Sheet 并用 pd.concat() 合并。


二、关键前提条件

为确保成功合并,需满足以下条件:

‌1)所有 Sheet 的结构(列名、列顺序、数据类型)必须一致或兼容‌;

2)若使用数据库导入(如 DataSet),目标表需能容纳所有合并后的字段;

3)部分方法(如 OleDb)对 Excel 版本(.xls vs .xlsx)有驱动要求‌‌。


三、推荐操作流程(以 Power Query 为例,适合大多数用户)

1)打开 Excel 文件;

2)点击 ‌数据‌ → ‌获取数据‌ → ‌从工作簿‌;

3)选择当前文件 → 点击 ‌导入‌;

4)在导航器中,点击 ‌转换数据‌ 进入 Power Query 编辑器;

5)筛选需要合并的 Sheet(可按名称过滤);

6)选中所有目标表 → 点击 ‌追加查询‌ → ‌将查询作为新查询追加‌;

7)清洗数据后,点击 ‌关闭并上载‌,数据将自动导入到一个总表中‌‌。


四、如需编程实现(如 C#),可参考以下核心逻辑:

string connStr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=path.xlsx;Extended Properties=\"Excel 12.0;HDR=YES;IMEX=1\"";

using (var conn = new OleDbConnection(connStr))

{

    conn.Open();

    var sheets = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);

    var ds = new DataSet();


    foreach (DataRow row in sheets.Rows)

    {

        string sheetName = row["TABLE_NAME"].ToString();

        if (sheetName.EndsWith("$")) // 确保是工作表

        {

            string sql = $"SELECT * FROM [{sheetName}]";

            var adapter = new OleDbDataAdapter(sql, conn);

            adapter.Fill(ds, sheetName);

        }

    }


    // 合并所有 DataTable 到一个表(假设结构相同)

    DataTable combined = ds.Tables[0].Clone(); // 克隆结构

    foreach (DataTable dt in ds.Tables)

    {

        foreach (DataRow dr in dt.Rows)

        {

            combined.ImportRow(dr);

        }

    }

}


服务热线

15383239821

功能和特性

价格和优惠

网站和维护

推广和优化

微信服务号