zoukankan      html  css  js  c++  java
  • excel的读取

    excle的读如下:

    import xlrd
    import os
    base_path = os.path.dirname(os.path.realpath(__file__))
    current_path = os.path.join(base_path, 'test_data.xlsx')
    data = xlrd.open_workbook(current_path)
    '''三种获取table的方式'''
    table = data.sheets()[0]  #通过索引顺序获取
    table = data.sheet_by_index(0)  # 通过索引顺序获取
    table = data.sheet_by_name('Sheet1')  # 通过表单的名字获取
    nrows = table.nrows # 获取总的行数
    ncols = table.ncols  #获取总的列数
    table.row_values(0)  # 获取第一行的数据
    table.col_values(0)  #获取第一列的数据

    写如下:

    1. 使用xlwt模块 import xlwt

            import xlwt    # 导入xlwt

            # 新建一个excel文件

       file = xlwt.Workbook() #注意这里的Workbook首字母是大写,无语吧

        # 新建一个sheet

        table = file.add_sheet('sheet name')

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

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

            # 如果对一个单元格重复操作,会引发

       returns error:
           # Exception: Attempt to overwrite cell:
         # sheetname=u'sheet 1' rowx=0 colx=0

        # 所以在打开时加cell_overwrite_ok=True 解决

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

        file.save('demo.xls')  # 保存文件

           另外,使用style

           style = xlwt.XFStyle() # 初始化样式

           font = xlwt.Font() #为样式创建字体

           font.name = 'Times New Roman'

           font.bold = True

           style.font = font #为样式设置字体

           table.write(0, 0, 'some bold Times text', style) # 使用样式

           xlwt 允许单元格或者整行地设置格式。还可以添加链接以及公式。可以阅读源代码,那里有例子:

           dates.py, 展示如何设置不同的数据格式

           hyperlinks.py, 展示如何创建超链接 (hint: you need to use a formula)

           merged.py, 展示如何合并格子

           row_styles.py, 展示如何应用Style到整行格子中.

       例子一:

                 import xlwt
          wbk = xlwt.Workbook()
          sheet = wbk.add_sheet('sheet 1')
          # indexing is zero based, row then column
          sheet.write(0,1,'test text')
          sheet.write(1,1,'test text')
          wbk.save('test2.xls')  默认保存在桌面上

          例子二: 

    复制代码
    import StringIO
    import xlwt as ExcelWrite # 引入模块

    def _make_excel(self, data_array): if not data_array: return '' # data_array = sorted(data_array, key=lambda x:x['CreateTime']) # 按照数据的时间进行排序 # style_del = ExcelWrite.XFStyle() # style_del.alignment.wrap = 1 header = [u'下单日期',u'出发时间',u'出发时段',u'上车地点',u'下车地点',u'乘客名',u'司机信息',u'口岸',u'车队',u'是否8座',u'支付渠道',u'支付金额',u'车队报价',u'备注',u'备注2', u'订单来源'] xls = ExcelWrite.Workbook(style_compression=2) sheet = xls.add_sheet("Sheet1") sheet.col(3).width = (30*367) # 设置表格的宽度 sheet.col(4).width = (30*367) sheet.col(5).width = (20*367) sheet.col(6).width = (20*367) sheet.col(11).width = (20*367) sheet.col(13).width = (20*367) i = 0 # 写表头 for each_header in header: sheet.write(0, i, each_header) i += 1 row = 1
         # 填充每行的数据 for each_row in data_array: col = 0        # 填充一行的每列数据 for each_col in header: if each_col in (u'下单日期', u'出发时间'):
    # self 对象表示类本身 style = self._make_date_style() # 获取样式 else: style = self._make_normal_style() if each_row['Status'] == 2: badBG = ExcelWrite.Pattern() # 设置背景 badBG.pattern = badBG.SOLID_PATTERN # 灰色 badBG.pattern_fore_colour = 23 style.pattern = badBG # 删除线 style.font.struck_out = True sheet.write(row, col, each_row[each_col], style) col += 1 row += 1 sf = StringIO.StringIO() # StringIO 此模块可以学习下 xls.save(sf) contents = sf.getvalue() sf.close() return contents

    def _make_normal_style(self): style_normal = ExcelWrite.XFStyle() # 设置excel的样式 style_normal.alignment.wrap = 1 return style_normal def _make_date_style(self): style_date = ExcelWrite.XFStyle() style_date.alignment.wrap = 1 style_date.num_format_str = u'mm月dd日' return style_date

    # self 对象是继承了tornado.web.RequestHandler的派生类
    def _send_download(self, file_name, data): self.set_header('Content-Type', 'application/octet-stream') self.set_header('Content-Disposition', 'attachment; filename=' + file_name) self.write(data) # 将数据写回到网页客户端 self.finish()

    # 调用生成excel数据
    excel_data = self._make_excel(data) if excel_data: self._send_download('1.xls', excel_data) else:
    pass
    人不可无方向
  • 相关阅读:
    【郑轻邀请赛 G】密室逃脱
    【郑轻邀请赛 C】DOBRI
    【郑轻邀请赛 F】 Tmk吃汤饭
    【郑轻邀请赛 I】这里是天堂!
    【郑轻邀请赛 B】base64解密
    【郑轻邀请赛 A】tmk射气球
    【郑轻邀请赛 H】 维克兹的进制转换
    解决adb command not found以及sdk环境配置
    adb shell 命令详解,android, adb logcat
    Unexpected exception 'Cannot run program ... error=2, No such file or directory' ... adb'
  • 原文地址:https://www.cnblogs.com/yueyanru/p/9440260.html
Copyright © 2011-2022 走看看