Python Excel操作模块XlsxWriter之写入列worksheet.write_column()

本文介绍了如何使用worksheet.write_column()方法向Excel工作表中快速写入一整列数据。此方法接受行号、列号及要写入的数据作为参数,并可选择性地设置单元格格式。通过示例说明了如何利用此功能批量写入数据,非常适合处理数据库查询结果等场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

worksheet.write_column()

write_column(row, col, data[, cell_format])

从(col, row)处开始写入列。

参数:

  • row(int) - 单元格所在的行(索引从0开始计数)。
  • col(int) - 单元格所在的列(索引从0开始计数)。
  • data - 写入单元格的数据。变量类型。
  • cell_format(Format) - 可选的格式化对象。

write_column()方法可以用于向单元格一次性写入一个列表的数据。在将数据库查询结果转换到Excel工作表时很有用。在写入数据时调用write()方法。例如:

# 一些示例数据。
data = ('Foo', 'Bar', 'Baz')

# 将数据写入单元格序列。
worksheet.write_column('A1', data)

# 上面的例子等价于:
worksheet.write('A1', data[0])
worksheet.write('A2', data[1])
worksheet.write('A3', data[2])

import pandas as pd import time import csv from watchdog.observers import Observer from watchdog.events import FileSystemEventHandler import os class CSVHandler(FileSystemEventHandler): def __init__(self, csv_path, excel_path): self.csv_path = csv_path self.excel_path = excel_path self.excel_data_rows = 0 # Excel实际数据行数 self.last_modified = 0 # 防抖时间戳 # 初始化Excel文件 if not os.path.exists(excel_path): pd.read_csv(csv_path, nrows=0).to_excel(excel_path, index=False) else: try: df_excel = pd.read_excel(excel_path) self.excel_data_rows = len(df_excel) except: os.remove(excel_path) pd.read_csv(csv_path, nrows=0).to_excel(excel_path, index=False) def get_csv_data_rows(self): """准确获取CSV数据行数(排除标题行)""" with open(self.csv_path, 'r', newline='', encoding='utf-8') as f: reader = csv.reader(f) return sum(1 for _ in reader) - 1 def on_modified(self, event): if event.src_path != self.csv_path: return # 防抖处理(1秒内不重复触发) current_time = time.time() if current_time - self.last_modified < 1: return self.last_modified = current_time print("检测到文件修改,开始同步...") try: # 获取当前数据行数 current_csv_rows = self.get_csv_data_rows() new_rows = current_csv_rows - self.excel_data_rows if new_rows > 0: # 读取新增数据(排除标题行) df_new = pd.read_csv( self.csv_path, skiprows=range(1, self.excel_data_rows + 1), # +1跳过标题行 nrows=new_rows, encoding='utf-8' ) # 写入Excel with pd.ExcelWriter( self.excel_path, mode='a', engine='openpyxl', if_sheet_exists='overlay' ) as writer: df_new.to_excel( writer, index=False, header=False, startrow=self.excel_data_rows + 1 # +1跳过标题行 ) # 更新状态 self.excel_data_rows += new_rows print(f"成功追加{new_rows}行数据,当前总行数:{self.excel_data_rows}") else: print("无新增有效数据") except PermissionError: print("错误:Excel文件被其他程序占用,请关闭后重试") except Exception as e: print(f"同步失败: {str(e)}") if __name__ == "__main__": csv_path = "D:/data.csv" excel_path = "D:/output.xlsx" event_handler = CSVHandler(csv_path, excel_path) observer = Observer() observer.schedule(event_handler, path=os.path.dirname(csv_path), recursive=False) observer.start() try: print(f"开始实时监控: {csv_path}") while True: time.sleep(0.5) except KeyboardInterrupt: observer.stop() observer.join()给该程序每段做出注释,并出那些是我需要修改的参数
最新发布
03-27
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值