通过无能的baidu逛了一圈,发现有两三段能用的代码,不过参考之下,发现还有不足的:

不能拷贝有合并格式的sheet、没有拷贝cell的相关格式(填充、边框、对齐)等参数

所以通过bing继续发掘,最终合成以下代码:

def replace_xls(src_file,tag_file,sheet_name):

#        src_file是源xlsx文件,tag_file是目标xlsx文件,sheet_name是目标xlsx里的新sheet名称

	print("Start sheet %s copy from %s to %s"%(sheet_name,src_file,tag_file))
wb = load_workbook(src_file)
wb2 = load_workbook(tag_file) ws = wb.get_sheet_by_name(wb.get_sheet_names()[0])
ws2 = wb2.create_sheet(sheet_name.decode('utf-8')) max_row=ws.max_row #最大行数
max_column=ws.max_column #最大列数 wm=zip(ws.merged_cells) #开始处理合并单元格
if len(wm)>0 :
for i in range(0,len(wm)):
cell2=str(wm[i]).replace('(<MergeCell ','').replace('>,)','')
print("MergeCell : %s" % cell2)
ws2.merge_cells(cell2) for m in range(1,max_row + 1):
ws2.row_dimensions[m].height = ws.row_dimensions[m].height
for n in range(1,1 + max_column):
if n<27 :
c=chr(n+64).upper() #ASCII字符,chr(65)='A'
else:
if n < 677 :
c=chr(divmod(n,26)[0]+64)+chr(divmod(n,26)[1]+64)
else:
c=chr(divmod(n,676)[0]+64) + chr(divmod(divmod(n,676)[1],26)[0]+64) + chr(divmod(divmod(n,676)[1],26)[1]+64)
i='%s%d'%(c,m) #单元格编号
if m == 1 :
# print("Modify column %s width from %d to %d" % (n, ws2.column_dimensions[c].width ,ws.column_dimensions[c].width))
ws2.column_dimensions[c].width = ws.column_dimensions[c].width
try:
getattr(ws.cell(row=m, column=c), "value" )
cell1=ws[i] #获取data单元格数据
ws2[i].value=cell1.value #赋值到ws2单元格
if cell1.has_style: #拷贝格式
ws2[i].font = copy(cell1.font)
ws2[i].border = copy(cell1.border)
ws2[i].fill = copy(cell1.fill)
ws2[i].number_format = copy(cell1.number_format)
ws2[i].protection = copy(cell1.protection)
ws2[i].alignment = copy(cell1.alignment)
except AttributeError as e:
print("cell(%s) is %s" % (i,e))
continue wb2.save(tag_file) wb2.close()
wb.close()

使用openpyxl复制整张sheet的更多相关文章

  1. Python学习笔记_使用openpyxl操作Excel,在同一个文件里复制某一个sheet

    应用场景:定制一个Excel模板文件,其中定义了一个模板Sheet,以此模板文件里的模板sheet为样例,制作报表,里面有不止一个模板样例Sheet 一.软件环境: 1.OS:Win10 64位 2. ...

  2. Azure SQL Database (21) 将整张表都迁移到Azure Stretch Database里

    <Windows Azure Platform 系列文章目录>  Azure SQL Database (19) Stretch Database 概览      Azure SQL Da ...

  3. 使用sql语句复制一张表

    如何使用sql语句复制一张表? 方法一:第一步:先建一张新表,新表的结构与老表相等. create table newbiao like chengjibiao(老表名); 第二步:将老表中的值复制到 ...

  4. chrome也可以整张网页截图,保存完整网页为图片

    转自:http://www.webkaka.com/blog/archives/chrome-save-a-webpage.html 关于浏览器截图,一直以为Chrome无能为力,最近发现,原来Chr ...

  5. 如何用sql语句复制一张表

    如何用sql语句复制一张表 1.复制表结构及数据到新表 CREATE TABLE 新表 SELECT * FROM 旧表 这种方法会将oldtable中所有的内容都拷贝过来,当然我们可以用delete ...

  6. Mysql InnoDB行锁不使用索引锁表的时候会锁整张表

    原文:http://www.thinkphp.cn/topic/41577.html 如果使用针对InnoDB的表使用行锁,被锁定字段不是主键,也没有针对它建立索引的话.行锁锁定的也是整张表.锁整张表 ...

  7. 树莓派根分区扩展至整张sd卡

    第一步,安装raspi-config sudo apt-get install raspi-config 第二步,运行raspi-config sudo raspi-config 界面选择,Expan ...

  8. (转) 【oracle调优】优化全表扫---cache整张表或索引

    情景分析: 1)某查询必须要走全表扫描 2)该查询执行的频率相当高 3)对执行时间的要求也相当苛刻的话 4)数据库的IO比较吃紧 5)数据库的内存比较宽松 6)该表的大小没有大到离谱 以上情况下,可以 ...

  9. Django项目:CRM(客户关系管理系统)--41--33PerfectCRM实现King_admin编辑整张表限制

    readonly_table=False#默认表单不锁定 readonly_table=True#默认表单不锁定 # forms.py # ————————19PerfectCRM实现King_adm ...

随机推荐

  1. linux下(Window当然也可以)解决idea创建maven项目导入过慢问题

    1.正常创建maven web项目 2.见下图,选择加号 3.弹出的框中填入archetypeCatalog----internal,确定即可

  2. 安装单机CHD5.12报错解决(补充)

    一.oozie启动失败 (1) 拷贝mysql的驱动文件. 一个是需要把java的mysql的驱动jar文件拷贝到oozie的lib目录中 /opt/cloudera/parcels/CDH-5.12 ...

  3. css自定义checkbox和radio样式

    很常见的问题,也有许多人写过类似的文章,自己写来记录下 css代码如下: #myCheck + label,.myRadio + label{ width:16px; height:16px; bor ...

  4. Inotify机制的简单应用

    编程之路刚刚开始,错误难免,希望大家能够指出. 一.Inotify机制 1.简单介绍inotify:Inotify可用于检测单个文件,也可以检测整个目录.当检测的对象是一个目录的时候,目录本身和目录里 ...

  5. 策略模式(Strategy )

    为实现一个目的采用不同的方式都可实现,具体看要采取哪种方式. //接口 public interface Strategy {    public void algorithmInterface(); ...

  6. liunx学习笔记(一:常用命令)

    linux: 在学习linux之前我们应该多少了解windows的一些相关操作,linux也就是类似windows的另一种操作系统,用来管理软硬件的一种应用.在windows下你可以通过鼠标点击相关的 ...

  7. Day 11 函数对象,函数嵌套,作用域,闭包

    函数总结 # 函数的定义:def func(a, b):    print(a, b)    return a + b​​# 函数四个组成部分# 函数名:调用函数的依据,必须的# 函数体:执行函数逻辑 ...

  8. Zookeeper的下载、安装和启动

    一.下载Zookeeper 版本 zookeeper-3.4.13 下载地址:https://archive.apache.org/dist/zookeeper/ 解压后放在/usr/local/zo ...

  9. Windows下将文件打包压缩成 .tar.gz格式

    1.下载 “7-ZIP”,安装完成后进入需要打包的文件夹 2. 右击选择“添加到压缩包” 3.压缩格式:tar 4. 得到.tar文件,将其打包 5. 压缩格式为:gzip 6. 得到tar.gz格式 ...

  10. C语言数组指针

    C语言中的数组指针与指针数组: ·数组指针一.区分 首先我们需要了解什么是数组指针以及什么是指针数组,如下: int *p[5];int (*p)[5];数组指针的意思即为通过指针引用数组,p先和*结 ...