LTE-NPC 2025-03-06 16:51 采纳率: 0%
浏览 10

xlsx复制数据到xls报错问题

把xlsx工作表的sheet1表格数据复制xls sheet1里面。本地测试代码运行正常。放在(IIS)上面运行的时候就会报错。
报错如下:- ERROR - Error during xlsx_to_xls process: (-2147352567, '发生意外。', (0, 'Microsoft Excel', 'Microsoft Excel 不能访问文件“C:\flaskpy\results\jzmb.xlsx”。 可能的原因有以下几个:\n\n\u2022 文件名称或路径不存在。\n\u2022 文件正被其他程序使用。\n\u2022 您正要保存的工作簿与当前打开的工作簿同名。', 'xlmain11.chm', 0, -2146827284), None)

{def xlsx_to_xls():
try:
# 获取锁
lock.acquire()

    # 启动 Excel 应用程序并设置为不可见
    app = xw.App(visible=False)

    # 打开 .xlsx 文件
    wb_xlsx = app.books.open(output_path)
    sheet_xlsx = wb_xlsx.sheets[target_sheet_name_xlsx]

    if not sheet_xlsx:
        logging.error(f"Target sheet '{target_sheet_name_xlsx}' does not exist in the .xlsx file.")
        app.quit()
        return

    # 打开已存在的 .xls 文件
    wb_xls = app.books.open(xls_path)
    existing_sheets = [sheet.name for sheet in wb_xls.sheets]

    # 检查目标工作表是否已经存在于 .xls 文件中
    if target_sheet_name_xls in existing_sheets:
        logging.info(f"Sheet '{target_sheet_name_xls}' already exists in the .xls file. Skipping creation.")
        sheet_xls = wb_xls.sheets[target_sheet_name_xls]
    else:
        sheet_xls = wb_xls.sheets.add(name=target_sheet_name_xls)

    # 选择所有数据并复制到剪贴板
    sheet_xlsx.range('A1').expand().copy()

    # 粘贴到目标工作表的第一个单元格 A1
    sheet_xls.range('A1').paste()

    # 设置日期格式
    date_format = 'yyyy-mm-dd hh:mm:ss'

    # 假设 sheet_xls 是你的工作表对象
    # 设置N列(第14列)的日期格式
    sheet_xls.range('N1').expand('down').api.NumberFormat = date_format

    # 设置O列(第15列)的日期格式
    sheet_xls.range('O1').expand('down').api.NumberFormat = date_format

    # 保存 .xls 文件
    wb_xls.save(xls_path)
    wb_xls.close()
    wb_xlsx.close()

    # 退出 Excel 应用程序
    app.quit()

    logging.info(f"Data successfully copied from {output_path} to {xls_path} in sheet '{target_sheet_name_xls}'")

except Exception as e:
    logging.error(f"Error during xlsx_to_xls process: {e}")
    try:
        # 尝试关闭所有打开的 Excel 应用程序
        app.quit()
    except Exception as quit_err:
        logging.error(f"Error quitting Excel application: {quit_err}")
finally:
    # 释放锁
    lock.release()

}

  • 写回答

3条回答 默认 最新

  • 阿里嘎多学长 2025-03-06 17:02
    关注

    阿里嘎多学长整理AIGC生成,因移动端显示问题导致当前答案未能完全显示,请使用PC端查看更加详细的解答过程

    xlsx复制数据到xls报错问题

    你遇到的问题是,使用 Python 代码将 xlsx 文件中的数据复制到 xls 文件中,但是当你将代码部署到 IIS 服务器上时,会报错。报错信息中提到的是 ERROR - Error during xlsx_to_,这可能是由于 IIS 服务器的环境问题或 Python 依赖项的问题。

    首先,检查你的 Python 依赖项是否正确安装和配置。如果你使用的是 Flask 框架,可以检查 Flask 的依赖项是否正确安装。

    其次,检查你的 xlsx 和 xls 文件是否正确地读写。如果你使用的是 openpyxl 库,可以检查它是否正确地读写 xlsx 文件。

    最后,可以尝试在 IIS 服务器上安装 Python 的 logging 模块,来获取更多的错误信息,帮助你更好地 debug 问题。

    核心代码:

    import openpyxl
    
    # 读取 xlsx 文件
    wb = openpyxl.load_workbook('input.xlsx')
    sheet = wb['Sheet1']
    
    # 读取 xls 文件
    wb_out = openpyxl.Workbook()
    sheet_out = wb_out.active
    
    # 复制数据
    for row in sheet.iter_rows(values_only=True):
        sheet_out.append(row)
    
    # 保存 xls 文件
    wb_out.save('output.xls')
    

    请注意,这只是一个简单的示例代码,实际情况中可能需要根据你的需求进行修改。

    评论

报告相同问题?

问题事件

  • 创建了问题 3月6日