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的更多相关文章

随机推荐

  1. 利用requests, beautifulsoup包爬取股票信息网站

    这是第一次用requests, beautifulsoup实现爬虫,此次爬取的是一个股票信息网站:http://www.gupiaozhishi.net.cn. 实现非常简单,只是为了demo使用的数 ...

  2. mac OS nvm 常用命令

    nvm install stable ## 安装最新稳定版 node,当前是node v10.15.0 (npm v6.4.1) nvm install <version> ## 安装指定 ...

  3. Week-1 linux命令行重点整理

    ①仅对当前用户: ~/.bashrc ②对所有用户有效: /etc/bashrc screen命令:创建新screen会话screen –S [SESSION]加入screen会话screen –x ...

  4. 解决 Retrofit 多 BaseUrl 及运行时动态改变 BaseUrl ?

    原文地址: juejin.im/post/597856- 解决Retrofit多BaseUrl及运行时动态改变BaseUrl(一) 解决Retrofit多BaseUrl及运行时动态改变BaseUrl( ...

  5. 使用Xamarin开发即时通信系统 -- 基础篇(大量图文讲解 step by step,附源码下载)...

    如果是.NET开发人员,想学习手机应用开发(Android和iOS),Xamarin 无疑是最好的选择,编写一次,即可发布到Android和iOS平台,真是利器中的利器啊!而且,Xamarin已经被微 ...

  6. 信息竞赛进阶指南--递归法求中缀表达式的值,O(n^2)(模板)

    // 递归法求中缀表达式的值,O(n^2) int calc(int l, int r) { // 寻找未被任何括号包含的最后一个加减号 for (int i = r, j = 0; i >= ...

  7. YUM 安装lnmy

    yum -y install nginx systemctl start nginx.service yum -y install php php-fpm php-mysql php-gd libjp ...

  8. 题目分享I

    题意:2*n的地面,q次操作,每次操作将地面翻转,若该地是地面那翻转就成熔岩,如果是熔岩那翻转就成地面,熔岩人不能走,问人是否能从1,1走到2,n (ps:1,1和2,n不会在翻转的范围内,n,q≤1 ...

  9. gulp基本使用

    一.gulp是什么 gulp强调的是前端开发的工作流程,我们可以通过定义task事件定义事件的执行顺序,gulp去执行这些事件,构建整个前端开发的工作流程 gulp常见定义事件,例如: 变更静态资源 ...

  10. LeetCode--Array--Container With Most Water (Medium)

    11. Container With Most Water (Medium)# Given n non-negative integers a1, a2, ..., an , where each r ...