python初学各个模块汇集的小程序(涉及读取excel文件内容,写入word文档,路径、文件等相关切换、删除等,布局,label,entry,button,listbox,Scrollbar等)

python初学各个模块汇集的小程序以及出现问题后的debug

先上程序运行效果图:

这里写图片描述

代码涉及读取excel文件内容,写入word文档,路径、文件等相关切换、删除等,布局,label,entry,button,listbox,Scrollbar等。后面代码会一一讲解。

代码部分:

1.文档说明:

###################################
##Name:readFExecls_writeTWord.py
##Author:zhilong.sun
##Date:20180723-20180724
##Version:2.01
###################################

2.首先引入各类模块:

import xlrd                 #读execl模块
import os                   #操作文件、文件夹等的模块
import time                 #日期模块
import datetime             #时间模块
import tkinter as tk        #GUI模块
from tkinter import *       #GUI模块

from docx import Document   #读word文档模块
from docx.shared import Inches, Pt #读word文档模块
from docx.oxml.ns import qn #读word文档模块
from docx.enum.text import WD_ALIGN_PARAGRAPH   #读word文档模块

3.求描述:

 ###########################################
 ###需求:给局方提交的巡检报告需要从20多个execel中扣数据贴到word文档中,强烈需要一个代码,实现自动拾取数据,填充到word中
 ###########################################

4.定义获取日期的函数,使用时只需将参数n传入,代表距离当前日期多久前的日期是多少号,此函数的主要目的是为了解决日期与文件名匹配。因为我需要处理的excel文件名格式为‘app1_20180723.6.mon.xls’,然后将这个文件的内容,贴到word文档中,所以需要将文件名与文件内容匹配,写入字典中,才方便贴到word文档中:

##获取日期,返回值为datime类型,需要时,用str()转换
def getXterday(n): 
    today = datetime.date.today() 
    nday = datetime.timedelta(days=n) 
    Xterday = today-nday  
    return Xterday

5.此函数作用是将execl中的某个sheet中的一列的最大值取出,入参为获取的excel文件的标识,sheet名称,n为第几列:

##获取execl某一列中的最大值
def maxInList(fname,bk,sheetname,n):
    try:
     sh_used = bk.sheet_by_name(sheetname)
    except:
     print("no sheet in {%s} named {}".format(fname,sheetname))
    #获取行数
    usedrows = sh_used.nrows
    #获取列数
    usedcols = sh_used.ncols
    used_list = []
    for i in range(1,usedrows-2):
        value = sh_used.cell_value(i,n)
        used_list.append(value)
    max_used1 = max(used_list)           ########最大利用率
    return float('%0.1f'%max_used1)

6.此函数主要是为了获取某一行某一列的值。入参也是excel文件标识,sheet名称,n第几列,其中flag主要是解决需要返回多个列的问题。:

##获取execl中某一行中的某一列的值
def acquireFromList(fname,bk,sheetname,n,flag):
    try:
        sh_netsend = bk.sheet_by_name(sheetname)
    except:
        print("no sheet in {%s} named {}".format(fname,sheetname))
    #获取行数
    netsendrows = sh_netsend.nrows
    #获取列数
    netsendcols = sh_netsend.ncols

    max_net1 = sh_netsend.cell_value(netsendrows-n,1)

    if flag == 1:
        return float('%0.1f'%max_net1)
    else:
        max_net2 = sh_netsend.cell_value(netsendrows-n,flag)
        return float('%0.1f'%max_net1),float('%0.1f'%max_net2)

7.主要的函数来了,从excel中读取数据。可先看ls相关的额代码,这段代码主要是为了在界面上刷新代码日志。其中,ls是listbox的对象,ls.insert是为了在listbox中插入日志,ls.yview_moveto(1)是为了将listbox关联的下拉按钮送到listbox展示内容的最下一行,frame3是代码执行窗口的第三个框架,update()刷新,实时展示日志进度。:

<
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值