随笔 - 57  文章 - 3 评论 - 0 阅读 - 2317
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

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'}]
posted on   我爱你的  阅读(547)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
· 使用C#创建一个MCP客户端
点击右上角即可分享
微信分享提示