1、openpyxl使用

  涉及到单元格合并、赋值

'''
.格式转换
raw_data create_data boolean Bool
uint8 UInt8
int8 Int8
uint16 UInt16
int16 Int16
uint32 UInt32
int32 Int32
.定点数数据类型格式转换
'''
from openpyxl import load_workbook from openpyxl.styles import Color, Font, Alignment
# wb = load_workbook("EPA2_data.xlsx")
wb = load_workbook("EPA2_data.xlsx")
sheet = wb.get_sheet_by_name('Output')
#格式居中显示
align = Alignment(horizontal='center', vertical='center')
TCrows=[]
Cases=[] #<Worksheet "Output">
# print(sheet)
# print(sheet.max_row)
# print(sheet.max_column) raw_type_dic = {
'boolean': 'Bool',
'uint8': 'UInt8',
'int8': 'Int8',
'uint16': 'UInt16',
'int16': 'Int16',
'uint32': 'UInt32',
'int32': 'Int32', } for row in sheet.iter_rows():
TCrows.append(row)
for i in range(, ):
Cases.append(TCrows[i]) totalNum =
runnable_data_list = []
start =
count =
test_merge_list = [] for item in range(,totalNum):
#Runnable名称
runnable_data = Cases[item][].value # fixdt(,,0.01,)
print('第%s次'%count+':'+str(runnable_data))
merge_list = []
if item != :
if runnable_data != runnable_data_list[item-]:
print('meege====='+ str(item))
# sheet.merge_cells("B%s:B%s" % (temp, item+))
merge_list.append(start)
stop = item+
merge_list.append(stop)
start = stop+
test_merge_list.append(merge_list)
if item == totalNum-:
print('最后一次%s'%count)
stop = item
merge_list.append(start)
merge_list.append(stop)
test_merge_list.append(merge_list) # if item != :
# if runnable_data != runnable_data_list[item-]:
# print('meege====='+ str(item))
# sheet.merge_cells("B%s:B%s" % (temp, item+))
# temp= item+
# print(temp)
# print(runnable_data_list)
#
# print(runnable_data) type_data = Cases[item][].value # fixdt(,,0.01,)
# . 判断是否字典类型type
if type_data in raw_type_dic:
#APP Data Type
Cases[item][].value = raw_type_dic[type_data]
#Base Type
Cases[item][].value = type_data
#Compu Method flag
Cases[item][].value = int('')
#精度
Cases[item][].value = int('')
#offset
# Cases[item][].value = ''
elif "fixdt" in type_data:
format_list = []
format_str = ''
a = ''
b = ''
c = ''
d = ''
e = ''
f = ''
dstr = type_data.replace('fixdt(', '')
dstr = dstr.replace(')', '')
dlist = dstr.split(',')
for d in dlist:
format_list.append(d)
# .规则1,判断符号位
if format_list[] == '':
a = 'U'
baseType = 'unit'
else:
a = 'I'
baseType = 'int'
# 规则2,判断数据长度位
b = format_list[] if '.' in format_list[]:
c = len(format_list[].split('.')[])
temp =
d_count =
for i in format_list[].split('.')[]:
if i != '':
temp = d_count
d_count +=
d = format_list[].split('.')[][temp:]
else:
c = ''
d = format_list[]
# 规则3,判断小数点长度
if '-' in format_list[]:
e = 'N'
f = format_list[][:]
else:
e = 'P'
f = format_list[]
format_str = '%s%sS%s%s%s%s' % (a, b, c, d, e, f) # APP Data Type
Cases[item][].value = format_str
# Base Type
Cases[item][].value = baseType + b
# Compu Method flag
Cases[item][].value = int('')
# 精度
Cases[item][].value =format_list[]
# offset
Cases[item][].value = format_list[]
else:
print("请确认第%s个是否输入格式正确" % count)
count +=
runnable_data_list.append(runnable_data)
print(test_merge_list)
for key in test_merge_list:
sheet.merge_cells("B%s:B%s" % (key[], key[]),align) wb.save('EPA2_data.xlsx') def read_excel_type():
#读取excel的type列数据
raw_list = []
#获取数据类型这一列的数据
for cell in list(sheet.columns)[]:
raw_list.append(cell.value) return raw_list def format_data(data_list): #. 判断是否字典类型type
count =
for data in data_list:
if data in raw_type_dic:
data_list[count] = raw_type_dic[data]
# print("第%s个判断在字典数据类型里"%count)
# .判断是否是定点数数据类型
elif "fixdt" in data:
format_list = []
format_str = ''
a = ''
b = ''
c = ''
d = ''
e = ''
f = ''
dstr = data.replace('fixdt(', '')
dstr = dstr.replace(')', '')
dlist = dstr.split(',')
for d in dlist:
format_list.append(d)
#.规则1,判断符号位
if format_list[] == '':
a = 'U'
else:
a = 'I'
#规则2,判断数据长度位
b = format_list[]
if '.' in format_list[]:
c = len(format_list[].split('.')[])
temp =
d_count =
for i in format_list[].split('.')[]:
if i != '':
temp = d_count
d_count +=
d = format_list[].split('.')[][temp:]
else:
c = ''
d = format_list[]
#规则3,判断小数点长度
if '-' in format_list[]:
e = 'N'
f = format_list[][:]
else:
e = 'P'
f = format_list[] format_str = '%s%sS%s%s%s%s'%(a,b,c,d,e,f)
data_list[count] = format_str
else:
print("请确认第%s个是否输入格式正确" % count)
count +=
print(data_list)
#.其他数据类型,显示提示判断输入数据是否正确 # raw_data = read_excel_type()
# raw_data = raw_data[:]
# print(raw_data)
# format_data(raw_data) #合并单元格RUNNANBLE 第1列
# def read_excel_type():
# #读取excel的type列数据
# raw_list = []
# #获取数据类型这一列的数据
# print()
# for cell in list(sheet.columns)[]:
# print(cell.value)
#ws.merge_cells ("A1:C3") #合并单元格 # read_excel_type()
max_row = sheet.max_row
# print(max_row)
# for i in range(,):
# for j in range(,):
# a = sheet.cell(row = i, column = j)
# print(a.value)
#
# # sheet.merge_cells ("B2:B10")
# sheet.unmerge_cells ("B2:B10")
# wb.save('EPA2_data.xlsx')

openpyxl工具总结的更多相关文章

  1. 7、Python文件操作工具 openpyxl 工具 2

    创建一个工作簿 使用openpyxl没有必要先在系统中新建一个.xlsx,我们需要做的只需要引入Workbook这个类,接着开始调用它. >>> from openpyxl impo ...

  2. 6、Python文件操作工具 openpyxl 工具

    #-*- coding:utf-8 -* from  openpyxl.reader.excel  import  load_workbook import  MySQLdb import  time ...

  3. 用python读写excel的强大工具:openpyxl

    最近看到好几次群里有人问xlwt.wlrd的问题,怎么说呢,如果是office2007刚出来,大家用xlsx文件用不习惯,还可以理解,这都10年过去了喂,就算没有进化到office2016,还在用of ...

  4. 【转】用python读写excel的强大工具:openpyxl

    最近看到好几次群里有人问xlwt.wlrd的问题,怎么说呢,如果是office2007刚出来,大家用xlsx文件用不习惯,还可以理解,这都10年过去了喂,就算没有进化到office2016,还在用of ...

  5. Python excel 库:Openpyxl xlrd 对比 介绍

    打算用python做一个写mtk camera driver的自动化工具. 模板选用标准库里面string -> Template 即可 但要重定义替换字符,稍后说明 配置文件纠结几天:cfg, ...

  6. Python 和 R 数据分析/挖掘工具互查

    如果大家已经熟悉python和R的模块/包载入方式,那下面的表查找起来相对方便.python在下表中以模块.的方式引用,部分模块并非原生模块,请使用 pip install * 安装:同理,为了方便索 ...

  7. 记录——excel导出lua工具(python实现)

    项目需要一个从excel导出lua配置表的工具,之前的工具是主程写的,效率极差,i7 CPU 一次全部导出要花掉1个多小时.匪夷所思的是,这么渣的效率,居然用了整整一年.当 然,中途有人反映效率差,主 ...

  8. python3.6 +tkinter GUI编程 实现界面化的文本处理工具

    更新: 2017.07.17 补充滚动条.win批处理拉起py 2017.08.13 新增自定义图标 --------原创      blogs:    http://www.cnblogs.com/ ...

  9. 【转】Python 爬虫的工具列表【预】

    这个列表包含与网页抓取和数据处理的Python库 网络 通用 urllib -网络库(stdlib). requests -网络库. grab – 网络库(基于pycurl). pycurl – 网络 ...

随机推荐

  1. html布局(盒子)

    在body里面放置两个盒子,里面盒子设置margin-top,外层盒子生效?在里面盒子上面加一个块元素,设置高度 表单 form action="地址" method=" ...

  2. kd-tree题目总结

    在竞赛中,kd-tree一般只用于平面,很少有高于二维的情况. 在随机情况下,kd-tree的复杂度为O(NlogN),但会被极端数据卡到平方级别. 总而言之,就是优美的暴力. 查询时,通过估价函数进 ...

  3. 列举至少3种Support包中提供的布局或工具

    android.support.v7.widget.CardView 继承自FrameLayout并实现了圆角和阴影效果,常用于ListView或RecyclerView中Item布局的根节点 示例代 ...

  4. cin.get();cin.clear();cin.sync()

    先看代码: #include<iostream> using namespace std; int main(){ int c,x; cout<<"输入大小" ...

  5. C语言的#if #ifdef #ifndef

    #if #ifedf #ifndef   —般情况下,C语言源程序中的每一行代码.都要参加编译.但有时候出于对程序代码优化的考虑.希望只对其中一部分内容进行编译.此时就需要在程序中加上条件,让编译器只 ...

  6. 使用turtle画故宫(伍奇,侯俊豪小组)

    这个代码主要有两个部分,第一部分是画出故宫,第二部分是用random函数随机画心,故宫部分设置多个函数和循环再进行颜色填充即可完成. 此处为视频链接 from turtle import* impor ...

  7. 定义一个Map集合,key和value不规定类型,任意放入数据,用keySet()和 entrySet()两种方式遍历出Map集合的数据

    package com.lanxi.demo1_1_1; import java.util.HashMap; import java.util.Iterator; import java.util.M ...

  8. 基于uniGui开发的Delphi后台管理框架uniFramework

    uniGui是基于Delphi的一套开发Web应用的UI框架,前端使用的是ExtJS,最新版的uniGUI1.5 1480已支持新版的ExtJS6.5.3.我认为uniGUI是目前Delphi下最完善 ...

  9. 1023. Have Fun with Numbers (20)

    生词以及在文中意思 duplication 重复 permutation 排列 property 属性 import java.util.Scanner; public class Main { pu ...

  10. Intellij idea 2018的注册方式

    激活方式:License Server 第一步: 将地址 http://active.chinapyg.com/ 或者 http://idea.toocruel.net 任意一个复制到License ...