0%

使用Python处理Excel,CSV和JSON

使用Python处理Excel,CSV文件和JSON文件

python处理excel

文档:https://openpyxl.readthedocs.io/en/stable/

安装openpyxl模块

pip install openpyxl

读取excel

import openpyxl

wb = openpyxl.load_workbook('C:\\Users\\test.xlsx') #返回Workbook对象
wb.sheetnames #返回所有工作表名称的字符串列表

sheet = wb['Sheet'] #wb.get_sheet_by_name('Sheet')
sheet1 = wb.active

sheet['A'] #返回第一列
sheet['A1'].value #.row .column .coordinate(r+c)
sheet.cell(row=1, column=1).value
sheet.max_row #返回一个整数.max_column

openpyxl.cell.column_index_from_string() #列字母转换为数字,A→1
openpyxl.cell.get_column_letter() #数字转换为列字母

#切片,遍历
for rowObj in sheet['A1':'D14']: #每个元组代表一行,按行遍历整个区域
for cellObj in rowObj: #遍历行中的每个单元格
print(cellObj.coordinate, cellObj.value)

for cellObj in list(sheet.rows)[0]: #按行按列遍历,或者 sheet[1] | sheet['A']
print(cellObj.value)

写入excel

import openpyxl

wb = openpyxl.Workbook() #新建一个空的Workbook对象
sheet = wb.active
sheet.title = 'test'
sheet['A1'] = 'test' #将值写入单元格

wb.create_sheet(index=0, title='ttest') #新建一个工作表,返回Worksheet对象
wb.remove(wb['Sheet']) #接受一个Worksheet对象作为其参数
wb.save('C:\\Users\\test.xlsx') #保存变更,不同名或不同位置会创建副本

应用

更新excel表

import openpyxl

update_data = {'apple':5,
'lemon':1,
'orange':2} #待更新数据保存在字典中
wb = openpyxl.load_workbook('C:\\Users\\test.xlsx')
sheet = wb['Sheet']
for rowNum in range(2, sheet.max_row+1):
updatedName = sheet.cell(row=rowNum, column=1).value
if updatedName in update_data:
sheet.cell(row=rowNum, column=2).value = update_data[updatedName]
wb.save('C:\\Users\\test_updated.xlsx')

字体风格

from openpyxl.styles import Font
fontObj = Font(name='Calibri', size=12, bold=true, italic=true)
sheet['A1'].font = fontObj

公式

sheet.row_dimensions[1].height = 0-409
sheet.column_dimensions['A'].width = 0-255

行高列宽

sheet.row_dimensions[1].height = 0-409
sheet.column_dimensions['A'].width = 0-255

合并拆分冻结

sheet.merge_cells('A1:D3')
sheet['A1'] = 'merged' #合并后单元格的值

sheet.unmerge_cells('A1:A2')

sheet.freeze_panes = 'A2' #冻结左上部分

python处理CSV文件

CSV文件

csv全称’Comma-Separated Values‘,每行对应电子表格中的一行,单元格之间用逗号分隔。

  • 值没有类型,全为字符串
  • 无多个工作表
  • 不能嵌入图像或图表
  • 无字体大小和颜色设置
  • 无法操作单元格,宽高合并等

Reader对象

import csv

openFile = open('test.csv') #返回一个File对象
fileReader = csv.reader(openFile) #返回一个Reader对象,按行读取
fileData = list(fileReader) #fileData[0][0]

for row in fileReader:
print('row'+str(fileReader.line_num)+str(row)) #对于大型CSV文件,避免将文件一次性装入内存

Write对象

import csv

openFile = open('test.csv', 'w', newline='') #返回一个File对象
fileWrite = csv.writer(openFile) #返回一个Reader对象,按行读取
fileWrite.writerow([1, 'a,b', 2, 'b'])
openfile.close()

fileWrite = csv.writer(openFile, delimiter='\t', lineterminator='\n\n')
#delimiter指定分隔符 lineterminator指定行终止符,默认\n

python处理JSON文件

JSON文件,全称JavaScript Object Notation,是JavaScript程序编写数据结构的原生方式,
JSON不能表示Pyton特有的对象,可以存储:字符串、整型、浮点型、布尔型、列表、字典和NoneType。

loads()

import json

jsonString = '{"name":"asher", "isCat":true, "num":1}'
jsonData = json.loads(jsonString) #返回一个Python字典

dumps()

import json

pythonData = '{'name':'asher', 'isCat':True, 'num':1}'
jsonString = json.dumps(json)