把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()
}