可以对.xlsx,.xlsm,.xltx,.xltm文件格式操作
可以对.et文件读取,高版本的xlrd 也不支持对et访问,因此需要将其版本回退至2.0一下比如:1.2.0
shutil 里面有copy函数,用于备份文件
import datetime
import time
import shutil
import pywps
import openpyxl
import os
import xlrd
import AnalyzerMap_Cfg as map_cfg
import win32com.client
def outputAsExcel(file):
# 因为公司加密了.xlsx文件,不能读,因此只能新建
# 1、新建一个excel文件
# 2、如果.et文件存在则打开,拷贝.et文件所有内容到新的excel中(除Sheet表外)
# 3、保存新的.xlsx及.et文件
row_offset = 7
fileName = "RAM及ROM使用量统计结果"
fileName_extension = ".et"
fileName_fullPath= os.getcwd() + '\\' + fileName+fileName_extension
fileName_is_exist = 0
# 新建excel文件
wb_xlsx = openpyxl.Workbook()
# 如果存在.et文件,则打开 并 拷贝到新建的.xlsx
if os.path.isfile(fileName_fullPath):
fileName_is_exist = 1
# 打开.et文件
wb_et = xlrd.open_workbook(fileName_fullPath, 'r')
print(wb_et.sheet_names()) # sheet 名称
wb_et_sheet_len = len(wb_et.sheet_names()) # sheet 数量
print(wb_et_sheet_len)
if 1 == fileName_is_exist:# 如果存在.et文件,则拷贝
sheet_i = 0
while sheet_i < wb_et_sheet_len:
# 逐张sheet表 操作
if wb_et.sheet_names()[sheet_i] != "Sheet":
wb_et_sheet = wb_et.sheets()[sheet_i] # 获取第一张sheet表
wb_xlsx_sheet = wb_xlsx.create_sheet(title=wb_et.sheet_names()[sheet_i])
wb_et_nrows = wb_et_sheet.nrows # 获取最大行号
# 逐行copy
row_i = 0
while row_i < wb_et_nrows:
wb_xlsx_sheet.append(wb_et_sheet.row_values(row_i))
row_i = row_i + 1
#
sheet_i = sheet_i + 1
if "统计记录" not in wb_xlsx.sheetnames:
wb_xlsx_sheet = wb_xlsx.create_sheet(title="统计记录")
wb_xlsx_sheet.append(("类别","总量(Kb)","使用量(Kb)","剩余量(Kb)"))
else:
wb_xlsx_sheet = wb_xlsx.get_sheet_by_name("统计记录")
#写入前准备:查找最大行
wb_xlsx_sheet._current_row = wb_xlsx_sheet.max_row + 1#指向最大行号+1
print("最大行号%d"%(wb_xlsx_sheet._current_row))
wb_xlsx_sheet.cell(wb_xlsx_sheet._current_row, 1).value = file # 将分析的文件存在n行1列
used_len = round(map_cfg.global_var.totalGlobalROM_A / 1024, 1)
total_len = round(int(map_cfg.global_var.Global_ROM_A_Info[2], 10), 1)
wb_xlsx_sheet.append(("Global_ROM", total_len, used_len, (total_len - used_len)))
used_len = round(map_cfg.global_var.totalLocalRAM / 1024, 1)
total_len = round(int(map_cfg.global_var.Local_RAM_Info[2], 10), 1)
wb_xlsx_sheet.append(("Local_RAM", total_len, used_len, (total_len - used_len)))
used_len = round(map_cfg.global_var.totalLocalRAMSelf / 1024, 1)
total_len = round(int(map_cfg.global_var.Local_RAM_Self_Info[2], 10), 1)
wb_xlsx_sheet.append(("Local_RAM_Self", total_len, used_len, (total_len - used_len)))
used_len = round(map_cfg.global_var.totalGlobalRAM_A / 1024, 1)
total_len = round(int(map_cfg.global_var.Global_RAM_A_Info[2], 10), 1)
wb_xlsx_sheet.append(("Global_RAM_A", total_len, used_len, (total_len - used_len)))
used_len = round(map_cfg.global_var.totalGlobalRAM_B / 1024, 1)
total_len = round(int(map_cfg.global_var.Global_RAM_B_Info[2], 10), 1)
wb_xlsx_sheet.append(("Global_RAM_B", total_len, used_len, (total_len - used_len)))
wb_xlsx.save(fileName+".xlsx")
wb_xlsx.save(fileName+".et")
return