吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2206|回复: 14
收起左侧

[Python 原创] [原创]解决人员名单横向排序程序

[复制链接]
basfan 发表于 2022-5-9 13:15
有朋友要网上发公示人员名单,需要按姓氏笔画排序,排序好后,在word文档中一行N个,横向排版,因为人员名单数量太大,手工设置太麻烦,我写了个小程序帮助解决排版问题。
PS:
1、程序中的人名均瞎写,需要排序名单自己填就行了。
2、如果感觉还凑合,给点个免费评分呗,谢谢大家!
程序功能:从data.txt中读取姓名并按指定列数横向输出到result.docx文档中
思路:姓氏笔画排序用excel就可以做到,将excel排序好的人名导出到data.txt我写了一个程序帮助排版。
环境:使用python版本是3.9,无需安装任何依赖库(都是默认安装好的库)

[Python] 纯文本查看 复制代码
import win32com
from win32com.client import Dispatch, constants
import os

def getdata():
    if os.path.isfile(r'data.txt'):
        file = open("data.txt",'r',encoding='utf-8')
        text=file.readline()
        data=text.split(',')
        file.close()
        return data
    else:
        print('数据文件不存在,程序被迫终止执行!')
        print('请将数据文件存放在本程序的data.txt文件中,并以英文状态下“,”分割')
        quit()
    
def saveword(text):
    myRange = doc.Range()
    myRange.Style.Font.Name='宋体'
    myRange.Style.Font.Size=14  #10.5对应五号字,12对应小四号字,14四号字
    myRange.InsertAfter(text)

if __name__ == '__main__':

    data=getdata()
    nums=int(input('请输入每行显示姓名个数:'))
    spacer=input('请输入姓名之间的间隔符(回车默认是空格):')

    word = Dispatch('Word.Application')
    word.Visible = 0  # 0:后台运行 1:前台运行(可见)
    word.DisplayAlerts = 0  # 不显示,不警告

    if os.path.isfile(r'result.docx'):
        doc = word.Documents.Open(os.getcwd() + "\\result.docx")
    else:
        doc = word.Documents.Add()
        doc.SaveAs(os.getcwd() + "\\result.docx")

    if spacer == '':
        spacer=' '    

    for i in range(int(len(data)/nums)):
        for j in range(nums):        
            if(i*nums+j)<len(data):
                saveword(data[i*nums+j]+spacer)
        saveword('\r')

    for k in range((int(len(data)/nums)*nums),int(len(data)),1):
        saveword(data[k]+spacer)

    doc.Save()
    doc.Close()
    word.Quit()

    os.startfile(r'result.docx')


写好代码直接下载:
解决人员名单横向排版问题.rar (1.23 KB, 下载次数: 36)



免费评分

参与人数 4吾爱币 +9 热心值 +4 收起 理由
wangshaobo930 + 1 + 1 我很赞同!
苏紫方璇 + 5 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
he58394835 + 2 + 1 我很赞同!
Terrorist + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

秋风君 发表于 2022-5-9 13:36
没下载Python,我还是习惯用excel的分列+转置来操作
 楼主| basfan 发表于 2022-5-21 15:04
wycdd 发表于 2022-5-10 12:11
我也是这样操作

因为数据从文本文档中读取,结果也是生成word文档,程序的输入输出问题都解决了,所以,可以将python程序打包成exe,只要给个txt文本文档的输入,他就会产生Word文档的输出,也会很方便
mymhcb 发表于 2022-5-9 13:28
这个太实用了 Thanks&#9834;(&#65381;ω&#65381;)&#65417;分享
 楼主| basfan 发表于 2022-5-9 13:50
秋风君 发表于 2022-5-9 13:36
没下载Python,我还是习惯用excel的分列+转置来操作

转置无法解决每行显示人名的数量,尤其是数量特别大(8000左右)的时候
程序可以自定义每行显示多少人名,可以试运行下
 楼主| basfan 发表于 2022-5-9 13:51
mymhcb 发表于 2022-5-9 13:28
这个太实用了 Thanks&#9834;(&#65381;ω&#65381;)&#65417;分享

谢谢,有免费评分给一个呗,谢谢!
taxuewuhen 发表于 2022-5-9 14:18
谢谢分享
he58394835 发表于 2022-5-9 14:48
赞一个,下载试用
zhxhwyzh14 发表于 2022-5-9 16:08
谢谢分享,很实用
戰龍在野 发表于 2022-5-9 17:37
多谢分享好资源
wycdd 发表于 2022-5-10 12:11
秋风君 发表于 2022-5-9 13:36
没下载Python,我还是习惯用excel的分列+转置来操作

我也是这样操作
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 03:44

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表