• python处理excel(二):写


    代码参考自zhoujie。函数接口可参考该blog

    基本的write函数接口很简单:

    新建一个excel文件

    file = xlwt.Workbook() (注意这里的Workbook首字母是大写)

    新建一个sheet

    table = file.add_sheet('sheet_name')

    写入数据table.write(行,列,value)

    table.write(0,0,'test')

    如果是写入中文,则要用u'汉字'的形式。比如

    table.write(0,0, u'汉字')

    合并单元格:

    table.write_merge(x, x + m, y, y + n, string, style)

    x表示行,y表示列,m表示跨行个数,n表示跨列个数,string表示要写入的单元格内容,style表示单元格样式。

     1 #coding=utf8
     2 '''
     3 设置单元格样式
     4 '''
     5 import xlwt, xlrd
     6 
     7 def set_style(name,height,bold=False):
     8     style = xlwt.XFStyle()  # 初始化样式
     9 
    10     font = xlwt.Font()  # 为样式创建字体
    11     font.name = name # 'Times New Roman'
    12     font.bold = bold
    13     font.color_index = 4
    14     font.height = height
    15 
    16     # borders= xlwt.Borders()
    17     # borders.left= 6
    18     # borders.right= 6
    19     # borders.top= 6
    20     # borders.bottom= 6
    21 
    22     style.font = font
    23     # style.borders = borders
    24 
    25     return style
    26 
    27 
    28 #写excel
    29 def write_excel():
    30     f = xlwt.Workbook() #创建工作簿
    31 
    32     '''
    33     创建第一个sheet:
    34         sheet1
    35     '''
    36     sheet1 = f.add_sheet(u'sheet1',cell_overwrite_ok=True) #创建sheet
    37     row0 = [u'业务',u'状态',u'北京',u'上海',u'广州',u'深圳',u'状态小计',u'合计']
    38     column0 = [u'机票',u'船票',u'火车票',u'汽车票',u'其它']
    39     status = [u'预订',u'出票',u'退票',u'业务小计']
    40 
    41     #生成第一行
    42     for i in range(0,len(row0)):
    43         sheet1.write(0,i,row0[i],set_style('Times New Roman',220,True))
    44 
    45     #生成第一列和最后一列(合并4行)
    46     i, j = 1, 0
    47     while i < 4*len(column0) and j < len(column0):
    48         sheet1.write_merge(i,i+3,0,0,column0[j],set_style('Arial',220,True)) #第一列
    49         sheet1.write_merge(i,i+3,7,7) #最后一列"合计"
    50         i += 4
    51         j += 1
    52 
    53     sheet1.write_merge(21,21,0,1,u'合计',set_style('Times New Roman',220,True))
    54 
    55     #生成第二列
    56     i = 0
    57     while i < 4*len(column0):
    58         for j in range(0,len(status)):
    59             sheet1.write(j+i+1,1,status[j])
    60         i += 4
    61 
    62     f.save('demo1.xls') #保存文件.这里如果是.xlsx的话会打不开。
    63 
    64 if __name__ == '__main__':
    65     #generate_workbook()
    66     #read_excel()
    67     write_excel()

    注意:最终生成的文件如果是demo1.xlsx的话打不开,.xls就没问题。

    如果对一个单元格重复操作,会引发error。所以在打开时加cell_overwrite_ok=True解决

    table = file.add_sheet('sheet name',cell_overwrite_ok=True)

    生成的demo1.xls效果如下。

  • 相关阅读:
    saiku导出excel单元格格式与中文列宽自动适应
    saiku中过滤窗口优化及隐藏异常报错
    saiku之固定维度(必选维度)
    saiku中多cube排序问题
    saiku中默认级别all的国际化
    Nginx基本配置、性能优化指南
    Nginx安装部署
    64位虚拟机中安装CentOS_6.7
    memcached全面剖析–5. memcached的应用和兼容程序
    memcached全面剖析–4. memcached的分布式算法
  • 原文地址:https://www.cnblogs.com/forcheryl/p/5492804.html
Copyright © 2020-2023  润新知