服务热线
15383239821
导入的 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);
}
}
}