Python笔记 之 xlwt模块

news/2024/7/21 3:50:22 标签: python, 脚本语言, excel

本文以编写小学10以内加减法为例,简单介绍使用xlwt模块操作Excel表格的方法。
xlwt库官方说明文档
xlrd模块简单介绍
本文源代码下载

使用pip安装xlwt模块

python">$ pip install xlwt

简单的官方例子

python">import xlwt
from datetime import datetime

style0 = xlwt.easyxf('font: name Times New Roman, color-index red, bold on',
    num_format_str='#,##0.00')
style1 = xlwt.easyxf(num_format_str='D-MMM-YY')

wb = xlwt.Workbook()
ws = wb.add_sheet('A Test Sheet')

ws.write(0, 0, 1234.56, style0)
ws.write(1, 0, datetime.now(), style1)
ws.write(2, 0, 1)
ws.write(2, 1, 1)
ws.write(2, 2, xlwt.Formula("A3+B3"))

wb.save('example.xls')

设置显示样式

python"># 设置显示样式
        styletitle = xlwt.XFStyle()
        # 为样式创建字体
        fonttitle = xlwt.Font()
        fonttitle.name = 'Time New Roman'
        # 字体颜色
        fonttitle.colour_index = 0
        # 字体大小,20为衡量单位,22为字号
        fonttitle.height = 20 * 22
        # 字体加粗
        fonttitle.bold = True
        # 下划线
        fonttitle.underline = False
        # 斜体字
        fonttitle.italic = False
        # 设置单元格对齐方式
        alignment = xlwt.Alignment()
        # 0x01(左端对齐)、0x02(水平方向上居中对齐)、0x03(右端对齐)
        alignment.horz = 0x01
        #alignment.horz = xlwt.Alignment.HORZ_LEFT
        # 0x00(上端对齐)、 0x01(垂直方向上居中对齐)、0x02(底端对齐)
        alignment.vert = 0x01
        #alignment.vert = xlwt.Alignment.VERT_CENTER
        # 设置自动换行
        alignment.wrap = 1

        # 设置边框
        borderstitle = xlwt.Borders()
        # 细实线:1,小粗实线:2,细虚线:3,中细虚线:4,大粗实线:5,双线:6,细点虚线:7
        # 大粗虚线:8,细点划线:9,粗点划线:10,细双点划线:11,粗双点划线:12,斜点划线:13
        borderstitle.top,borderstitle.bottom,borderstitle.left,borderstitle.right = (1,1,1,1)
        styletitle.font = fonttitle
        styletitle.alignment=alignment
        styletitle.borders = borderstitle

设置行列宽度

python">    def setTitle(self):
        # 设置行高,20为衡量单位,80为字符数
        # 容许用户修改行高
        self._worksheet.row(0).height_mismatch = True
        self._worksheet.row(0).height = 20 * 80
        for i in range(len(self._titles)):
            # 设置列宽,256为衡量单位,11为字符数
            self._worksheet.col(i).width = 256 * 24
            self._worksheet.write(0,i,self._titles[i],self._titleSytle)

完整代码

python">import xlwt,random

class TestPaper():
    def __init__(self,rows=25,cols=4):
        self._titles = ('姓名:','班级:','用时:','评分:')
        self._rowNum = rows
        self._colNum = cols
        self.setStyle()

    def setStyle(self):
        # 设置显示样式
        styletitle = xlwt.XFStyle()
        # 为样式创建字体
        fonttitle = xlwt.Font()
        fonttitle.name = 'Time New Roman'
        # 字体颜色
        fonttitle.colour_index = 0
        # 字体大小,22为字号,20为衡量单位
        fonttitle.height = 20 * 22
        # 字体加粗
        fonttitle.bold = True
        # 下划线
        fonttitle.underline = False
        # 斜体字
        fonttitle.italic = False
        # 设置单元格对齐方式
        alignment = xlwt.Alignment()
        # 0x01(左端对齐)、0x02(水平方向上居中对齐)、0x03(右端对齐)
        alignment.horz = 0x01
        #alignment.horz = xlwt.Alignment.HORZ_LEFT
        # 0x00(上端对齐)、 0x01(垂直方向上居中对齐)、0x02(底端对齐)
        alignment.vert = 0x01
        #alignment.vert = xlwt.Alignment.VERT_CENTER
        # 设置自动换行
        alignment.wrap = 1

        # 设置边框
        borderstitle = xlwt.Borders()
        # 细实线:1,小粗实线:2,细虚线:3,中细虚线:4,大粗实线:5,双线:6,细点虚线:7
        # 大粗虚线:8,细点划线:9,粗点划线:10,细双点划线:11,粗双点划线:12,斜点划线:13
        borderstitle.top,borderstitle.bottom,borderstitle.left,borderstitle.right = (1,1,1,1)
        borderstitle.top_colour,borderstitle.bottom_colour,borderstitle.left_colour,borderstitle.right_colour=(0,0,0,0)

        styletitle.font = fonttitle
        styletitle.alignment=alignment
        styletitle.borders = borderstitle

        stylerecord = xlwt.XFStyle()
        fontrecord = xlwt.Font()
        fontrecord.name = 'Time New Roman'
        fontrecord.height = 20 * 18
        fontrecord.bold = False
        fontrecord.underline = False
        fontrecord.italic = False
        stylerecord.font = fontrecord
        bordersrecord = xlwt.Borders()
        bordersrecord.top, bordersrecord.bottom, bordersrecord.left, bordersrecord.right = (1,1,1,1)
        stylerecord.borders = bordersrecord

        self._titleSytle = styletitle
        self._recordStyle = stylerecord

    def setTitle(self):
        # 设置列宽,一个中文等于两个英文等于两个字符,80为字符数,20为衡量单位
        self._worksheet.row(0).height_mismatch = True
        self._worksheet.row(0).height = 20 * 80
        for i in range(len(self._titles)):
            # 设置列宽,一个中文等于两个英文等于两个字符,11为字符数,256为衡量单位
            self._worksheet.col(i).width = 256 * 24
            self._worksheet.write(0,i,self._titles[i],self._titleSytle)

    def getFormula(self):
        operator = ('+','-')
        x,y = random.randint(0,9),random.randint(0,9)
        if x + y <= 9:
            k = random.randint(0,2)
            if k == 0:
                return '%s+%s=%s'%(' (   ) ','  '+str(y)+'  ','  '+str(x+y)+'  ')
            if k == 1:
                return '%s+%s=%s' % ('  '+str(x)+ '  ', ' (   ) ','  '+str(x+y)+'  ')
            else:
                return '%s+%s=%s' % ('  '+str(x)+'  ','  '+str(y)+'  ','     ')
        else:
            x,y = max(x,y),min(x,y)
            k = random.randint(0, 2)
            if k == 0:
                return '%s-%s=%s' % (' (   ) ', '  '+str(y)+'  ','  '+str(x-y)+'  ')
            if k == 1:
                return '%s-%s=%s' % ('  '+str(x)+'  ', ' (   ) ','  '+str(x-y)+'  ')
            else:
                return '%s-%s=%s' % ('  '+str(x)+'  ','  '+str(y)+'  ', '   ')

    def setFormula(self,number=None):
        _number = self._colNum * self._rowNum if not number else number
        formulas = set()
        while True:
            formulas.add(self.getFormula())
            if len(formulas) >= _number:
                return  formulas

    def getNewTestPaper(self,filename='NewPaper.xls'):
        self._workbook = xlwt.Workbook(encoding='utf-8', style_compression=0)
        self._worksheet = self._workbook.add_sheet('Paper1', cell_overwrite_ok=False)
        self.setTitle()
        formulas = self.setFormula()
        for row in range(1,self._rowNum+1):
            self._worksheet.row(0).height_mismatch = True
            self._worksheet.row(0).height = 20 * 50
            for col in range(self._colNum):
                self._worksheet.write(row,col,formulas.pop(),self._recordStyle)
        self._workbook.save(filename)

if __name__ == '__main__':
    paper = TestPaper()
    paper.getNewTestPaper()

http://www.niftyadmin.cn/n/752389.html

相关文章

RPC、RMI实战

完整工程&#xff1a;https://download.csdn.net/download/haoranhaoshi/11268280 RPC&#xff08;Remote Procedure Call&#xff0c;远程过程调用&#xff09;核心代码&#xff1a; package rpc; /** Copyright 2011 Alibaba.com All right reserved. This software is the…

Python笔记 之 xlrd模块

本文是对官方说明文档的简单摘抄防止自己遗忘&#xff0c;简单介绍使用xlrd模块操作Excel表格的方法。 官方说明文档 xlwt模块简单例子 使用pip安装xlwt模块 $ pip install xlrd简单的例子 import xlrd workbook xlrd.open_workbook(rF:\Pythonfiles\pythonprogram\NewPape…

Spring Boot:整合Shiro权限框架

综合概述 Shiro是Apache旗下的一个开源项目&#xff0c;它是一个非常易用的安全框架&#xff0c;提供了包括认证、授权、加密、会话管理等功能&#xff0c;与Spring Security一样属基于权限的安全框架&#xff0c;但是与Spring Security 相比&#xff0c;Shiro使用了比较简单易…

IDEA中 Maven下依赖或插件有红线或者unknown

IDEA中 Maven下依赖或插件有红线或者unknown&#xff0c;可以到本地仓库查看依赖或插件&#xff0c;会发现对应的jar包或文件夹没有了。 1、有红线可以尝试重新导入&#xff0c;不例外点击Maven刷新重新导入&#xff0c;或者将pom中依赖剪切再撤销&#xff08;需选择了Maven自…

MyGeneration学习笔记(8) :dOOdad提供的数据绑定、特殊函数和事务处理

1. 数据绑定&#xff1a; (1) 绑定到DataGrid(WebApp) if(emps.LoadAll())...{ dvEmps emps.DefaultView; dgEmps.DataSource dvEmps; dgEmps.DataBind();}(2) 绑定到ComboBox(WinApp) //get dataemps.Query.AddResultColumn(Employees.ColumnNames.Employe…

Python笔记 之 fitlib模块进行简单的FTP文件下载

FTP&#xff08;File Transfer Protocol&#xff09;文件传输协议是最常用的Internet协议之一&#xff0c;它定义了基于通过套接字交换命令字符串和文件内容的高级对话模型。 FTP运行在两个套接字的上层&#xff1a;一个套接字用于在客户端和服务器之间传输控制命令&#xff0c…

Zookeeper配置详解

配置参数详解(主要是%ZOOKEEPER_HOME%/conf/zoo.cfg文件) 参数名 说明 clientPort 客户端连接server的端口&#xff0c;即对外服务端口&#xff0c;一般设置为2181吧。 dataDir 存储快照文件snapshot的目录。默认情况下&#xff0c;事务日志也会存储在这里。建议同时配置参…

Python笔记 之 ftplib模块简介

fitlib模块定义了FTP类和一些相关操作。ftplib.FTP类实现FTP协议的客户端&#xff0c;可以使用它来编写执行各种FTP作业的Python程序。 详细说明请查看官方文档 简单的FTP文件下载小例子 官方小例子 import ftplib ftp ftplib.FTP(ftp.cwi.nl) # connect to host, default…