乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      Python中xlrd和xlwt模塊使用方法

       KyunraWang 2021-12-20

       


      xlrd模塊實(shí)現(xiàn)對(duì)excel文件內(nèi)容讀取,xlwt模塊實(shí)現(xiàn)對(duì)excel文件的寫(xiě)入。

      安裝

      1
      2
      pip install xlrd
      pip install xlwt

       

      xlrd模塊使用

      excel文檔名稱(chēng)為聯(lián)系人.xls,內(nèi)容如下:

       

       

      (1) 打開(kāi)excel文件并獲取所有sheet

      1
      2
      3
      4
      5
      6
      7
      import xlrd
      # 打開(kāi)Excel文件讀取數(shù)據(jù)
      data = xlrd.open_workbook('聯(lián)系人.xls')
      sheet_name = data.sheet_names()  # 獲取所有sheet名稱(chēng)
      print(sheet_name) # ['銀行2', '銀行3']

      (2) 根據(jù)下標(biāo)獲取sheet名稱(chēng)

      1
      2
      3
      # 根據(jù)下標(biāo)獲取sheet名稱(chēng)
      sheet2_name = data.sheet_names()[1]
      print(sheet2_name)  # '銀行3'

      (3) 根據(jù)sheet索引或者名稱(chēng)獲取sheet內(nèi)容,同時(shí)獲取sheet名稱(chēng)、行數(shù)、列數(shù)

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      # 根據(jù)sheet索引或者名稱(chēng)獲取sheet內(nèi)容,同時(shí)獲取sheet名稱(chēng)、列數(shù)、行數(shù)
      sheet2 = data.sheet_by_index(1)
      print('sheet2名稱(chēng):{}\nsheet2列數(shù): {}\nsheet2行數(shù): {}'.format(sheet2.name, sheet2.ncols, sheet2.nrows))
      # sheet2名稱(chēng):銀行3
      # sheet2列數(shù): 7
      # sheet2行數(shù): 5
      sheet1 = data.sheet_by_name('銀行2')
      print('sheet1名稱(chēng):{}\nsheet1列數(shù): {}\nsheet1行數(shù): {}'.format(sheet1.name, sheet1.ncols, sheet1.nrows))
      # sheet1名稱(chēng):銀行2
      # sheet1列數(shù): 8
      # sheet1行數(shù): 6

       (4) 根據(jù)sheet名稱(chēng)獲取整行和整列的值

      1
      2
      3
      4
      5
      6
      #  根據(jù)sheet名稱(chēng)獲取整行和整列的值
      sheet1 = data.sheet_by_name('銀行2')
      print(sheet1.row_values(3))  
      # ['', '張2', '開(kāi)發(fā)', 'IT編碼', 999.0, 133111.0, 41463.0, 'zhang2@164.com'] 日期2013/7/7,實(shí)際卻顯示為浮點(diǎn)數(shù)41463.0
      print(sheet1.col_values(3)) 
      # ['', '工作職責(zé)', '', 'IT編碼', '網(wǎng)絡(luò)維修', '']

       (5)獲取指定單元格的內(nèi)容

      1
      2
      3
      4
      # 獲取指定單元格的內(nèi)容
      print(sheet1.cell(1,0).value)  # 第2 行1列內(nèi)容:機(jī)構(gòu)名稱(chēng)
      print(sheet1.cell_value(1,0))  # 第2 行1列內(nèi)容:機(jī)構(gòu)名稱(chēng)
      print(sheet1.row(1)[0].value)  # 第2 行1列內(nèi)容:機(jī)構(gòu)名稱(chēng)

      (6)獲取單元格內(nèi)容的數(shù)據(jù)類(lèi)型

      1
      2
      3
      4
      5
      # 獲取單元格內(nèi)容的數(shù)據(jù)類(lèi)型
      print(sheet1.cell(1,0).ctype)  # 第2 行1列內(nèi)容 :機(jī)構(gòu)名稱(chēng)為string類(lèi)型
      print(sheet1.cell(3,4).ctype)  # 第4行5列內(nèi)容:999 為number類(lèi)型
      print(sheet1.cell(3,6).ctype)  # 第4 行7列內(nèi)容:2013/7/8 為date類(lèi)型
      # 說(shuō)明:ctype : 0 empty,1 string, 2 number, 3 date, 4 boolean, 5 error

      (7)獲取單元內(nèi)容為日期類(lèi)型的方式

         使用xlrd的xldate_as_tuple處理為date格式

      1
      2
      3
      4
      5
      6
      7
      8
      from datetime import datetime,date
      if sheet1.cell(3,6).ctype == 3 :
          print(sheet1.cell(3, 6).value)  # 41463.0
          date_value = xlrd.xldate_as_tuple(sheet1.cell(3, 6).value, data.datemode)
          print(date_value)  # (2013, 7, 8, 0, 0, 0)
          print(date(*date_value[:3])) # 2013-07-08
          print(date(*date_value[:3]).strftime('%Y/%m/%d'))  # 2013/07/08

      (8)獲取單元內(nèi)容為number的方式(轉(zhuǎn)為整型)

      1
      2
      3
      4
      if sheet1.cell(3, 5).ctype == 2:
          print(sheet1.cell(3, 5).value)  # 133111.0
          num_value = int(sheet1.cell(3, 5).value)
          print(num_value)  # 133111

      (9) 獲取合并單元格的內(nèi)容 

      需要merged_cells屬性
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      # 這里,需要在讀取文件的時(shí)候添加個(gè)參數(shù),將formatting_info參數(shù)設(shè)置為T(mén)rue,默認(rèn)是False,否
      # 則可能調(diào)用merged_cells屬性獲取到的是空值。<br>
      data = xlrd.open_workbook('聯(lián)系人.xls',formatting_info=True)
      sheet1 = data.sheet_by_name('銀行2')
      print(sheet1.merged_cells)  # [(0, 1, 0, 8), (2, 6, 0, 1)]<br>
      # merged_cells返回的這四個(gè)參數(shù)的含義是:(row,row_range,col,col_range),其中[row,row_range)包括row,
      # 不包括row_range,col也是一樣,下標(biāo)從0開(kāi)始。
      #(0, 1, 0, 8) 表示1列-8列合并 (2, 6, 0, 1)表示3行-6行合并<br>
      # 分別獲取合并2個(gè)單元格的內(nèi)容:
      print(sheet1.cell(0,0).value)  # 銀行2
      print(sheet1.cell_value(2, 0))  # 銀行2
      規(guī)律 : 獲取merge_cells返回的row和col低位的索引即可!

       使用以下方法更加方便

      1
      2
      3
      4
      5
      6
      7
      8
      9
      merge_value = []
      for (row,row_range,col,col_range) in sheet1.merged_cells:
          merge_value.append((row,col))
      print(merge_value)  # [(0, 0), (2, 0)]
      for v in merge_value:
          print(sheet1.cell(v[0], v[1]).value)
      # 銀行2
      # 銀行2

        

      xlwt模塊

       

       

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      29
      30
      31
      32
      33
      34
      35
      36
      37
      38
      39
      40
      41
      42
      43
      44
      45
      import xlwt
      from datetime import datetime,date
      def set_style(name, height, bold=False, format_str=''):
          style = xlwt.XFStyle()  # 初始化樣式
          font = xlwt.Font()  # 為樣式創(chuàng)建字體
          font.name = name  # 'Times New Roman'
          font.bold = bold
          font.height = height
          borders= xlwt.Borders() # 為樣式創(chuàng)建邊框
          borders.left= 6
          borders.right= 6
          borders.top= 6
          borders.bottom= 6
          style.font = font
          style.borders = borders
          style.num_format_str= format_str
          return style
      wb = xlwt.Workbook()
      ws = wb.add_sheet('A Test Sheet') # 增加sheet
      ws.col(0).width = 200*30 # 設(shè)置第一列列寬
      ws.write(0, 0, 1234.56,set_style('Times New Roman',220,bold=True,format_str='#,##0.00'))
      ws.write(1, 0, datetime.now(), set_style('Times New Roman',220,bold=False, format_str='DD-MM-YYYY'))
      styleOK = xlwt.easyxf('pattern: fore_colour light_blue;'
                                'font: colour green, bold True;')
      pattern = xlwt.Pattern()#一個(gè)實(shí)例化的樣式類(lèi)
      pattern.pattern = xlwt.Pattern.SOLID_PATTERN # 固定的樣式
      pattern.pattern_fore_colour = xlwt.Style.colour_map['red']#背景顏色
      styleOK.pattern = pattern
      ws.write(2, 0, 1,style=styleOK)
      ws.write(2, 1, 1)
      ws.write(2, 2, xlwt.Formula("A3+B3"))
      wb.save('example.xls')   # 保存xls

       

      聯(lián)系人表

       

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      29
      30
      31
      32
      33
      34
      35
      36
      37
      38
      39
      40
      41
      42
      43
      44
      45
      46
      47
      48
      49
      50
      51
      52
      53
      54
      55
      56
      57
      58
      59
      60
      61
      62
      63
      64
      65
      66
      67
      68
      69
      70
      71
      72
      73
      74
      75
      76
      77
      78
      79
      80
      81
      82
      83
      84
      85
      86
      87
      88
      89
      90
      91
      92
      93
      94
      95
      96
      97
      98
      99
      100
      101
      102
      103
      104
      105
      106
      107
      108
      109
      110
      111
      112
      113
      114
      115
      116
      117
      118
      119
      120
      121
      import xlwt
      from datetime import datetime, date
      def set_style(name, height, bold=False, format_str='',align='center'):
          style = xlwt.XFStyle()  # 初始化樣式
          font = xlwt.Font()  # 為樣式創(chuàng)建字體
          font.name = name  # 'Times New Roman'
          font.bold = bold
          font.height = height
          borders = xlwt.Borders()  # 為樣式創(chuàng)建邊框
          borders.left = 2
          borders.right = 2
          borders.top = 0
          borders.bottom = 2
          alignment = xlwt.Alignment()  # 設(shè)置排列
          if align== 'center':
              alignment.horz = xlwt.Alignment.HORZ_CENTER
              alignment.vert = xlwt.Alignment.VERT_CENTER
          else:
              alignment.horz = xlwt.Alignment.HORZ_LEFT
              alignment.vert = xlwt.Alignment.VERT_BOTTOM
          style.font = font
          style.borders = borders
          style.num_format_str = format_str
          style.alignment = alignment
          return style
      wb = xlwt.Workbook()
      ws = wb.add_sheet('聯(lián)系人',cell_overwrite_ok=True# 增加sheet
      rows = ['機(jī)構(gòu)名稱(chēng)', '姓名', '部門(mén)', '電話(huà)', '入職日期', '手機(jī)', '郵箱']
      col1 = ['王1', '王2', '王3']
      col2 = ['666', '777','888']
      col3 = ['2014-08-09','2014-08-11','2015-08-09']
      # 寫(xiě)第一行數(shù)據(jù)
      ws.write_merge(
          0,
          0,
          0,
          6,
          '聯(lián)系人表',
          set_style(
              'Times New Roman',
              320,
              bold=True,
              format_str=''))  # 合并單元格
      styleOK = xlwt.easyxf()
      pattern = xlwt.Pattern()  # 一個(gè)實(shí)例化的樣式類(lèi)
      pattern.pattern = xlwt.Pattern.SOLID_PATTERN  # 固定的樣式
      pattern.pattern_fore_colour = xlwt.Style.colour_map['yellow'# 背景顏色
      borders = xlwt.Borders()  # 為樣式創(chuàng)建邊框
      borders.left = 2
      borders.right = 2
      borders.top = 6
      borders.bottom = 2
      font = xlwt.Font()  # 為樣式創(chuàng)建字體
      font.name = 'Times New Roman'
      font.bold = True
      font.height = 220
      styleOK.pattern = pattern
      styleOK.borders = borders
      styleOK.font = font
      # 寫(xiě)第二行數(shù)據(jù)
      for index, val in enumerate(rows):
          ws.col(index).width = 150 * 30 # 定義列寬
          ws.write(1, index, val, style=styleOK)
      # 寫(xiě)第3行-6行第一列數(shù)據(jù)
      ws.write_merge(
          2,
          2 + len(col1)-1,
          0,
          0,
          'x機(jī)構(gòu)',
          set_style(
              'Times New Roman',
              320,
              bold=True,
              format_str=''))  # 合并單元格
      # 從第3行開(kāi)始寫(xiě)1列數(shù)據(jù)
      for index, val in enumerate(col1):
          ws.col(1).width = 150 * 30 # 定義列寬
          ws.write(index+2, 1, val, style=set_style('Times New Roman',
              200,
              bold=False,
              format_str='',align=''))
      # 從第3行開(kāi)始寫(xiě)4列數(shù)據(jù)
      for index, val in enumerate(col2):
          ws.col(3).width = 150 * 30 # 定義列寬
          ws.write(index+2, 3, val, style=set_style('Times New Roman',
              200,
              bold=False,
              format_str='',align=''))
      # 從第3行開(kāi)始寫(xiě)5列數(shù)據(jù)
      for index, val in enumerate(col3):
          ws.col(4).width = 150 * 30 # 定義列寬
          ws.write(index+2, 4, val, style=set_style('Times New Roman',
              200,
              bold=False,
              format_str='',align=''))
      ws.write(4, 2,'技術(shù)部', style=styleOK)
      ws.write(4, 5,'186777233', style=styleOK)
      ws.write(4, 6,'wang@166.com', style=styleOK)
      wb.save('test.xls')   # 保存xls

        

       

       

       

       

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶(hù)發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶(hù) 評(píng)論公約

        類(lèi)似文章 更多