python excel和csv處理操作記錄
阿新 • • 發佈:2019-02-07
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開始計算的。
讀檔案:
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開始計算的。