0
点赞
收藏
分享

微信扫一扫

Python实现读写CSV和Excel

是归人不是过客 2022-05-02 阅读 97
python

CSV文件的读写

基本格式:

  • 需要导入模块:import csv
import csv

# csv表头
headers = []
# csv数据
rows = []

# 写入的数据为列表结构
with open('test1.csv', 'w') as w:
    # 创建一个csv的writer对象
    w_csv = csv.writer(w)
    # 写入csv表头--写入一行
    w_csv.writerow(headers)
    # 写入csv数据--写入多行
    f_csv.writerows(rows)

# 写入的数据为字典类型
with open('test2.csv', 'w') as w:
    # 创建一个csv的DictWriter对象
    w_csv = csv.DictWriter(w, ['字典键1','键2','...'])
    # 写入一行当表头,即字典键名
    w_csv.writeHeader()
    # 写入对行数据,即字典的所有值
    w_csv.writerows(rows)

# 读取CSV数据
with open('text1.csv') as r:
    # 创建一个DictReader对象
    r_csv = csv.DictReader(r)
    for row in r_csv:
        # 字典键,即csv的表头名
        print(row.get('字典键1'), row.get('字典键2'), row.get('...'))

CSV实例:

import csv
headers = [
    '姓名','性别','年龄'
]
rows = [
    ['a','男','18'],
    ['b','女','19'],
    ['c','男','20']
]
with open('test.csv', 'w') as w:
    w_csv = csv.writer(w)
    w_csv.writerow(headers)
    f_csv.writerows(rows)


Excel表格的读写

使用xlwtxlrd的基本格式:

  • import xlwt:写入Excel数据的模块
import xlwt

# 创建表格对象
workbook = xlwt.Workbook(encoding="utf-8")
# 创建工作表
worksheet = workbook.add_sheet('sheet1')
# 写入数据,第一个参数为'行',第二个参数为'列',第三个参数为'内容'
work.sheet.write(0,0,'内容')
# 保存数据表
workbook.save('xxx.xls')
  • import xlrd:读取Excel数据的模块
import xlrd

# 打开Excel文件
workbook = xlrd.open_workbook('excel.xls')
# 设置需要获取的工作表
table = workbook.sheet_by_name('sheet1')
# 获取总行数或总列数
row_count = table.nrows
col_count = table.ncols
# 获取整行或整列的值(返回列表)
row_list = table.row_values(行号)
col_list = table.col_values(列号)
# 获取某一单元格的内容
val = table.cell(行号,列号).value

使用xlwt写入Excel实例:

  • 保存九九乘法表:
import xlwt
workbook = xlwt.Workbook(encoding="utf-8")
worksheet = workbook.add_sheet('sheet1')
# 九九乘法表
for i in range(1,9+1):
    for j in range(1, i+1):
        worksheet.write(i-1,j-1,"%d * %d = %d" % (j,i,i*j))
# 保存表格
workbook.save("九九乘法表.xls")

使用openpyxl的基本格式:

  • 读取Excel数据:
# 导入模块
from openpyxl import load_workbook

# 需要操作的表
wb = load_workbook('表所在路径')
# 获取Excel文件的所有sheet名称
xxx = wb.sheetnames
# 选择sheet
xxx = wb["sheet1"]
# 获取某一单元格的内容
xxx = sheet.call(行号,列号).value
xxx = sheet["A1"].value

# 循环遍历所有sheet
for sheet in wb:
    cell = sheet["A1"].value
# 获取所有行或所有列
for row in sheet.rows:
    row[x].value
for col in sheet.columns:
    col[x].value
  • 写入Excel数据:
from openpyxl import load_workbook

# 在原有表格里追加内容
wb = load_workbook("xxx.xlsx")
sheet = wb["sheet1"]
cell = sheet.cell(x,y)
cell.value = "需要添加的内容"
wb.save("xxx.xlsx")

# 创建新的excel表格
wb = workbook.Workbook()
sheet = wb["sheet1"]
cell = sheet.cell(x,y)
cell.value = "需要添加的内容"
wb.save("xxx.xlsx")
  • 其他常用操作:
    • 创建新sheet:
      • wb.create_sheet("名称",下标位置)
    • 修改sheet名称:
      • sheet.title = "新名"
    • 设置默认打开的sheet:
      • wb.active = sheet下标
    • 复制sheet:
      • xxx = wb.copy_worksheet(wb["原sheet"])
      • xxx.title = "新sheet"
    • 删除sheet:
      • del wb["sheet"]

两者的区别:

  1. xlwt单个表格只能存储65000多行,而openpyxl单个sheet可以存储101万行;
  2. xlwt的文件名后缀为xls;而openpyxl的文件名后缀为xlsx;
  3. xlwt写入数据时从0行0列开始;openpyxl从1行1列开始。
举报

相关推荐

0 条评论