import shutil
import os

from openpyxl import load_workbook
from xlutils.copy import copy
import win32com.client as win32
import xlrd

def copyfiles3p3k():
rootdir="F:\\数据备份20211108\\材料模版\\back\\1标准钢构\\3p3k\\"
sourcefile=rootdir+"\\aa.xls"
# listdir=os.listdir(rootdir)
for fileindex in range(24,41,2):
filename="3p3k"+str(fileindex)+"k.xls"
# print(filename)
file_full_name=rootdir+filename
print(file_full_name)
shutil.copyfile(sourcefile,file_full_name)

def copyfiles3p2k():
rootdir="F:\\数据备份20211108\\材料模版\\back\\1标准钢构\\3p2k\\"
sourcefile=rootdir+"\\aa.xls"
# listdir=os.listdir(rootdir)
for fileindex in range(4,41,2):
filename="3p2k"+str(fileindex)+"k.xls"
# print(filename)
file_full_name=rootdir+filename
print(file_full_name)
shutil.copyfile(sourcefile,file_full_name)

def copyfiles3p4k():
rootdir="F:\\数据备份20211108\\材料模版\\back\\1标准钢构\\3p4k\\"
sourcefile=rootdir+"\\aa.xls"
# listdir=os.listdir(rootdir)
for fileindex in range(24,41,2):
filename="3p4k"+str(fileindex)+"k.xls"
# print(filename)
file_full_name=rootdir+filename
print(file_full_name)
shutil.copyfile(sourcefile,file_full_name)

def copyfiles6p3k():
rootdir="F:\\数据备份20211108\\材料模版\\back\\1标准钢构\\6p3k\\"
sourcefile=rootdir+"\\aa.xls"
# listdir=os.listdir(rootdir)
for fileindex in range(24,41,2):
filename="6p3k"+str(fileindex)+"k双楼梯.xls"
# print(filename)
file_full_name=rootdir+filename
print(file_full_name)
shutil.copyfile(sourcefile,file_full_name)

def copyfiles6p4k():
rootdir="F:\\数据备份20211108\\材料模版\\back\\1标准钢构\\6p4k\\"
sourcefile=rootdir+"\\aa.xls"
# listdir=os.listdir(rootdir)
for fileindex in range(24,41,2):
filename="6p4k"+str(fileindex)+"k双楼梯.xls"
# print(filename)
file_full_name=rootdir+filename
print(file_full_name)
shutil.copyfile(sourcefile,file_full_name)

def read_and_modify_cell(rootdir,prefilename,sheetname,lastname,worksheet_read,rowcount):
# cell(行,列)所有单元格从0开始
wfn = int(worksheet_read.cell(6,4).value+1)
# print(wfn)#这个是得到板房K数
# 要写入的文件,找到表
path=rootdir+prefilename+str(wfn)+lastname
print(path)
rb = xlrd.open_workbook(path)
wb = copy(rb)
ws = wb.get_sheet(0)
for i in range(2, rowcount):
ws.write(i, 4, label=worksheet_read.cell(i, 4).value)
# for j in range(0, 5, 2):
# # print(str(worksheet_read.cell(i, j).value))
# ws.write(i, j, label=worksheet_read.cell(i, j).value)
wb.save(path)
# exit()

def modify_bbxls():
readfilename = 'F:\\数据备份20211108\\材料模版\\bb - 副本.xlsx'
savefilename='F:\\数据备份20211108\\材料模版\\bb - 副本.xls'
# 打开文件
workbook_read_write=load_workbook(readfilename)
# 得到要修改的表
worksheet_read_write=workbook_read_write.get_sheet_by_name('计算')
# 修改单元格
for fileindex in range(4, 41, 2):
# print(fileindex)
worksheet_read_write['b3']=str(fileindex)
# 写入模板单元格
workbook_read_write.save(readfilename)
# 把要读取的xlsx改成xls
if(os.path.isfile(savefilename)):
os.remove(savefilename)
excel=win32.gencache.EnsureDispatch('excel.application')
pro=excel.Workbooks.Open(readfilename)
pro.SaveAs(savefilename,FileFormat=56)
pro.Close(True)
excel.Application.Quit()
# 得到板房模板
sheetname=''
sheettype='3p2k'
rootdir="F:\\数据备份20211108\\材料模版\\back\\1标准钢构\\3p2k\\"
lastname='k.xls'
rowcount=0
if sheettype=='3p2k':
rowcount=27
sheetname='单层3k材料';
elif sheettype == '3p3k':
rowcount = 27
sheetname = '单层4k材料';
elif sheettype=='3p4k':
rowcount=28
sheetname = '单层4k材料';
elif sheettype=='6p3k':
rowcount=43
sheetname = '双层3k材料';
elif sheettype=='6p4k':
rowcount=44
sheetname = '双层4k材料';

worksheet_read=xlrd.open_workbook(savefilename).sheet_by_name(sheetname)
read_and_modify_cell(rootdir,sheettype,sheetname,lastname,worksheet_read,rowcount)

if __name__ == '__main__':
print('PyCharm')
modify_bbxls()
# copyfiles3p4k()
# copyfiles6p3k()
# copyfiles6p4k()
# copyfiles3p3k()
# copyfiles3p2k()

pyhon对excel的xls与xlsx的读取,写入的更多相关文章

  1. Java 解析Excel(xls、xlsx两种格式)

    Java 解析Excel(xls.xlsx两种格式) 一.环境 JDK 1.8 二.JAR 1.commons-collections4-4.1.jar 2.poi-3.9-20121203.jar ...

  2. 如何使用Java创建Excel(.xls 和 .xlsx)文件 并写入数据

    1,需要依赖的jar包, <!-- POI(operate excel) start --> <!-- the version of the following POI packag ...

  3. POI操作Excel(xls、xlsx)

    阿帕奇官网:http://poi.apache.org/ POI3.17下载:http://poi.apache.org/download.html#POI-3.17 POI操作Excel教程(易百教 ...

  4. Android EXCEL 解析 xls 和 xlsx,方法其实很简单

    前言 Excel 解析,一般来说是在服务端进行的,但是如果移动端要实现解析Excel的功能,那也是有实现的方法的. 不过由于Android 原生用Java/Kotlin实现,所以也可以参考服务端解析E ...

  5. python处理excel文件(xls和xlsx)

    一.xlrd和xlwt 使用之前需要先安装,windows上如果直接在cmd中运行python则需要先执行pip3 install xlrd和pip3 install xlwt,如果使用pycharm ...

  6. php导出excel(xls或xlsx)

    $titles = array('订单号','商品结算码','合同号','供应商名称','专柜','商品名称','商品货号','商品单价','商品总价','供应商结算金额','商品数量','商品促销优 ...

  7. php导出excel(xls或xlsx)(解决长数字显示问题)

    1)demo $titles = array('订单号','商品结算码','合同号','供应商名称','专柜','商品名称','商品货号','商品单价','商品总价','供应商结算金额','商品数量' ...

  8. SpringBoot基于EasyExcel解析Excel实现文件导出导入、读取写入

    1. 简介   Java解析.生成Excel比较有名的框架有Apache poi.jxl.但他们都存在一个严重的问题就是非常的耗内存,poi有一套SAX模式的API可以一定程度的解决一些内存溢出的问题 ...

  9. java解析Excel(xls、xlsx两种格式)

    https://www.cnblogs.com/hhhshct/p/7255915.html ***************************************************** ...

随机推荐

  1. springboot-数据库访问之jpa

    什么是springDate? springData的作用: 整体简化的架构: JPA :Java Persistence API 如果没有springData 我们需要去学每一种对应的jpa实现, 有 ...

  2. 什么是持续集成(CI)?

    持续集成(CI)是每次团队成员提交版本控制更改时自动构建和测试代码的过程. 这鼓励开发人员通过在每个小任务完成后将更改合并到共享版本控制存储库来共 享代码和单元测试.

  3. kali Linux 渗透测试 | ARP 欺骗

    目录 ARP 欺骗及其原理 ARP 欺骗实施步骤 必备工具安装 nmap 工具 dsniff 工具 driftnet 工具 ettercap 工具 ARP 欺骗测试 ARP 断网攻击 ARP 欺骗(不 ...

  4. TL431常用电路整理

    熟悉电路制作的人大多对TL431并不陌生.由于TL431的动态抗阻的特性,其经常在电路设计当中被用于替代稳压二极管.不仅如此,TL431的开态响应速度快输出噪音低,并且价格低廉.因此受到电源工程师和初 ...

  5. 一个用于学习的react项目

    React-element 根据开源项目 vue-sell进行的开发,将其改造成了react的项目.在开始学习vue的时候就是用的这个项目,发现效果不错,所以在学习React也使用了此项目. 目的:将 ...

  6. Chrome 53 Beta一些有意思的改动

    原文链接: http://blog.chromium.org/2016...译者:Icarus邮箱:xdlrt0111@163.com 如果没有特殊说明的话,以下都是应用在Android,Chrome ...

  7. canvas 实现 github404动态效果

    使用canvas来完成github404的动态效果 前几天使用css样式和js致敬了一下github404的类似界面,同时最近又接触了canvas,本着瞎折腾的想法,便借着之前的js的算法,使用can ...

  8. 活字格发布新版本,插件公开,引领Web开发新潮流

    日前,活字格Web 应用生成平台发布V4.0版本,首次公开插件机制,强大的扩展性和系统集成能力,引起业内瞩目. 活字格是由西安葡萄城自主研发的 Web 应用生成平台,提供易用的类Excel可视化设计器 ...

  9. ES6-11学习笔记--对象的扩展

    属性简洁表示法 属性名表达式 Objec.is() 扩展运算符 与 Object.assign() in 对象的遍历方式   属性简洁表示法: 如果属性key跟变量名一样,可简写 let name = ...

  10. CCF201512-2消除类游戏

    问题描述 消除类游戏是深受大众欢迎的一种游戏,游戏在一个包含有n行m列的游戏棋盘上进行,棋盘的每一行每一列的方格上放着一个有颜色的棋子,当一行或一列上有连续三个或更多的相同颜色的棋子时,这些棋子都被消 ...