首页 > 编程语言 >python模块xlsxwriter使用

python模块xlsxwriter使用

时间:2023-03-02 11:55:46浏览次数:67  
标签:repair obj python xlsxwriter dept attachment 模块 id result

1.安装

pip install XlsxWriter

2.使用

# -*- coding: utf-8 -*-
from io import BytesIO
import qrcode
# import sqlite3
import xlsxwriter

    @http.route('/attachment_detail', auth='public', type='json', methods=['POST'], website=True)
    def attachment_detail(self, **args):
        result = {}
        repair_records = []
        title = ['序号', '备件名称', '规格型(图)号 ', '备件编码', '送修单位', '承修单位', '送修时间', '返回时间', '备注']
        cont = 0
        records = None

        try:
            '''
            权限不同,下载内容不一样
            备件送修明细  序号 备件名称     规格型(图)号    备件编码    送修单位      承修单位       送修时间                           返回时间                                 备注
                            repair_id   model         code   dept_id          repair_unit  bw_goods.attachment.repair(date)  bw_goods.attachment.repair(back_date)  memo
            '''
            # 人员对应部门对象
            dept = http.request.env['bw_org.dept'].search([('id', '=', http.request.env.user.person_id.dept_id.id)])
            # # 登录人对象
            # person = http.request.env['bw_org.person'].search([('name', '=', http.request.env.user.login)])
            # 机关/基层部门人员登录
            obj_ids = []
            print(dept,type(dept))
            if http.request.env.user.id > 6:
                print('dept_login', http.request.env.user.id, type(http.request.env.user.id))
                attachment_obj = http.request.env["bw_goods.attachment"].search([('dept_id', '=', dept.id)])  # 登录部门人对应备件情况明细表
                print(attachment_obj,type(attachment_obj))
                for obj in attachment_obj:
                    # obj_ids.append(obj.repair_id.id)
                    obj_ids.append(obj.id)
                obj_ids = tuple(obj_ids)
                print('obj_ids', obj_ids)
                if obj_ids:
                    records = http.request.env["bw_goods.attachment.repair"].search([('attachment_id', 'in', obj_ids)])
            else:  # admin 。。
                records = http.request.env["bw_goods.attachment.repair"].search([])

            if records:
                print('init_data')
                for record in records:
                    cont = cont + 1
                    repair_id = record.attachment_id.repair_id.name
                    model = record.attachment_id.model
                    code = record.attachment_id.code
                    dept_id = record.attachment_id.repair_id.dept_id.name
                    repair_unit = record.attachment_id.repair_unit
                    date = record.date.strftime("%Y-%m-%d")
                    back_date = record.back_date.strftime("%Y-%m-%d")
                    memo = record.attachment_id.memo
                    if not memo:
                        memo = ''
                    if not repair_unit:
                        repair_unit = ''
                    repair = [str(cont), repair_id, model, code, dept_id, repair_unit, date, back_date, memo]
                    repair_records.append(repair)

                print('获取数据结束', repair_records, type(repair_records[0][-3]))

            index = 0
            if repair_records:
                print('start_xlsx')
                f = xlsxwriter.Workbook('/home/admin/odoo13/bw_addons/bw_goods/static/src/xml/attachment_detail.xlsx')  # 创建excel文件
                worksheet1 = f.add_worksheet('detail')  # 括号内为工作表表名

                workfomat = f.add_format({
                    'bold': True,  # 字体加粗
                    # 'border': 1,  # 单元格边框宽度
                    'align': 'left',  # 对齐方式
                    # 'valign': 'vcenter',  # 字体对齐方式
                    # 'fg_color': '#F4B084',  # 单元格背景颜色
                })

                worksheet1.write_row("A1", title, workfomat)  # 将数据插入到表格中
                for line in repair_records:
                    print("A" + str(index + 2), line)
                    worksheet1.write_row("A" + str(index + 2), line)
                    index += 1

                worksheet1.set_column('A:A', 5)
                worksheet1.set_column('B:C', 15)
                worksheet1.set_column('D:D', 24)
                worksheet1.set_column('E:F', 20)  # 设置E到F列的列宽为20
                worksheet1.set_column('G:H', 12)
                worksheet1.set_column('I:I', 30)
                f.close()
                print('创建excel文件结束')
                result['code'] = 0
                result['msg'] = repair_records
                result['memo'] = '送修明细'
                return result

            result['code'] = 1
            result['memo'] = '无送修明细'
            return result
        except Exception as e:
            result['code'] = 2
            result['msg'] = e
            result['memo'] = 'error'
            return result

 

11

标签:repair,obj,python,xlsxwriter,dept,attachment,模块,id,result
From: https://www.cnblogs.com/daofaziran/p/15948824.html

相关文章

  • python---文件操作
    1.文件操作步骤打开文件-open读---把文件的内容读到变量里-read 写---把变量的值写到文件内容里-write关闭文件-close2.读取一个文件1)打开文件file=open(要打开......
  • django 源码解读 python manage.py makemigrations
    分析命令之前,需要先了解makemigrations调用的一些类。这样对于后面分析命令时很轻松。1.MigrationRecorder类这个类在django/db/migrations/recorder.py文件中,这个类是......
  • 有趣又实用的python脚本
    1.使用Python进行速度测试这个高级脚本帮助你使用Python测试你的Internet速度。只需安装速度测试模块并运行以下代码。#pipinstallpyspeedtest#pipinstalls......
  • Python抓取数据具体流程
    之前看了一段有关爬虫的网课深有启发,于是自己也尝试着如如何过去爬虫百科“python”词条等相关页面的整个过程记录下来,方便后期其他人一起来学习。抓取策略确定目标:重要......
  • 机器学习python环境搭建
    目的:跑通下面代码相关代码fromtorchimportnnimporttorchimportjiebaimportnumpyasnpraw_text="""越努力就越幸运"""words=list(jieba.cut(raw_text))......
  • Python第三天
    8bit(位)=1byte(字节)1024byte=1kbstr表示字符串(只要是双单引号里的都叫字符串)int表示整数(1、2、3、5)float表示浮点数(3.151) type()数据类型bool表示true,falseint()、str()、fl......
  • python 字符串 格式化输出 槽格式 小数的位数与符号控制
    """槽的格式限定冒号:左边填序号或名称,右边填写格式"""#定义一个数num=3.1465926#保留两位小数,并且四舍五入res="{:.2f}".format(num)print(res)#有符号的数字res2=......
  • python 字符串 格式化输出 槽格式 左中右对齐的内容
    """槽的格式限定冒号:左边填序号或名称,右边填写格式"""#右对齐的字符串,宽度为20s1="{:>20}".format("hello")print(s1)#右对齐,宽20,!填充s2="{:!>20}".format("python")p......
  • Python面向对象编程
    面向对象是思想面向对象是一种编程范式(常见编程范式有命令式,生命石(分领域特定和函数式),面向对象编程,反省计算,元变成,默认并发,拼接式,符号式,基于知识,多范式)语法原生支持面向......
  • 蓝桥杯备战日志(Python)20-受伤的皇后-(矩阵搜索、递归)
    原题有一个  的国际象棋棋盘( 行  列的方格图),请在棋盘中摆放  个受伤的国际象棋皇后,要求:任何两个皇后不在同一行。任何两个皇后不在同一列。如果两个皇后在同一条45......