一、需求

1.第一列Sku数值相同的,合并A-E列,J-M列

2.M列设置行高完全显示内容

3.A1单元格内数字是SKU个数,合并单元格后数字更新

二、效果图

input入力文件处理前:

文件处理后 出力效果:

三、代码

1.合并单元格

         wb = openpyxl.load_workbook('123.xlsx')name_list = wb.sheetnamesfor sheetName in name_list:mergedRowCount = 0  dw_sheet = wb[sheetName]startDataRow = 3  # 出力レポートのデータは3行目から書き込みが開始されるneedGroupAndMergeColumnsIndex = [1]  # 出力レポートの最初の3列にはがマージ必要となるfor columnNumber in needGroupAndMergeColumnsIndex:#現在のセルの値currentValue = 0mergeValue = 0firstMergeRowNumber = 3#マージセルの個数addFlag = 0for rowNumber in range(startDataRow, dw_sheet.max_row+2):mergeValue = currentValuecurrentValue = dw_sheet.cell(row=rowNumber, column=columnNumber).valueif currentValue == mergeValue:addFlag += 1if addFlag == 1:firstMergeRowNumber = rowNumber - 1else:if addFlag == 0:firstMergeRowNumber = rowNumber                            mergedRowCount += 1 else:mergedRowCount += 1 dw_sheet.merge_cells(start_row=firstMergeRowNumber,end_row=rowNumber-1,start_column=columnNumber,end_column=columnNumber)dw_sheet.cell(row=firstMergeRowNumber,column= columnNumber).value = mergeValueif columnNumber == 1:
#                                  tempValueCol5 = 0
#  if sheetName == name_list[0]:tempValueCol5 = dw_sheet.cell(row=firstMergeRowNumber, column=5).valueelse:tempValueCol5 = dw_sheet.cell(row=firstMergeRowNumber, column=4).value * 0.8 - dw_sheet.cell(row=firstMergeRowNumber, column=4).value##セルをマージするdw_sheet.merge_cells(start_row=firstMergeRowNumber,end_row=rowNumber-1,start_column=5,end_column=5)dw_sheet.cell(row = firstMergeRowNumber,column= 5).value = tempValueCol5for merge_col in [2,3,4,9,10,11,12,13]:dw_sheet.merge_cells(start_row=firstMergeRowNumber,end_row=rowNumber-1,start_column=merge_col,end_column=merge_col)
#                                # セルのボーダーを描く
#                             if addFlag == 1:
#                                  for col in range(1,5):
#                                         dw_sheet.cell(row=firstMergeRowNumber+1,column=col).border=border
#                             else:
#                                 for row in range(firstMergeRowNumber+1,rowNumber):
#                                     for col in range(1,5):
#                                         dw_sheet.cell(row=row,column=col).border=border                       addFlag = 0    if columnNumber == 1:totalFormattedRowsCount = mergedRowCount - 1raw_dw_txt = dw_sheet.cell(row=1, column=1).valueraw_dw_cnt = '(' + str(totalFormattedRowsCount)dw_txt = raw_dw_txt + raw_dw_cntdw_sheet['A1'] = dw_txt# wb.save('./template.xlsx')wb.save('123.xlsx')wb.close()

2.设置行高

wb = openpyxl.load_workbook('123.xlsx')
excelname='123.xlsx'
up_sheet = wb.sheetnames[0]
dw_sheet = wb.sheetnames[1]
up =  wb[up_sheet]
dw =  wb[dw_sheet]
up_df =pd.read_excel(io=excelname,sheet_name=up_sheet)
dw_df =pd.read_excel(io=excelname,sheet_name=dw_sheet)
# up_df = pd.read_excel(excelname, sheet_name=up_sheet)
# dw_df = pd.read_excel('input.xlsx', sheet_name=dw_sheet)
up_cnt = 3
for row in up_df.iterrows():
#     comment = 'V' + str(up_cnt)comment = 'M' + str(up_cnt)#     up_sheet[comment]   = up_df.at[row[0], 'Unnamed: 21']
#     up_comment          = up_df.at[row[0], 'Unnamed: 21']up_comment          = up_df.at[row[0], 'Unnamed: 12']# 終わりの改行を削除します
#     up_comment = up_comment.strip("\n")
#     up_comment = up_comment.strip("\r")if isinstance(up_comment,float):up_comment = ''n_line_up_cnt = 0# 行の高さ設定   else:n_line_up_cnt = up_comment.count('\n')height_cnt = 1if up_comment.find('\n') > -1:height_cnt += n_line_up_cntup_sen_list = up_comment.split('\n')for up_sen in up_sen_list:# 42.5文字を1行と設定するup_sen_len = len(up_sen) // 42.5height_cnt += up_sen_lenup.row_dimensions[up_cnt].height = height_cnt * 19.2elif up_comment.find('[') > -1:# 42.5文字を1行と設定するup_sen_len = len(up_comment) // 42.5height_cnt += up_sen_lenup.row_dimensions[up_cnt].height = height_cnt * 19.2up_cnt += 1wb.save('123.xlsx')dw_cnt = 3for row in dw_df.iterrows():
#     comment =   'V' + str(dw_cnt)comment =   'M' + str(dw_cnt)
#     dw_sheet[comment]   = dw_df.at[row[0], 'COMMENT']
#     dw_comment          = dw_df.at[row[0], 'Unnamed: 21']dw_comment          = dw_df.at[row[0], 'Unnamed: 12']
# 終わりの改行を削除します
#     dw_comment = dw_comment.strip("\n")
#     dw_comment = dw_comment.strip("\r")if isinstance(dw_comment,float):dw_comment = ''n_line_dw_cnt = 0# 行の高さ設定   else:n_line_dw_cnt = dw_comment.count('\n')height_cnt = 1if dw_comment.find('\n') > -1:height_cnt += n_line_dw_cntdw_sen_list = dw_comment.split('\n')for dw_sen in dw_sen_list:# 42.5文字を1行と設定するdw_sen_len = len(dw_sen) // 42.5height_cnt += dw_sen_lendw.row_dimensions[dw_cnt].height = height_cnt * 19.2elif dw_comment.find('[') > -1:# 42.5文字を1行と設定するdw_sen_len = len(dw_comment) // 42.5height_cnt += dw_sen_lendw.row_dimensions[dw_cnt].height = height_cnt * 19.2dw_cnt += 1wb.save('123.xlsx')```

python指定一列为KEY 合并多列单元格 并设置单元格行高相关推荐

  1. excel html 列宽,POI精确设置Excel的行高和列宽

    EXCEL的行高度和列宽度单位是不一样的. 1,EXCEL列高度的单位是磅,Apache POI的行高度单位是缇(twip): 1英寸=72磅=25.4毫米=1440缇 1磅=0.353毫米=20缇 ...

  2. Laravel Excel实现Excel/CSV文件导入导出的功能详解(合并单元格,设置单元格样式)

    Laravel Excel实现Excel/CSV文件导入导出(合并单元格,设置单元格样式) 这篇文章主要给大家介绍了关于在Laravel中如何使用Laravel Excel实现Excel/CSV文件导 ...

  3. 如何设置QTableWideget和行高和列宽

    如何设置QTableWideget和行高和列宽 QTtableView或者QTableWidget的verticalHeader()->setDefaultSectionSize(15)可以设置 ...

  4. html设置表格行高和列宽,怎么在腾讯文档中设置表格的行高和列宽

    摘要 腾兴网为您分享:怎么在腾讯文档中设置表格的行高和列宽,云集,虚拟机,我的世界,卫星云图等软件知识,以及cad2009,kmp,mt4,usb转串口驱动,wifi吸粉,csgo动态组名,亿方云,单 ...

  5. matlab excel 单元居中,用matlab如何识别excel里的单元格是否为合并单元格|excel表格怎么调整行高和列宽...

    用matlab合并excel表格文件 没看明白 你换一种表述说说 matlab怎么合并excel单元格并赋值? 需要确切地说明一下:matlab导入默认是double型的,小数点后至以保留15位.你不 ...

  6. el-table合并一列中数据相同的单元格

    html相关代码 即普通的ElementUI的表格插件传入span-method方法: <el-table :data="tableData" border class=&q ...

  7. 前端使用xlsx、file-saver实现自定义excel格式导出(列宽、字体、边框、行高)

    前端使用xlsx.file-saver实现excel导出 前端使用xlsx.file-saver实现excel导出 1.下载依赖 2.在需要导出excel的页面使用依赖 3.实现导出excel文件功能 ...

  8. java excel行高_Java 设置Excel自适应行高、列宽

    在excel中,可通过设置自适应行高或列宽自动排版,是一种比较常用的快速调整表格整体布局的方法.设置自适应时,可考虑2种情况: 1.固定数据,设置行高.列宽自适应数据(常见的设置自适应方法) 2.固定 ...

  9. Java 设置Excel自适应行高、列宽

    在excel中,可通过设置自适应行高或列宽自动排版,是一种比较常用的快速调整表格整体布局的方法.设置自适应时,可考虑2种情况: 1.固定数据,设置行高.列宽自适应数据(常见的设置自适应方法) 2.固定 ...

最新文章

  1. 谈谈CNN中的位置和尺度问题
  2. HDU5762(暴力)
  3. Modelsim初级使用教程
  4. 解决启动mysql.exe闪退问题
  5. Py之cairocffi:cairocffi的简介、安装、使用方法之详细攻略
  6. python画统计图怎么在右上角表示哪条线代表什么_Python-matplotlib统计图之箱线图漫谈...
  7. linux图形环境小记
  8. python装饰器@深度加工(三分钟读懂)
  9. 十万大学生都已成为猿粉,你还在等什么?
  10. python爬虫什么意思-Python爬虫是什么意思有啥用 python爬虫原理实例介绍
  11. 转~ubuntu的一些常用软件
  12. 科来网络分析系统网络故障分析方法
  13. ai怎么调界面大小_ai软件界面字体特别小 ai菜单栏字体大小怎么改
  14. 大学计算机之软件设计程序框图,《程序框图、顺序结构》教学设计
  15. mysql用其他用户登录报错_mysql如何登录创建的用户
  16. win10系统 DNS服务器,Win10系统DNS服务器无响应
  17. 进阶阿里巴巴之路——招聘要求汇总
  18. index data
  19. 安卓病毒频发,做好手机安全防护很有必要
  20. java int Integer

热门文章

  1. [题解]CSP-分蛋糕(线性表)
  2. matlab遍历文件夹中的图片并保存在指定的文件夹中
  3. 小米7.0系统机器最简单激活XPOSED框架的教程
  4. 火花塞报警能用计算机消除,火花塞清洗后还能用吗
  5. 1155: 5202 二进制转化为十六进制
  6. 华为面经之我的同学是个死神
  7. 运算符和表达式【二】
  8. 如何快速查找清理电脑中的重复文件?这款软件即可轻松实现!
  9. 浅谈百香果的种植技术与管理
  10. 【性能调优】应用系统性能画像