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的更多相关文章
随机推荐
- 【JAVA基础】06 面向对象
1. 面向对象思想概述 面向过程思想概述 第一步 第二步 面向对象思想概述 找对象(第一步,第二步) 举例 买煎饼果子 洗衣服 面向对象思想特点 是一种更符合我们思想习惯的思想 可以将复杂的事情简单化 ...
- Python3 字符串格式化(%操作符)
格式符 格式符为真实值预留位置,并控制显示的格式.格式符可以包含有一个类型码,用以控制显示的类型,如下: %s 字符串 (采用str()的显示) %r 字符串 (采用repr()的显示) ...
- 【DNS域名解析命令】 nslookup
1. nslookup作用 nslookup用于查询DNS的记录,查询域名解析是否正常,在网络故障时用来诊断网络问题 nslookup - query Internet name servers in ...
- 【Linux常见命令】sort命令
sort - sort lines of text files sort命令用于将文本文件内容加以排序. sort可针对文本文件的内容,以行为单位来排序. 语法: sort [OPTION]... [ ...
- 安装并使用pyecharts库
在cmd命令行中输入安装命令, pyecharts库的安装命令如下: pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyecharts ...
- spark系列-7、spark调优
官网说明:http://spark.apache.org/docs/2.1.1/tuning.html#data-serialization 一.JVM调优 1.1.Java虚拟机垃圾回收调优的背景 ...
- django源码解读——runserver分析
开始之前建议先参考一下这篇文章:https://blog.csdn.net/qq_33339479/article/details/78862156class Command(BaseCommand) ...
- 在Vue中使用iview的Select控件实现一个多级选项列表
前言 今天项目要实现一个多级选项列表,发现iview官网上没有写这个例子,于是自己就实现了,如果对你有帮助请点个赞 ‘ * ’!! 解决方法:下面我们就来使用V-for 来定义一个二级选项列表 ,代码 ...
- SpringBoot:模板引擎 thymeleaf、ContentNegotiatingViewResolver、格式化转换器
目录 模板引擎 thymeleaf ContentNegotiatingViewResolver 格式化转换器 模板引擎 thymeleaf.ContentNegotiatingViewResolve ...
- spring boot项目中无法访问resources文件夹问题
如图,浏览器默认访问static文件下的内容,无法访问templates文件下的html文件. 解决方法: 在application.properties文件中添加静态资源目录的配置即可.