excel转word_60行代码实现Excel转Word...

前阵子朋友托我帮忙把Excel试题表格处理一下,

打印之后拿来复习。

我想,其实转一下翻转表格打印不就完事了。

对方答曰:

表格打印之后看起来不太舒服,

背题效率低。

.........

PS:朋友哪来这么多的要求呀。

PPS:他一定是个好人!


于是,

大概花了半个小时,

写个点Python代码实现把Excel转成了Word文档。

大概,表格长这样。

6e585fdc01f8b48a68746e75e2da37b3.png

最终效果图,大概是这样的。

9c555d55a62919ddb2d73143a0d6fb81.png

公众号回复"Excel转Word"获取代码。


蛋疼,

有什么好获取的。

直接拿去。

Python 3.7  环境 

同时需要 xlrd + python-docx 包

pip install xlrd -i https://pypi.mirrors.ustc.edu.cn/simple/pip install python-docx -i https://pypi.mirrors.ustc.edu.cn/simple/

全部代码:

import xlrdimport jsonimport osfrom docx import Documentclass ExcelInfo:    # sheet表格名字,不填入默认取0    sheet_name = None    # 文件路径    file_path = ""    # 标题字段所在的列数组,会将对应列内容组装成标题    title_fields = [1]    # 答案选项开始列索引Id,包含当前列    op_start_index = 2    # 答案选项结束列索引Id,不包含当前列    op_end_index = 7    # 答案所在的列    answer_index = 7def convert_to_word(excel_info: ExcelInfo):    file_name = excel_info.file_path if excel_info.file_path else "sample.xlsx"    print("convert %s start!" % file_name)    workbook_obj = xlrd.open_workbook(f'{file_name}')    if excel_info.sheet_name:        sheet_data = workbook_obj.sheet_by_name(excel_info.sheet_name)    else:        sheet_data = workbook_obj.sheet_by_index(0)    data_num = 0    document = Document()    document.add_heading(file_name)    for i in range(1, sheet_data.nrows):        row_data = sheet_data.row_values(i)        data_num = data_num + 1        title_text = ""        for title_index in excel_info.title_fields:            title_text = title_text + row_data[title_index] + "  "        title = f"{data_num}. {title_text}:"        options = []        for op_id in range(excel_info.op_start_index, excel_info.op_end_index):            op_value = row_data[op_id]            if op_value is None or (type(op_value) != float and len(op_value) == 0):                break            options.append(op_value)        paragraph = document.add_paragraph(title)        for op_num in range(0, len(options)):            op_text = "%s. %s" % (chr(65+op_num), options[op_num])            document.add_paragraph(op_text)        ans_text = row_data[excel_info.answer_index]        ans = f"\n\n正确答案:【{ans_text}】\n\n"        document.add_paragraph(ans)        document.add_paragraph()    document.save("%s.docx" % file_name)    print("convert %s success!" % file_name)excel_info = ExcelInfo()convert_to_word(excel_info)

PS:懒得写注释....

好了,

完事。


感觉回头改改上线成小程序 +网站?

嘿嘿嘿。

晚安了。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值