本文目录导读:

- 场景一:Excel 文件合并(多个文件 -> 一个文件)
- 场景二:同一张 Excel 表的 Sheet 合并(多个Sheet -> 一个Sheet)
- 场景三:HTML 表格合并(前端 / 爬虫 / JavaScript)
- 场景四:CSV 文件批量合并(命令行 / Linux)
- 场景五:数据库表合并(SQL)
- 需要我帮你写更具体的脚本吗?
“表格合并”在不同的场景下实现方式完全不同,为了给你最准确的答案,请先确认你的具体场景。
我整理了最常见集中场景的脚本写法,你可以直接参考:
Excel 文件合并(多个文件 -> 一个文件)
工具:Python + Pandas 库
需求:将 销售1月.xlsx、销售2月.xlsx 等结构相同的表格纵向堆叠。
import pandas as pd
import os
# 设置存放Excel的文件夹路径
folder_path = "./excel_files/"
# 获取所有.xlsx文件
all_files = [f for f in os.listdir(folder_path) if f.endswith('.xlsx')]
# 用于存储所有DataFrame的列表
df_list = []
for file in all_files:
file_path = os.path.join(folder_path, file)
# 读取Excel文件
df = pd.read_excel(file_path)
df_list.append(df)
# 纵向合并(行合并),ignore_index=True 重置索引
merged_df = pd.concat(df_list, ignore_index=True)
# 保存合并后的结果
merged_df.to_excel("合并结果.xlsx", index=False)
print("合并完成!")
同一张 Excel 表的 Sheet 合并(多个Sheet -> 一个Sheet)
工具:Python + Pandas / Openpyxl
需求:Excel工作簿内有 Sheet1、Sheet2、Sheet3,合并为一张总表。
import pandas as pd
file_path = "数据源.xlsx"
# 读取所有Sheet
all_sheets = pd.read_excel(file_path, sheet_name=None) # 返回一个字典
df_list = []
for sheet_name, df in all_sheets.items():
print(f"正在处理Sheet: {sheet_name}")
df_list.append(df)
merged_df = pd.concat(df_list, ignore_index=True)
merged_df.to_excel("总表.xlsx", index=False)
HTML 表格合并(前端 / 爬虫 / JavaScript)
需求:网页上有多个 <table>,想把它们合并成一个表格。
// 适用于浏览器控制台或JS文件
function mergeTables(selector) {
// 获取所有符合选择器的表格
const tables = document.querySelectorAll(selector);
if (tables.length < 2) return;
// 以第一个表格为主体
const targetTable = tables[0];
for (let i = 1; i < tables.length; i++) {
const rows = tables[i].querySelectorAll('tr');
// 跳过第一个表格的标题行(可自定义)
const startIndex = (i === 1) ? 0 : 0;
for (let j = startIndex; j < rows.length; j++) {
// 将后面的表格的行追加到目标表格
targetTable.appendChild(rows[j].cloneNode(true));
}
// 可选:隐藏或删除原来的表格
// tables[i].style.display = 'none';
tables[i].remove(); // 直接移除
}
console.log('表格合并完成');
}
// 使用:合并页面上所有 class 为 data-table 的表格
// mergeTables('.data-table');
CSV 文件批量合并(命令行 / Linux)
需求:当前目录下所有 .csv 文件合并成一个(无语法区别,纯追加行)。
# 方法1:跳过每个文件的表头(只保留第一个文件的表头)
head -1 第一个文件.csv > 合并结果.csv
tail -n +2 *.csv >> 合并结果.csv
# 方法2:使用 awk 自动处理(推荐)
awk 'FNR==1 && NR!=1 {next} {print}' *.csv > 合并结果.csv
数据库表合并(SQL)
需求:两个结构相同的历史表合并到一张表。
-- 假设表A是旧表,表B是新数据,合并到表A INSERT INTO 表A (列1, 列2, 列3) SELECT 列1, 列2, 列3 FROM 表B; -- 或者创建一张新表 CREATE TABLE 合并表 AS SELECT * FROM 表A UNION ALL SELECT * FROM 表B;
需要我帮你写更具体的脚本吗?
如果以上没有覆盖你的场景,请补充以下信息:
- 表格格式:Excel / CSV / Word / HTML / 数据库 / 其他
- 合并方向:纵向(追加行)还是横向(追加列,如 VLOOKUP 式合并)
- 合并条件:按行号合并,还是按某一列作为键值(如按“ID”列匹配合并)
- 你熟悉的工具:Python / JavaScript / VBA / Shell / SQL
告诉我这些,我可以给你一个可以直接运行的脚本。