xlwings模块的日常使用
Python的xlwings模块经常用来操作xlsx文档,是办公党比较常用的。
下面就是一个示例,从文件A.xlsx中读取一些数据,在B.xlsx中做筛选,然后保存到C.xlsx
import xlwings as xw fileA = r"A.xlsx" fileB = r"B.xlsx" fileC = r"C.xlsx" app = xw.App(visible=False, add_book=False) app.display_alerts = False app.screen_updating = False # 打开 A.xlsx 文件 wb_a = app.books.open(fileA) sheet_a = wb_a.sheets[0] # 读取 A.xlsx 中某一列的数据 file_names = sheet_a.range('A1').expand('down').value[1:] #print(file_names) wb_a.close() print("begin to filter") # 打开 B.xlsx 文件 wb_b = app.books.open(fileB) sheet_b = wb_b.sheets[0] # 读取 B.xlsx 中某一列的数据(假设为URL) urls = sheet_b.range('AU1').expand('down').value[1:] #print(urls) # 根据 A.xlsx 中的文件名筛选 B.xlsx 中的数据 print("Used range:",sheet_b.used_range) data = sheet_b.used_range.value # 根据 A.xlsx 中的文件名筛选 B.xlsx 中的数据 filtered_data = [data[0]] # 保留 B.xlsx 表头 for row in data[1:]: fullurl = row[46] # 假设文件名在 B.xlsx 中的第47列(AU列) if not fullurl: continue for file_name in file_names: if file_name in fullurl: filtered_data.append(row) break wb_b.close() # 创建新的 Excel 文件 C.xlsx 并保存筛选后的数据 print("begin to save") wb_c = app.books.add() sheet_c = wb_c.sheets[0] # 逐行写入数据 # for i, row in enumerate(filtered_data): # sheet_c.range('A{}'.format(i+1)).value = row sheet_c.range('A1').value = filtered_data wb_c.save(fileC) wb_c.close() # 关闭所有打开的工作簿 app.quit() print("done")