from openpyxl import load_workbook
from typing import Union, List, IO
import openpyxl
import pandas as pd
import os
def write_excel(file_full_path, values:list,sheet_name ="Sheet1"):
# sheet名称
sheet_name = sheet_name
# 获取指定的文件
wb = openpyxl.load_workbook(file_full_path)
# 获取指定的sheet
ws = wb[sheet_name]
# 获得最大行数
max_row_num = ws.max_row
# 获得最大列数
max_col_num = ws.max_column
# 将当前行设置为最大行数
ws._current_row = max_row_num
# 使用append方法,将行数据按行追加写入
# values = ['Jack', '12', '2023/11/12', 'Failed']
ws.append(values)
# 保存文件
wb.save(file_full_path)
#如果要批量写入数据的话可以用循环在内部使用,以减少io操作减少写入时间如下
def write_excel_2(file_full_path,sheet_name ="Sheet1"):
# sheet名称
sheet_name = sheet_name
# 获取指定的文件
wb = openpyxl.load_workbook(file_full_path)
# 获取指定的sheet
ws = wb[sheet_name]
# 获得最大行数
max_row_num = ws.max_row
# 获得最大列数
max_col_num = ws.max_column
# 将当前行设置为最大行数
ws._current_row = max_row_num
# 使用append方法,将行数据按行追加写入
# values = ['Jack', '12', '2023/11/12', 'Failed']
for i in range(200,1000):
values = ['Jack', i, '2023/11/12', 'Failed']
ws.append(values)
# 保存文件
wb.save(file_full_path)
def xlsx_read():
# 加载Excel文件
workbook = load_workbook(filename='example - 副本.xlsx')
# 获取所有的工作表名称
sheet_names = workbook.sheetnames
Lists = []
# 遍历所有工作表
for sheet_name in sheet_names:
# 获取工作表
sheet = workbook[sheet_name]
# 遍历所有行
for row in sheet.iter_rows(values_only=True):
# 打印每行的数据
# print(row)
Lists.append(row)
return Lists
#输出形式 [('name', 'num', 'date', 'F_T'), ('Jack', 0, '2023/11/12', 'Failed'), ('Jack', 1, '2023/11/12', 'Failed')]
class ExcelUtils(object):
""" Excel文件操作工具类 """
@classmethod
def read_excel(
cls,
path_or_buffer: Union[str, IO],
sheet_name: str = "Sheet1",
col_mapping: dict = None,
all_col: bool = True,
header: int = 0,
**kwargs
) -> List[dict]:
"""
读取excel表格数据,根据col_mapping替换列名
Args:
path_or_buffer: 文件路径或者缓冲流
sheet_name: 读书excel表的sheet名称
col_mapping: 列字段映射
all_col: True返回所有列信息,False则返回col_mapping对应的字段信息
header: 默认0从第一行开启读取,用于指定从第几行开始读取
Returns:
"""
use_cols = None
if not all_col:
# 获取excel表指定列数据
use_cols = list(col_mapping) if col_mapping else None
df = pd.read_excel(path_or_buffer, sheet_name=sheet_name, usecols=use_cols, header=header, **kwargs)
if col_mapping:
df.rename(columns=col_mapping, inplace=True)
return df.to_dict("records")
#输出形式[{'name': 'Jack', 'num': 0, 'date': '2023/11/12', 'F_T': 'Failed'}, {'name': 'Jack', 'num': 1, 'date': '2023/11/12', 'F_T': 'Failed'}]
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
· 使用C#创建一个MCP客户端