import pandas as pd
from openpyxl import load_workbook # ✅ 修复:导入 load_workbook
from openpyxl.styles import numbers
import xlwings as xw
import requests
import time
# 文件路径
file_path = r'reports\PON口码化情况清单.xlsx'
file_path1 = r'reports\OBD尾纤贴码分类报表.xlsx'
# 读取前两个 sheet,跳过前3行,保留表头
sheet1 = pd.read_excel(file_path, sheet_name=0, skiprows=2, header=0)
sheet2 = pd.read_excel(file_path, sheet_name=1, skiprows=2, header=0)
# 合并两个子表
combined_df = pd.concat([sheet1, sheet2], ignore_index=True)
# 查看结果
# 保存为新的 Excel 文件
combined_df.to_excel('combined_data_with_header.xlsx', index=False)
# 读取前两个 sheet,跳过前3行,保留表头
sheet_1 = pd.read_excel(file_path1, sheet_name=0, skiprows=2, header=0)
sheet_2 = pd.read_excel(file_path1, sheet_name=1, skiprows=2, header=0)
sheet_3 = pd.read_excel(file_path1, sheet_name=2, skiprows=2, header=0)
sheet_4 = pd.read_excel(file_path1, sheet_name=3, skiprows=2, header=0)
sheet_5 = pd.read_excel(file_path1, sheet_name=4, skiprows=2, header=0)
sheet_6 = pd.read_excel(file_path1, sheet_name=5, skiprows=2, header=0)
sheet_7 = pd.read_excel(file_path1, sheet_name=6, skiprows=2, header=0)
sheet_8 = pd.read_excel(file_path1, sheet_name=7, skiprows=2, header=0)
sheet_9 = pd.read_excel(file_path1, sheet_name=8, skiprows=2, header=0)
sheet_10 = pd.read_excel(file_path1, sheet_name=9, skiprows=2, header=0)
# 合并两个子表
combined_df_1 = pd.concat([sheet_1, sheet_2, sheet_3, sheet_4, sheet_5, sheet_6, sheet_7, sheet_8, sheet_9, sheet_10], ignore_index=True)
# 查看结果
# 保存为新的 Excel 文件
combined_df_1.to_excel('combined_data_with_header_1.xlsx', index=False)
# 读取 Excel 文件
file_path = 'combined_data_with_header.xlsx'
df = pd.read_excel(file_path)
# 筛选第 8 列(列索引为 7)为空的行
blank_rows = df[df.iloc[:, 7].isna()]
# 查看筛选结果
# 保存到新文件
blank_rows.to_excel('filtered_blank_rows.xlsx', index=False)
print("✅ 已成功筛选并保留第 8 列为空的行,保存到 'filtered_blank_rows.xlsx'")
from openpyxl import load_workbook
# 打开 Excel 文件
file_path = 'combined_data_with_header_1.xlsx'
wb = load_workbook(file_path)
ws = wb.active
# 确定从第 2 行开始写入公式(假设第 1 行是标题)
for row in range(2, ws.max_row + 1):
ws[f'Z{row}'] = f'=X{row}&Y{row}'
# 保存修改
wb.save('formula_added_file_1.xlsx')
print("✅ 已添加公式,并保存到 'formula_added_file_1.xlsx'")
# 打开 Excel 文件
file_path = 'filtered_blank_rows.xlsx'
wb = load_workbook(file_path)
ws = wb.active
# 确定从第 2 行开始写入公式(假设第 1 行是标题)
for row in range(2, ws.max_row + 1):
ws[f'K{row}'] = f'=C{row}&D{row}'
ws[f'L{row}'] = f'=IF(G{row}="A","机箱异常","用户未码")'
ws[f'M{row}'] = f'=XLOOKUP(K{row},机箱参考!Z:Z,机箱参考!E:E)'
# 保存修改
wb.save('formula_added_file.xlsx')
print("✅ 已添加公式,并保存到 'formula_added_file.xlsx'")
from openpyxl import load_workbook
from openpyxl.styles import Alignment
# 打开 Excel 文件
file_path = 'formula_added_file.xlsx'
wb = load_workbook(file_path)
ws = wb.active
# 设置单元格内容
ws['K1'] = "合并"
ws['L1'] = "合并"
ws['M1'] = "参考位置"
# 保存文件
wb.save('merged_header_file.xlsx')
print("✅ 已添加标题,保存为 'merged_header_file.xlsx'")
from openpyxl import load_workbook
# 文件路径
source_file = 'formula_added_file_1.xlsx'
target_file = 'merged_header_file.xlsx'
# 加载源文件和目标文件
source_wb = load_workbook(source_file)
target_wb = load_workbook(target_file)
# 获取源表数据
source_sheet = source_wb.active
# 检查目标文件是否存在 "Sheet2",若不存在则创建
if "Sheet2" in target_wb.sheetnames:
target_sheet = target_wb["Sheet2"]
else:
target_sheet = target_wb.create_sheet("Sheet2")
print("⚠️ Sheet2 不存在,已自动创建")
# 获取目标表最后一行的下一行
start_row = target_sheet.max_row + 1
# 将源表数据追加写入目标表
for row in source_sheet.iter_rows(values_only=True):
target_sheet.append(row)
# 保存目标文件
target_wb.save(target_file)
print("✅ 数据已成功追加到目标文件的 Sheet2 中")
from openpyxl import load_workbook
# 文件路径
file_path = 'merged_header_file.xlsx'
# 加载工作簿
wb = load_workbook(file_path)
# 获取当前工作表名称列表
sheet_names = wb.sheetnames
# 打印当前工作表名
print("当前工作簿中的工作表名称:", sheet_names)
# 检查是否存在名为 "Sheet2" 的工作表
if "Sheet2" in sheet_names:
# 获取该工作表
ws = wb["Sheet2"]
# 重命名为 "机箱参考"
ws.title = "机箱参考"
print("✅ 工作表 'Sheet2' 已重命名为 '机箱参考'")
else:
print("❌ 错误:工作簿中不存在名为 'Sheet2' 的工作表")
# 保存修改
wb.save(file_path)
# 原始 .xls 文件路径
xls_file = 'reports\宽带资源情况表_旧.xlsx'
xlsx_file = '宽带资源情况表_旧.xlsx'
# 使用 pandas 读取 .xls 文件(依赖 xlrd)
df = pd.read_excel(xls_file)
# 保存为 .xlsx 文件(使用 openpyxl 引擎)
df.to_excel(xlsx_file, index=False, engine='openpyxl')
print("✅ .xls 文件已成功转换为 .xlsx 格式")
from openpyxl import load_workbook
# 文件路径
source_file = r'宽带资源情况表_旧.xlsx'
target_file = 'merged_header_file.xlsx'
# 加载源文件和目标文件
source_wb = load_workbook(source_file)
target_wb = load_workbook(target_file)
# 获取源表数据
source_sheet = source_wb.active
# 检查目标文件是否存在 "Sheet2",若不存在则创建
if "Sheet2" in target_wb.sheetnames:
target_sheet = target_wb["Sheet2"]
else:
target_sheet = target_wb.create_sheet("Sheet2")
print("⚠️ Sheet2 不存在,已自动创建")
# 获取目标表最后一行的下一行
start_row = target_sheet.max_row + 1
# 将源表数据追加写入目标表
for row in source_sheet.iter_rows(values_only=True):
target_sheet.append(row)
# 保存目标文件
target_wb.save(target_file)
print("✅ 数据已成功追加到目标文件的 Sheet2 中")
from openpyxl import load_workbook
# 文件路径
file_path = 'merged_header_file.xlsx'
# 加载工作簿
wb = load_workbook(file_path)
# 获取当前工作表名称列表
sheet_names = wb.sheetnames
# 打印当前工作表名
print("当前工作簿中的工作表名称:", sheet_names)
# 检查是否存在名为 "Sheet2" 的工作表
if "Sheet2" in sheet_names:
# 获取该工作表
ws = wb["Sheet2"]
# 重命名为 "日调度表1"
ws.title = "日调度表1"
print("✅ 工作表 'Sheet2' 已重命名为 '日调度表1'")
else:
print("❌ 错误:工作簿中不存在名为 'Sheet2' 的工作表")
# 保存修改
wb.save(file_path)
# 原始 .xls 文件路径
xls_file = r'reports\宽带资源情况表_新.xlsx'
xlsx_file = '宽带资源情况表_新.xlsx'
# 使用 pandas 读取 .xls 文件(依赖 xlrd)
df = pd.read_excel(xls_file)
# 保存为 .xlsx 文件(使用 openpyxl 引擎)
df.to_excel(xlsx_file, index=False, engine='openpyxl')
print("✅ .xls 文件已成功转换为 .xlsx 格式")
from openpyxl import load_workbook
# 文件路径
source_file = '宽带资源情况表_新.xlsx'
target_file = 'merged_header_file.xlsx'
# 加载源文件和目标文件
source_wb = load_workbook(source_file)
target_wb = load_workbook(target_file)
# 获取源表数据
source_sheet = source_wb.active
# 检查目标文件是否存在 "Sheet2",若不存在则创建
if "Sheet2" in target_wb.sheetnames:
target_sheet = target_wb["Sheet2"]
else:
target_sheet = target_wb.create_sheet("Sheet2")
print("⚠️ Sheet2 不存在,已自动创建")
# 获取目标表最后一行的下一行
start_row = target_sheet.max_row + 1
# 将源表数据追加写入目标表
for row in source_sheet.iter_rows(values_only=True):
target_sheet.append(row)
# 保存目标文件
target_wb.save(target_file)
print("✅ 数据已成功追加到目标文件的 Sheet2 中")
from openpyxl import load_workbook
# 文件路径
file_path = 'merged_header_file.xlsx'
# 加载工作簿
wb = load_workbook(file_path)
# 获取当前工作表名称列表
sheet_names = wb.sheetnames
# 打印当前工作表名
print("当前工作簿中的工作表名称:", sheet_names)
# 检查是否存在名为 "Sheet2" 的工作表
if "Sheet2" in sheet_names:
# 获取该工作表
ws = wb["Sheet2"]
# 重命名为 "日调度表2"
ws.title = "日调度表2"
print("✅ 工作表 'Sheet2' 已重命名为 '日调度表2'")
else:
print("❌ 错误:工作簿中不存在名为 'Sheet2' 的工作表")
# 保存修改
wb.save(file_path)
# 原始 .xls 文件路径
xls_file = r'reports\日调度表分光器.xlsx'
xlsx_file = '日调度表分光器.xlsx'
# 使用 pandas 读取 .xls 文件(依赖 xlrd)
df = pd.read_excel(xls_file)
# 保存为 .xlsx 文件(使用 openpyxl 引擎)
df.to_excel(xlsx_file, index=False, engine='openpyxl')
print("✅ .xls 文件已成功转换为 .xlsx 格式")
from openpyxl import load_workbook
# 文件路径
source_file = '1757905734429_admin.xlsx'
target_file = 'merged_header_file.xlsx'
# 加载源文件和目标文件
source_wb = load_workbook(source_file)
target_wb = load_workbook(target_file)
# 获取源表数据
source_sheet = source_wb.active
# 检查目标文件是否存在 "Sheet2",若不存在则创建
if "Sheet2" in target_wb.sheetnames:
target_sheet = target_wb["Sheet2"]
else:
target_sheet = target_wb.create_sheet("Sheet2")
print("⚠️ Sheet2 不存在,已自动创建")
# 获取目标表最后一行的下一行
start_row = target_sheet.max_row + 1
# 将源表数据追加写入目标表
for row in source_sheet.iter_rows(values_only=True):
target_sheet.append(row)
# 保存目标文件
target_wb.save(target_file)
print("✅ 数据已成功追加到目标文件的 Sheet2 中")
from openpyxl import load_workbook
# 文件路径
file_path = 'merged_header_file.xlsx'
# 加载工作簿
wb = load_workbook(file_path)
# 获取当前工作表名称列表
sheet_names = wb.sheetnames
# 打印当前工作表名
print("当前工作簿中的工作表名称:", sheet_names)
# 检查是否存在名为 "Sheet2" 的工作表
if "Sheet2" in sheet_names:
# 获取该工作表
ws = wb["Sheet2"]
# 重命名为 "日调度表分光器"
ws.title = "日调度表分光器"
print("✅ 工作表 'Sheet2' 已重命名为 '日调度表分光器'")
else:
print("❌ 错误:工作簿中不存在名为 'Sheet2' 的工作表")
# 保存修改
wb.save(file_path)
from openpyxl import load_workbook
# 文件路径
source_file = 'tongbao.xlsx'
target_file = 'merged_header_file.xlsx'
# 加载源文件和目标文件
source_wb = load_workbook(source_file)
target_wb = load_workbook(target_file)
# 获取源表数据
source_sheet = source_wb.active
# 检查目标文件是否存在 "Sheet2",若不存在则创建
if "Sheet2" in target_wb.sheetnames:
target_sheet = target_wb["Sheet2"]
else:
target_sheet = target_wb.create_sheet("Sheet2")
print("⚠️ Sheet2 不存在,已自动创建")
# 获取目标表最后一行的下一行
start_row = target_sheet.max_row + 1
# 将源表数据追加写入目标表
for row in source_sheet.iter_rows(values_only=True):
target_sheet.append(row)
# 保存目标文件
target_wb.save(target_file)
print("✅ 数据已成功追加到目标文件的 Sheet2 中")
from openpyxl import load_workbook
# 文件路径
file_path = 'merged_header_file.xlsx'
# 加载工作簿
wb = load_workbook(file_path)
# 获取当前工作表名称列表
sheet_names = wb.sheetnames
# 打印当前工作表名
print("当前工作簿中的工作表名称:", sheet_names)
# 检查是否存在名为 "Sheet2" 的工作表
if "Sheet2" in sheet_names:
# 获取该工作表
ws = wb["Sheet2"]
# 重命名为 "通报"
ws.title = "通报"
print("✅ 工作表 'Sheet2' 已重命名为 '通报'")
else:
print("❌ 错误:工作簿中不存在名为 'Sheet2' 的工作表")
# 保存修改
wb.save(file_path)
from openpyxl import load_workbook
from openpyxl.styles import NamedStyle
# 文件路径
file_path = 'merged_header_file.xlsx'
# 加载工作簿
wb = load_workbook(file_path)
# 检查并创建百分比样式
percent_style_name = 'Percent 2 Decimal'
if percent_style_name not in wb.named_styles:
percent_style = NamedStyle(name=percent_style_name)
percent_style.number_format = '0.00%'
wb.add_named_style(percent_style)
# 获取名为 "通报" 的工作表
ws = wb['通报']
# 假设从第3行开始插入公式
start_row = 3
max_row = ws.max_row
# 插入公式并设置格式
for row in range(start_row, max_row + 1):
ws[f'C{row}'] = f'=XLOOKUP(A{row},日调度表分光器!A:A,日调度表分光器!C:C)'
ws[f'D{row}'] = f'=XLOOKUP(A{row},日调度表分光器!A:A,日调度表分光器!E:E)'
ws[f'B{row}'] = f'=XLOOKUP(A{row},日调度表分光器!A:A,日调度表分光器!B:B)'
ws[f'E{row}'] = f'=XLOOKUP(A{row},日调度表2!B:B,日调度表2!F:F)'
ws[f'F{row}'] = f'=XLOOKUP(A{row},日调度表1!B:B,日调度表1!F:F)'
ws[f'H{row}'] = f'=COUNTIF(Sheet1!B:B, A{row})'
# G列:插入公式并设置百分比格式
cell = ws[f'G{row}']
cell.value = f'=E{row}-F{row}'
cell.style = percent_style_name
# 在最后一行写入 SUM 公式(在 H 列)
last_row = max_row
ws[f'H{last_row}'] = f'=SUM(H{start_row}:H{max_row-1})'
# 保存修改
wb.save(file_path)
print("✅ 公式已成功插入到 '通报' 表,G 列设置为百分比格式,H 列最后一行为 SUM 公式")
from openpyxl import load_workbook
from openpyxl.styles import Font, Alignment, Border, Side, PatternFill
# 文件路径
file_path = r'C:\Users\Lt\Desktop\test\merged_header_file.xlsx' # 原始文件路径
output_path = r'C:\Users\Lt\Desktop\test\通报_美化后.xlsx' # 输出文件路径
# 加载工作簿和子表
wb = load_workbook(file_path)
sheet = wb["通报"] # 选择名为“通报”的子表
# 定义通用样式
normal_font = Font(name='微软雅黑', size=11)
title_font = Font(name='微软雅黑', size=11, bold=True, color="FFFFFF") # 白色字体
alignment_center = Alignment(horizontal='center', vertical='center')
thin_border = Border(
left=Side(style='thin'),
right=Side(style='thin'),
top=Side(style='thin'),
bottom=Side(style='thin')
)
title_fill = PatternFill(start_color='4F94CD', end_color='4F94CD', fill_type='solid') # 蓝灰色背景
# 1. 设置标题行样式(假设标题在第1行)
for cell in sheet[1]:
cell.font = title_font
cell.alignment = alignment_center
cell.fill = title_fill
cell.border = thin_border
# 2. 设置其余单元格样式
for row in sheet.iter_rows(min_row=2): # 从第2行开始
for cell in row:
cell.font = normal_font
cell.alignment = alignment_center
cell.border = thin_border
#3. 设置所有列的宽度为 20 个字符
for col in sheet.columns:
column_letter = col[0].column_letter # 获取列的字母(如 A, B, C)
sheet.column_dimensions[column_letter].width = 20
# 4. 设置统一行高
for row in sheet.iter_rows():
sheet.row_dimensions[row[0].row].height = 18 # 行高设为18
# 5. 冻结首行(冻结第一行)
sheet.freeze_panes = 'A2'
# 保存美化后的文件
wb.save(output_path)
print(f"✅ 美化完成,文件已保存至:{output_path}")
from openpyxl import load_workbook
from openpyxl.styles import Border, Side
# 加载 Excel 文件
file_path = r'C:\Users\Lt\Desktop\test\通报_美化后.xlsx' # 替换为你的文件路径
wb = load_workbook(file_path)
sheet = wb["Sheet1"] # 指定工作表名称
# 设置列宽
column_widths = {
'A': 7,
'B': 7,
'C': 14,
'D': 9,
'E': 38,
'F': 38,
'G': 14,
'H': 14,
'I': 14,
'J': 30,
'K': 22,
'L': 12,
'M': 85
}
for col, width in column_widths.items():
sheet.column_dimensions[col].width = width
# 定义统一的边框样式(细实线)
thin_border = Border(
left=Side(style='thin'),
right=Side(style='thin'),
top=Side(style='thin'),
bottom=Side(style='thin')
)
# 为所有已使用的单元格添加边框
for row in sheet.iter_rows():
for cell in row:
cell.border = thin_border
# 保存文件
output_path = r'your_excel_file_fixed_width_with_border.xlsx'
wb.save(output_path)
print(f"✅ 列宽已设置,边框已添加,文件已保存至:{output_path}")
import win32com.client as win32
import time
from PIL import ImageGrab
import os
# 启动 Excel 应用程序
excel = win32.Dispatch("Excel.Application")
excel.Visible = True # 必须设为 True 才能截图
excel.DisplayAlerts = False # 禁止弹窗
# 打开工作簿
file_path = r'C:\Users\Lt\Desktop\test\your_excel_file_fixed_width_with_border.xlsx' # 替换为你的文件路径
wb = excel.Workbooks.Open(file_path)
sheet = wb.Sheets("Sheet1") # 获取 Sheet1
# 确保当前是 Sheet1 激活状态
sheet.Activate()
# 对 B 列进行自动筛选
sheet.Rows(1).AutoFilter() # 假设第一行是标题行
# 筛选 B 列中指定内容(港南区、平南县等)
filter_values = ["港南区"]
sheet.Range("B1").AutoFilter(Field=2, Criteria1=filter_values, Operator=7) # Operator=7 表示 OR 多条件筛选
# 等待 Excel 刷新界面(截图前确保筛选完成)
time.sleep(1)
# 定义截图区域(如 A1:M100)
range_to_capture = sheet.Range("A1:M100") # 根据你的实际表格范围修改
# 将区域复制为图片
range_to_capture.CopyPicture(
Appearance=1, # xlScreen
Format=2 # xlPicture
)
# 新建一个工作表粘贴图片(或可以使用其他方式导出为图片文件)
sheet.Paste()
image = ImageGrab.grabclipboard()
# 保存图片到本地
output_folder = r'C:\Users\Lt\Desktop\test\tuisong' # 替换为你想保存图片的路径
os.makedirs(output_folder, exist_ok=True)
image_path = os.path.join(output_folder, '港南区.png')
image.save(image_path)
# 可选:将图片导出为图片文件(需要额外操作)
# 由于 win32com 无法直接保存剪贴板图片为文件,建议手动复制保存或使用 pywin32 + PIL 从屏幕截图
# 保存并关闭
output_path = r'C:\Users\Lt\Desktop\test\tuisong\港南区.xlsx'
wb.SaveAs(output_path)
wb.Close()
excel.Quit()
print(f"✅ 筛选港南区并截图完成,结果已粘贴至 Excel 文件。")
# 启动 Excel 应用程序
excel = win32.Dispatch("Excel.Application")
excel.Visible = True # 必须设为 True 才能截图
excel.DisplayAlerts = False # 禁止弹窗
# 打开工作簿
file_path = r'C:\Users\Lt\Desktop\test\your_excel_file_fixed_width_with_border.xlsx' # 替换为你的文件路径
wb = excel.Workbooks.Open(file_path)
sheet = wb.Sheets("Sheet1") # 获取 Sheet1
# 确保当前是 Sheet1 激活状态
sheet.Activate()
# 对 B 列进行自动筛选
sheet.Rows(1).AutoFilter() # 假设第一行是标题行
# 筛选 B 列中指定内容(港南区、平南县等)
filter_values = ["港北区"]
sheet.Range("B1").AutoFilter(Field=2, Criteria1=filter_values, Operator=7) # Operator=7 表示 OR 多条件筛选
# 等待 Excel 刷新界面(截图前确保筛选完成)
time.sleep(1)
# 定义截图区域(如 A1:M100)
range_to_capture = sheet.Range("A1:M100") # 根据你的实际表格范围修改
# 将区域复制为图片
range_to_capture.CopyPicture(
Appearance=1, # xlScreen
Format=2 # xlPicture
)
# 新建一个工作表粘贴图片(或可以使用其他方式导出为图片文件)
sheet.Paste()
image = ImageGrab.grabclipboard()
# 保存图片到本地
output_folder = r'C:\Users\Lt\Desktop\test\tuisong' # 替换为你想保存图片的路径
os.makedirs(output_folder, exist_ok=True)
image_path = os.path.join(output_folder, '港北区.png')
image.save(image_path)
# 可选:将图片导出为图片文件(需要额外操作)
# 由于 win32com 无法直接保存剪贴板图片为文件,建议手动复制保存或使用 pywin32 + PIL 从屏幕截图
# 保存并关闭
output_path = r'C:\Users\Lt\Desktop\test\tuisong\港北区.xlsx'
wb.SaveAs(output_path)
wb.Close()
excel.Quit()
print(f"✅ 筛选港北区并截图完成,结果已粘贴至 Excel 文件。")
# 启动 Excel 应用程序
excel = win32.Dispatch("Excel.Application")
excel.Visible = True # 必须设为 True 才能截图
excel.DisplayAlerts = False # 禁止弹窗
# 打开工作簿
file_path = r'C:\Users\Lt\Desktop\test\your_excel_file_fixed_width_with_border.xlsx' # 替换为你的文件路径
wb = excel.Workbooks.Open(file_path)
sheet = wb.Sheets("Sheet1") # 获取 Sheet1
# 确保当前是 Sheet1 激活状态
sheet.Activate()
# 对 B 列进行自动筛选
sheet.Rows(1).AutoFilter() # 假设第一行是标题行
# 筛选 B 列中指定内容(港南区、平南县等)
filter_values = ["覃塘区"]
sheet.Range("B1").AutoFilter(Field=2, Criteria1=filter_values, Operator=7) # Operator=7 表示 OR 多条件筛选
# 等待 Excel 刷新界面(截图前确保筛选完成)
time.sleep(1)
# 定义截图区域(如 A1:M100)
range_to_capture = sheet.Range("A1:M100") # 根据你的实际表格范围修改
# 将区域复制为图片
range_to_capture.CopyPicture(
Appearance=1, # xlScreen
Format=2 # xlPicture
)
# 新建一个工作表粘贴图片(或可以使用其他方式导出为图片文件)
sheet.Paste()
image = ImageGrab.grabclipboard()
# 保存图片到本地
output_folder = r'C:\Users\Lt\Desktop\test\tuisong' # 替换为你想保存图片的路径
os.makedirs(output_folder, exist_ok=True)
image_path = os.path.join(output_folder, '覃塘区.png')
image.save(image_path)
# 可选:将图片导出为图片文件(需要额外操作)
# 由于 win32com 无法直接保存剪贴板图片为文件,建议手动复制保存或使用 pywin32 + PIL 从屏幕截图
# 保存并关闭
output_path = r'C:\Users\Lt\Desktop\test\tuisong\覃塘区.xlsx'
wb.SaveAs(output_path)
wb.Close()
excel.Quit()
print(f"✅ 筛选覃塘区并截图完成,结果已粘贴至 Excel 文件。")
# 启动 Excel 应用程序
excel = win32.Dispatch("Excel.Application")
excel.Visible = True # 必须设为 True 才能截图
excel.DisplayAlerts = False # 禁止弹窗
# 打开工作簿
file_path = r'C:\Users\Lt\Desktop\test\your_excel_file_fixed_width_with_border.xlsx' # 替换为你的文件路径
wb = excel.Workbooks.Open(file_path)
sheet = wb.Sheets("Sheet1") # 获取 Sheet1
# 确保当前是 Sheet1 激活状态
sheet.Activate()
# 对 B 列进行自动筛选
sheet.Rows(1).AutoFilter() # 假设第一行是标题行
# 筛选 B 列中指定内容(港南区、平南县等)
filter_values = ["平南县"]
sheet.Range("B1").AutoFilter(Field=2, Criteria1=filter_values, Operator=7) # Operator=7 表示 OR 多条件筛选
# 等待 Excel 刷新界面(截图前确保筛选完成)
time.sleep(1)
# 定义截图区域(如 A1:M100)
range_to_capture = sheet.Range("A1:M100") # 根据你的实际表格范围修改
# 将区域复制为图片
range_to_capture.CopyPicture(
Appearance=1, # xlScreen
Format=2 # xlPicture
)
# 新建一个工作表粘贴图片(或可以使用其他方式导出为图片文件)
sheet.Paste()
image = ImageGrab.grabclipboard()
# 保存图片到本地
output_folder = r'C:\Users\Lt\Desktop\test\tuisong' # 替换为你想保存图片的路径
os.makedirs(output_folder, exist_ok=True)
image_path = os.path.join(output_folder, '平南县.png')
image.save(image_path)
# 可选:将图片导出为图片文件(需要额外操作)
# 由于 win32com 无法直接保存剪贴板图片为文件,建议手动复制保存或使用 pywin32 + PIL 从屏幕截图
# 保存并关闭
output_path = r'C:\Users\Lt\Desktop\test\tuisong\平南县.xlsx'
wb.SaveAs(output_path)
wb.Close()
excel.Quit()
print(f"✅ 筛选平南县并截图完成,结果已粘贴至 Excel 文件。")
# 启动 Excel 应用程序
excel = win32.Dispatch("Excel.Application")
excel.Visible = True # 必须设为 True 才能截图
excel.DisplayAlerts = False # 禁止弹窗
# 打开工作簿
file_path = r'C:\Users\Lt\Desktop\test\your_excel_file_fixed_width_with_border.xlsx' # 替换为你的文件路径
wb = excel.Workbooks.Open(file_path)
sheet = wb.Sheets("Sheet1") # 获取 Sheet1
# 确保当前是 Sheet1 激活状态
sheet.Activate()
# 对 B 列进行自动筛选
sheet.Rows(1).AutoFilter() # 假设第一行是标题行
# 筛选 B 列中指定内容(港南区、平南县等)
filter_values = ["桂平市"]
sheet.Range("B1").AutoFilter(Field=2, Criteria1=filter_values, Operator=7) # Operator=7 表示 OR 多条件筛选
# 等待 Excel 刷新界面(截图前确保筛选完成)
time.sleep(1)
# 定义截图区域(如 A1:M100)
range_to_capture = sheet.Range("A1:M100") # 根据你的实际表格范围修改
# 将区域复制为图片
range_to_capture.CopyPicture(
Appearance=1, # xlScreen
Format=2 # xlPicture
)
# 新建一个工作表粘贴图片(或可以使用其他方式导出为图片文件)
sheet.Paste()
image = ImageGrab.grabclipboard()
# 保存图片到本地
output_folder = r'C:\Users\Lt\Desktop\test\tuisong' # 替换为你想保存图片的路径
os.makedirs(output_folder, exist_ok=True)
image_path = os.path.join(output_folder, '桂平市.png')
image.save(image_path)
# 可选:将图片导出为图片文件(需要额外操作)
# 由于 win32com 无法直接保存剪贴板图片为文件,建议手动复制保存或使用 pywin32 + PIL 从屏幕截图
# 保存并关闭
output_path = r'C:\Users\Lt\Desktop\test\tuisong\桂平市.xlsx'
wb.SaveAs(output_path)
wb.Close()
excel.Quit()
print(f"✅ 筛选桂平市并截图完成,结果已粘贴至 Excel 文件。")
try:
# 启动 Excel 应用
excel = win32.Dispatch("Excel.Application")
excel.Visible = False
excel.DisplayAlerts = False
excel.ScreenUpdating = False
# 打开 Excel 文件(请根据实际路径修改)
file_path = r'C:\Users\Lt\Desktop\test\通报_美化后.xlsx'
workbook = excel.Workbooks.Open(file_path)
# 获取 "通报" 子表
sheet = workbook.Sheets("通报")
# 获取数据区域
used_range = sheet.UsedRange
# 复制数据区域为图片(xlScreen = 1, xlPicture = 2)
used_range.CopyPicture(Appearance=1, Format=2)
# 创建临时图表用于粘贴图片
chart_obj = sheet.ChartObjects().Add(
Left=0,
Top=0,
Width=used_range.Width,
Height=used_range.Height
)
chart = chart_obj.Chart
chart.Paste() # 粘贴图片到图表
# 设置图片保存路径(请根据实际路径修改)
output_path = r'C:\Users\Lt\Desktop\test\tuisong\通报_截图.png'
# 导出图表为图片
chart.Export(output_path, "PNG")
# 清理资源
chart_obj.Delete()
workbook.Close(SaveChanges=False)
excel.Quit()
print(f"✅ 数据截图已成功保存为:{output_path}")
except Exception as e:
print("❌ 出现错误:", str(e))优化并且保留通报截图
最新发布