1. 程式人生 > >python excel和csv處理操作記錄

python excel和csv處理操作記錄

CSV是英文Comma Separate Values(逗號分隔值)的縮寫,顧名思義,文件的內容是由 “,” 分隔的一列列的資料構成的。
讀檔案:
import csv
csv_reader = csv.reader(open('data.file', encoding='utf-8'))
for row in csv_reader:
    print(row)

import csv
# 讀取csv至字典
csvFile = open("instance.csv", "r")
reader = csv.reader(csvFile)
# 建立空字典
result = {}
for item in reader:
    # 忽略第一行
    if reader.line_num == 1:
        continue
    result[item[0]] = item[1]
csvFile.close()

讀出字典格式:
import csv
csvFile = open("instance.csv", "r")
dict_reader = csv.DictReader(csvFile)
#dict_reader.fieldnames  欄位
for row in dict_reader:
    print(row)

寫檔案:
out = open(outfile, 'w', newline='')
#csvFile = open("instance.csv", "a")  追加寫
csv_writer = csv.writer(out, dialect='excel')
csv_writer.writerow(list)
或者:
csv_writer.writerows(data)
out.close()

excel操作:
import xlrd
import xlwt

def read_excel():
  # 開啟檔案
  workbook = xlrd.open_workbook(r'F:\demo.xlsx')
  # 獲取所有sheet
  print workbook.sheet_names() # [u'sheet1', u'sheet2']
  sheet2_name = workbook.sheet_names()[1]
 
  # 根據sheet索引或者名稱獲取sheet內容
  sheet2 = workbook.sheet_by_index(1) # sheet索引從0開始
  sheet2 = workbook.sheet_by_name('sheet2')
 
  # sheet的名稱,行數,列數
  print sheet2.name,sheet2.nrows,sheet2.ncols
 
  # 獲取整行和整列的值(陣列)
  rows = sheet2.row_values(3) # 獲取第四行內容
  cols = sheet2.col_values(2) # 獲取第三列內容
  print rows
  print cols
 
  # 獲取單元格內容
  print sheet2.cell(1,0).value.encode('utf-8')
  print sheet2.cell_value(1,0).encode('utf-8')
  print sheet2.row(1)[0].value.encode('utf-8')
    
  # 獲取單元格內容的資料型別
  print sheet2.cell(1,0).ctype  


ctype : 0 empty,1 string, 2 number, 3 date, 4 boolean, 5 error

def set_style(name,height,bold=False):
  style = xlwt.XFStyle() # 初始化樣式
 
  font = xlwt.Font() # 為樣式建立字型
  font.name = name # 'Times New Roman'
  font.bold = bold
  font.color_index = 4
  font.height = height
 
  # borders= xlwt.Borders()
  # borders.left= 6
  # borders.right= 6
  # borders.top= 6
  # borders.bottom= 6
 
  style.font = font
  # style.borders = borders
 
  return style
 
 
#寫excel
def write_excel():
  f = xlwt.Workbook() #建立工作簿
 
  '''
  建立第一個sheet:
    sheet1
  '''
  sheet1 = f.add_sheet(u'sheet1',cell_overwrite_ok=True) #建立sheet
  row0 = [u'業務',u'狀態',u'北京',u'上海',u'廣州',u'深圳',u'狀態小計',u'合計']
  column0 = [u'機票',u'船票',u'火車票',u'汽車票',u'其它']
  status = [u'預訂',u'出票',u'退票',u'業務小計']
 
  #生成第一行
  for i in range(0,len(row0)):
    sheet1.write(0,i,row0[i],set_style('Times New Roman',220,True))
 
  #生成第一列和最後一列(合併4行)
  i, j = 1, 0
  while i < 4*len(column0) and j < len(column0):
    sheet1.write_merge(i,i+3,0,0,column0[j],set_style('Arial',220,True)) #第一列
    sheet1.write_merge(i,i+3,7,7) #最後一列"合計"
    i += 4
    j += 1
 
  sheet1.write_merge(21,21,0,1,u'合計',set_style('Times New Roman',220,True))
 
  #生成第二列
  i = 0
  while i < 4*len(column0):
    for j in range(0,len(status)):
      sheet1.write(j+i+1,1,status[j])
    i += 4
 
  f.save('demo1.xlsx') #儲存檔案

write_merge(x, x + m, y, w + n, string, sytle)
x表示行,y表示列,m表示跨行個數,n表示跨列個數,string表示要寫入的單元格內容,style表示單元格樣式。其中,x,y,w,h,都是

以0開始計算的。