python_Excel_xlwt
xlwt
创建excel,向excel写入数据,并保存数据
安装
推荐方法:
通过pip 安装,方便简洁,如下图所示:
导入
import xlrd
创建workbook(即excel)
book = Workbook(encoding='utf-8')#create a workbook
创建sheet
sheet = book.add_sheet('Sheet1')#create a sheet
设置样式
#set style
font = xlwt.Font() # 字体
font.name = 'Times New Roman'
font.bold = True
font.underline = False
font.italic = False
style = xlwt.XFStyle() # 创建一个格式
style.font = font # 设置格式字体
往单元格写入
sheet.write(0, 0, "no",style)#第1行,第1列
sheet.write(0, 1, "file_name",style)#第1行,第2列
sheet.write(0, 2, "file_version",style)#第1行,第3列
保存
book.save(save_path)
#coding=utf-8
'''
Created on 2018年11月12日 @author: yanerfree get the version number of the file (.dll/.exe) in bulk
批量获取文件版本号,适合量少的,因为是单线程
'''
import os
import sys
import win32api
import xlwt
from xlwt import *
import time
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
from PyQt5.QtCore import * #测试调试输出开关,正式发布需调整为False
mytest = True
mytest = False class GetFileVersionNo(QWidget):
def __init__(self):
super().__init__()
self.setupUi()
self.myList = []#save result
self.status = 0#记录目前是否在获取版本状态下 def setupUi(self): glayout = QGridLayout()
glayout.setSpacing(10)
self.button1 = QPushButton("需要获取版本号的文件路径")
self.button1.clicked.connect(self.open_dir)
self.button2 = QPushButton("选择文件保存位置")
self.button2.clicked.connect(self.save_file_dialog)
self.lineEdit1 = QLineEdit()
self.lineEdit2 = QLineEdit()
self.button3 = QPushButton("获取版本号")
#self.button3.setCheckable(True)
self.button3.clicked.connect(self.getVer)
self.textEdit1 = QTextEdit() self.label1 = QLabel(" 选择文件类型:")
self.combobox1 = QComboBox()
self.combobox1.addItem("exe")
self.combobox1.addItem("dll")
self.combobox1.currentTextChanged.connect(self.textEdit1.clear)
glayout.addWidget(self.button1,1,1)
glayout.addWidget(self.button2,2,1)
glayout.addWidget(self.label1,3,1)
glayout.addWidget(self.combobox1,3,2)
glayout.addWidget(self.button3,4,1)
glayout.addWidget(self.lineEdit1,1,2,1,2)
glayout.addWidget(self.lineEdit2,2,2,1,2)
glayout.addWidget(self.textEdit1,4,2,10,2) self.setGeometry(20,50,500,450)
self.setWindowTitle("GetFileVersionNo")#设置窗体标题 self.setLayout(glayout) def getVer(self):
if self.status == 0:
self.textEdit1.clear()
self.status = 1#状态设置为1,获取版本中
self.changestatus()
file_path = self.lineEdit1.text()
if not os.path.exists(file_path):
self.showMsg("warning","请选择正确的路径")
return save_path = self.lineEdit2.text()
if save_path == "":
self.showMsg("warning","请选择结果保存路径")
return
tmp1 = str(save_path).split("/")[-1]
#print("tmp:",tmp1)
tmp2 = str(save_path).split(tmp1)[0]
#print("tmp:",tmp2)
if not os.path.exists(tmp2):
self.showMsg("warning","请选择正确的保存路径")
return self.writeToExcel(file_path,save_path)
self.status = 0
self.changestatus()
else:
self.showMsg("warning", "正在获取版本号,请等待...") def changestatus(self):
if self.status == 0:
self.myList=[]
self.button1.setEnabled(True)
self.button2.setEnabled(True)
self.button3.setEnabled(True) else:
self.button1.setEnabled(False)
self.button2.setEnabled(False)
self.button3.setEnabled(False) def open_dir(self):
dir_path=QFileDialog.getExistingDirectory(self,"choose directory",r"C:\\")
if not os.path.exists(dir_path):
return -1
#dir_path = self.dir_path.replace('/','\\')#windows下需要进行文件分隔符转换 #将获取的路径写入lineedit中
self.lineEdit1.setText(dir_path)
return (dir_path) def save_file_dialog(self):
save_fileName, ok2 = QFileDialog.getSaveFileName(self,
"文件保存",
r"C:\\",
"Text Files (*.xls);;All Files (*)")
#print("save_fileName,ok2:",save_fileName,ok2)
#将获取的路径写入lineedit中
self.lineEdit2.setText(save_fileName) return(save_fileName) def showMsg(self,t,msg):
if(t=="warning"):
QMessageBox.information(self,"warning",msg,QMessageBox.Yes,QMessageBox.Yes)
self.status = 0#状态设置为1,获取版本中
self.changestatus() def traverse_dir(self,file_path):
#traverse the directory of file_path(the file are .dll)
#myList=[]#save result,如果该函数递归调用,则不能在此处保存结果,
#否则每次递归都会清楚之前保存的数据
try:
filelist = os.listdir(file_path)
for i in range(0,len(filelist)):
print(i,filelist[i])
tmp_path = os.path.join(file_path,filelist[i])
tmp_path = tmp_path.replace('/','\\')#windows下需要进行文件分隔符转换
print("tmp_path:",tmp_path)
if os.path.isfile(tmp_path):
#if str(list[i]).split(".")[1] =="dll":
#if str(filelist[i])[-3:] == "exe":
print("self.combobox1.currentText():",self.combobox1.currentText())
#print("str(filelist[i])[-3:]:",str(filelist[i])[-3:])
if str(filelist[i])[-3:] == self.combobox1.currentText():
#judge if the filename ended with ".dll"
#print tmp_path,getFileVersion(tmp_path)
print ("add to mylis",(filelist[i],self.getFileVersion(tmp_path)))
self.myList.append((filelist[i],self.getFileVersion(tmp_path))) #将内容更新到textedit中去
content = ""
for item in self.myList:
content = content + "%s %s\r\n"%(item[0],item[1])
self.textEdit1.setText(content)
else:
self.traverse_dir(tmp_path)
except:
self.showMsg("warning","未知错误")
self.myList = [] return self.myList def getFileVersion(self,file_name):
#get the version of file
try:
info = win32api.GetFileVersionInfo(file_name, os.sep)
ms = info['FileVersionMS']
ls = info['FileVersionLS']
version = '%d.%d.%d.%04d' % (win32api.HIWORD(ms), win32api.LOWORD(ms), win32api.HIWORD(ls), win32api.LOWORD(ls))
print("version:",version)
except:
version = " " return version def writeToExcel(self,file_path,save_path):
#file_path = self.file_path
#save_path = self.save_path
#write to excel
print("create a workbook")
book = Workbook(encoding='utf-8')#create a workbook
sheet = book.add_sheet('Sheet1')#create a sheet
#set style
font = xlwt.Font() # 字体
font.name = 'Times New Roman'
font.bold = True
font.underline = False
font.italic = False
style = xlwt.XFStyle() # 创建一个格式
style.font = font # 设置格式字体 #sheet.write(0, 0, label = 'Formatted value', style) # Apply the Style to the Cell
sheet.write(0, 0, "no",style)
sheet.write(0, 1, "file_name",style)
sheet.write(0, 2, "file_version",style)
list = self.traverse_dir(file_path) row=0
num=0
for item in list:
row += 1
num += 1
print(item[0] ,item[1])
sheet.write(row, 0, num, style)
sheet.write(row, 1,item[0] , style)
sheet.write(row, 2,item[1] , style) book.save(save_path) if __name__ == '__main__':
app = QApplication(sys.argv)
demo = GetFileVersionNo()
demo.show()
sys.exit(app.exec_())
python_Excel_xlwt的更多相关文章
随机推荐
- 与IBM的Lin Sun关于Istio 1.0和微服务的问答
北京时间 7 月 31 日,Istio 正式发布了 1.0 版本,并表示已经可用于生产环境.该版本的主要新特性包括跨集群 mesh 支持.细粒度流量控制以及在一个 mesh 中增量推出 mutual ...
- 关于通过Date.getTime()得到1970年01月1日0点零分问题验证
public static String getTimestamp_1970() throws Exception { java.text.SimpleDateFormat formater = ...
- 2019.06.18训练日记(赞FLS)
之前打了几场比赛,有很多题没做出来,这些题无论是知识点不会,还是说在当时时间和思路的影响下没有做出来,这都应该做出来,至少现在必须做出来,本来打算专心复习,分数高了,好保研,但是想了想如果局限于只把学 ...
- BSGS 和扩展
BSGS BSGS,全称叫 BabyStepGiantStep,也就是大步小步 其实还是比较暴力的 它可以\(O(\sqrt p)\)的复杂度内解出: \[a^x\equiv n\pmod p,\gc ...
- Java笔记(day14-17)
集合类的由来: 对象用于封装特有数据,对象多了需要存储,如果对象的个数不确定. 就使用集合容器进行存储. 集合特点: 1,用于存储对象的容器. 2,集合的长度是可变的. 3,集合中不可以存储基本数据类 ...
- 无回显命令执行TIPS
DNSlog 出属于, POST DATA HEX 等一些 命令延迟注入 找WEB PATH 将id,pwd,hostname的结果写在js/test1.txt中,命令find . -type ...
- React 导入组件前段浏览器报错 “Cannot read property 'Component' of undefined”
问题出在这个花括号上,当你写{React}的时候,他只会导入React,并不会导入下面你要用到的Component组件, 所以,将括号去掉就可以了. 别忘记保存.
- Openwrt:mtd/mtd_write烧写固件
文章目录 1 查看当前系统分区信息 2 备份固件firmware 3 恢复固件firmware 4 备份恢复Openwrt路由器配置 5 恢复Openwrt路由器默认设置 6 刷新路由器固件 比较简单 ...
- 设计模式之GOF23原型模式02
利用序列化和反序列化完成深复制 ByteArrayOutputStream bos=new ByteArrayOutputStream(); ObjectOutputStream oos=new O ...
- [zoj3623]背包模型
给定n种物品,每种物品需要ti时间生产出来,生产出来以后,每单位时间可以创造wi个价值.如果需要创造至少W个价值,求最少时间. 思路:dp[j]表示用时间j所能创造的最大价值,则有转移方程:dp[j ...