python-Excel读取-合并单元格读取(后续会补充python-Excel写入的部分)

1. python读取Excel单元格

代码包含读取Excel中数据,以及出现横向合并单元格,以及竖向合并单元格的内容。英文注释标注了函数的功能,后又补充了部分中文注释。

合并单元格的函数通用,可以直接复制拿走,传入的参数为Excel某sheet表中的数据。

两个列表合并为一个字典函数list_dic(list1,list2)也可以直接复制拿走,传入的参数为两个列表,list1准备作为key,list2准备作为value,key和value位置一一对应。

__author__ = 'sitong'
# !_*_coding:utf-8_*_
import xlrd
apply_dic = []
def get_excel():
with xlrd.open_workbook(r'D:\0325.xlsx') as workbook :
name_sheets = workbook.sheet_names() #获取Excel的sheet表列表,存储是sheet表名
for index in name_sheets: #for 循环读取每一个sheet表的内容
sheet_info = workbook.sheet_by_name(index) #根据表名获取表中的所有内容,sheet_info也是列表,列表中的值是每个单元格里值
first_line = sheet_info.row_values(0) #获取首行,我这里的首行是表头,我打算用表头作为字典的key,每一行数据对应表头的value,每一行组成一个字典
values_merge_cell = merge_cell(sheet_info) #这里是调用处理合并单元格的函数
for i in range(1, sheet_info.nrows): #开始为组成字典准备数据
other_line = sheet_info.row_values(i)
for key in values_merge_cell.keys():
if key[0] == i:
other_line[key[1]] = values_merge_cell[key]
#print(other_line)
dic = list_dic(first_line,other_line) #调用组合字典的函数,传入key和value,字典生成
apply_dic.append(dic)
return apply_dic def list_dic(list1,list2):
'''
two lists merge a dict,a list as key,other list as value
:param list1:key
:param list2:value
:return:dict
'''
dic = dict(map(lambda x,y:[x,y], list1,list2))
return dic def merge_cell(sheet_info):
'''
#handle Merge transverse cells and handle Merge Vertical Cells, assign empty cells,
:param rlow:row, include row exclusive of row_range
:param rhigh:row_range
:param clow:col, include col exclusive of col_range
:param chigh:col_range
:param sheet_info:object of sheet
:return:dic contain all of empty cells value
'''
merge = {}
merge_cells = sheet_info.merged_cells
for (rlow, rhigh, clow, chigh) in merge_cells:
value_mg_cell = sheet_info.cell_value(rlow, clow)
if rhigh-rlow == 1:
# Merge transverse cells
for n in range(chigh-clow-1):
merge[(rlow, clow+n+1)] = value_mg_cell
elif chigh-clow == 1:
# Merge Vertical Cells
for n in range(rhigh-rlow-1):
merge[(rlow+n+1, clow)] = value_mg_cell
return merge if __name__ == '__main__':
get_excel()

python-Excel读取-合并单元格读取的更多相关文章

  1. poi读取合并单元格

    poi读取合并单元格 学习了:http://blog.csdn.net/ycb1689/article/details/9764191 进行了列合并单元格的修正:原来是我自己找错了地方: import ...

  2. 使用npoi导入Excel - 带合并单元格--附代码

    之前我们在使用npoi导入excel表格的时候,往往会遇见那种带有合并单元格的数据在导入的时候出现合并为空的问题, 也就是只有第一条有数据,其余均为空白.在网上翻了半天也没有找到合适的解决方案,最后还 ...

  3. 用NPOI创建Excel、合并单元格、设置单元格样式、边框的方法

    本篇文章小编为大家介绍,用NPOI创建Excel.合并单元格.设置单元格样式.边框的方法.需要的朋友参考下 今天在做项目中,遇到使用代码生成具有一定样式的Excel,找了很多资料,最后终于解决了,Ex ...

  4. WPF 导出Excel(合并单元格)

    WPF 导出Excel(合并单元格) DataTable 导出Excel(导出想要的列,不想要的去掉) ,B1,B2,B3,B4,B5} MisroSoft.Office.Interop.Excel. ...

  5. .net读取Excel转datatable、.net读取的Excel存在合并单元格并且转成datatable

    项目中经常会遇到Excel导入数据,Excel的模板会可能是存在合并单元格的,模板如下图所示 读取时需要填充合并单元格的值,转成datatable单元格值时,填充合并单元格的值,如下图所示: 合并单元 ...

  6. C# 如何使用NPOI操作Excel以及读取合并单元格等

    C#操作Excel方法有很多,以前用的需要电脑安装office才能用,但因为版权问题公司不允许安装office.所以改用NPOI进行Excel操作,基本上一些简单的Excel操作都没有问题,读写合并单 ...

  7. 导出excel带合并单元格方法的Demo

    package com.test.util; import java.io.FileNotFoundException; import java.io.FileOutputStream; import ...

  8. POI导出复杂Excel,合并单元格(2)

    /** * 导出excel (HSSFWorkbook) */ @GetMapping("/testExport") public void testExport1(HttpSer ...

  9. POI导出复杂Excel,合并单元格(1)

    /** * 导出复杂excel 合并单元格 (HSSFWorkbook) */ @GetMapping("/testHSSFWorkbook.do") public void te ...

随机推荐

  1. Fiddler抓包【6】_Fiddler Script

    1.安装SyntaxView插件 使用Fiddler Script前需要安装SyntaxView插件: 方式1:Inspectors tab--->Get SyntaxView tab---&g ...

  2. Android Glide 加载图片

    0.借鉴文章地址:http://blog.csdn.net/zivensonice/article/details/51835802 和 http://www.cnblogs.com/zhaoyanj ...

  3. postergresql允许其它主机远程连接

    1.pg_hba.conf中添加listen_addresses = '*' #vim /usr/local/postgresql/data/pg_hba.conf #listen_addresses ...

  4. 比NGINX更快:nginx-1.15.5 vs mongols-1.2.3

    nginx是多进程web服务器的优秀代表. 本文要用mongols-1.2.3实现一个比nginx更快的多进程的web服务器. mongols是C++ 服务器基础设施库, 它的主要特性如下: tcp ...

  5. php中 "$$" 的详解

    php中 $$str 这种写法称为可变变量 有时候使用可变变量名是很方便的.就是说,一个变量的变量名可以动态的设置和使用.一个普通的变量通过声明来设置,例如: <?php $a = " ...

  6. php 版本升高后 会出现 之Deprecated: Function ereg_replace() is deprecated的解决方法

    这个问题是因为php版本过高. 在php5.3中,正则函数ereg_replace已经废弃,而dedecms还继续用.有两个方案可以解决以上问题: 1.把php版本换到v5.3下. 2.继续使用v5. ...

  7. 【融云分析】 IM 即时通讯之链路保活

    众所周知,IM 即时通讯是一项对即时性要求非常高的技术,而保障消息即时到达的首要条件就是链路存活.那么在复杂的网络环境和国内安卓手机被深度定制化的条件下,如何保障链路存活呢?本文详解了融云安卓端 SD ...

  8. Android Studio环境安装

    Android Studio下载 http://www.android-studio.org/ JDK下载 https://www.oracle.com/technetwork/java/index. ...

  9. flutter -webview 报错 err_cleartext_not_permitted

    文件 android\app\src\main\AndroidManifest.xml <manifest xmlns:android="http://schemas.android. ...

  10. mysql中利用show profile很直观的看到查询缓存的作用。

    1.首先,开启mysql的查询缓存. 查看查询缓存情况: MariaDB [test]> show variables like '%query_cache%';+--------------- ...