openpyxl Excel写入文件时,莫名会丢失数据,问题原因未找到,使用xlsxwriter进行数据写入及xlsxwriter对单元格的样式操作 附常用的excel操作库

使用openpyxl 库进行单元格大数据写入时(大概900字) 莫名的会丢失数据,有时候会丢失前面一点,有时候会丢失后面一点,打印了保存前的日志,和保存后的变量输出日志,都是完整的,但是保存到Excel之后,数据就不完整了,原因困扰了我很久,没有找到

import openpyxl
# xlsxwriter只可以新建一个excel,不可以读取和更新
# 创建一个workbook 和增加一个worksheet,默认为sheet1...,也可以直接为sheet命名,例如下边的test
import xlsxwriter as xlsxwriter
from loguru import logger

# 保存Excel
def saveExcel(codes):
    '''
    :param codes: --> dic
    :return: 
    '''
    try:
        data = openpyxl.load_workbook("./标题.xlsx")
        for num, code in codes.items():  # 这里的code是字典的key
            # 先填充,最后在进行保存
            table = data["Sheet1"]
            table["B" + str(num)] = code
            logger.info('==========标题:{},表数据行:{},内容:{}', str(sheet2.cell(num, 1).value), str(num), code)
        data.close()
        data.save("./标题.xlsx")
    except Exception as e:
        logger.info('Excel保存异常:{}', e)


def saveExcelV2(codes):
    '''
    :param codes: --> dic
    :return: 
    '''
    workbook = xlsxwriter.Workbook('result.xlsx', options={'constant_memory': True})
    worksheet = workbook.add_worksheet()  # 默认为 Sheet1.
    myformat = workbook.add_format({
        'font_size': 14,
        # 'font_color ': 'red',
        'bold': True
    })
    myformat.set_color('red')
    # 从首行、首列开始.
    row = 1
    col = 0
    worksheet.write(0, 0, '标题', myformat)
    worksheet.write(0, 1, '内容', myformat)
    for key, value in codes.items():  # 这里的code是字典的key
        worksheet.write(row, col, key)
        worksheet.write(row, col + 1, value)
        row += 1
    workbook.close()

调用saveExcel方法时,保存短数据没问题,为了实现功能,无奈我只能使用了另一个excel写入的库xlsxwriter

xlsxwriter 处理单元格的样式数据,函数

import xlsxwriter

book = xlsxwriter.Workbook(
    filename='./test.xlsx',
    options={  # 全局设置
        'strings_to_numbers': True,  # str 类型数字转换为 int 数字
        'strings_to_urls': False,  # 自动识别超链接
        'constant_memory': False,  # 连续内存模式 (True 适用于大数据量输出)
        'default_format_properties': {
            'font_name': '微软雅黑',  # 字体. 默认值 "Arial"
            'font_size': 10,  # 字号. 默认值 11
            # 'bold': False,  # 字体加粗
            # 'border': 1,  # 单元格边框宽度. 默认值 0
            # 'align': 'left',  # 对齐方式
            # 'valign': 'vcenter',  # 垂直对齐方式
            # 'text_wrap': False,  # 单元格内是否自动换行
            # ...
        },
    }
)
sheet = book.add_worksheet('sheet 1')

# 在全局设置的基础上创建样式
my_format = book.add_format({
    'fg_color': 'yellow',  # 单元格填充颜色. 常用的颜色可以用单词描述. 自定义的颜色可以用 '#FFFFFF' 这样描述
})
sheet.write(0, 0, 'hello', my_format)

book.close()


'''
xlsxwriter模块add_format参数详解
# 数字
num_format = 'General'    # 数字格式
 
# 字体
font_name = 'Arial'       # 字体
font_size = 11            # 字号
font_color = 0x0          # 颜色
bold = True               # 加粗
italic = True             # 斜体
underline = 0             # 下划线,0:无;1:单下划线;2:双下划线;……
font_strikeout = True     # 删除线
font_script = 0           # 上下标,0:无;1:上标;2:下标
font_outline = True       # 轮廓
font_shadow = True        # 阴影
 
# 保护
hidden = False            # 隐藏
locked = True             # 锁定
 
# 对齐
align = 'left'            # 水平对齐 'left'|'centre'|'right'|'fill'|'justify'|'centre_across'|'distributed'|'justify_distributed'
valign = 'vcentre'        # 垂直对齐 'top'|'vcentre'|'bottom'|'vjustify'|'vdistributed'
text_wrap = True          # 自动换行
rotation = 0              # 旋转
indent = 1                # 缩进
shrink = True             # 缩小字体填充
 
# 填充
pattern = 1               # 图案样式
fg_color = 0              # 前景色
bg_color = 0              # 背景色
 
# 边框
border = 0                # 边框,0:无边框;1:外边框;
border_color = 0x0        # 边框颜色
diag_border = 0
diag_color = 0x0
diag_type = 0
bottom = 0                # 底边框
bottom_color = 0x0        # 底边框颜色
left = 0                  # 左边框
left_color = 0x0          # 左边框颜色
right = 0                 # 右边框
right_color = 0x0         # 右边框颜色
top = 0                   # 上边框
top_color = 0x0           # 上边框颜色
'''

常用的excel操作库

posted @ 2022-05-13 14:10  darling331  阅读(355)  评论(0编辑  收藏  举报