python:对xlsx文件和csv文件的读写

项目地址:https://github.com/snjl/python.csvandxlsx.git

xlsx

写入

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
from openpyxl import Workbook
from openpyxl.utils import get_column_letter

# 在内存中创建一个workbook对象,而且会至少创建一个 worksheet
wb = Workbook()

#获取当前活跃的worksheet,默认就是第一个worksheet
ws = wb.active

#设置单元格的值,A1等于6(测试可知openpyxl的行和列编号从1开始计算),B1等于7
ws.cell(row=1, column=1).value = 6

#从第2行开始,写入9行10列数据,值为对应的列序号A、B、C、D...
for row in range(2,11):
for col in range (1,11):
ws.cell(row=row, column=col).value = get_column_letter(col)

#可以使用append插入一行数据
ws.append(["我","你","她"])

#保存
wb.save(filename="a.xlsx")

读取

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
from openpyxl import load_workbook

#打开一个workbook
wb = load_workbook(filename="a.xlsx")

#获取当前活跃的worksheet,默认就是第一个worksheet
#ws = wb.active

#当然也可以使用下面的方法

#获取所有表格(worksheet)的名字
sheets = wb.get_sheet_names()
#第一个表格的名称
sheet_first = sheets[0]
#获取特定的worksheet
ws = wb.get_sheet_by_name(sheet_first)

#获取表格所有行和列,两者都是可迭代的
rows = ws.rows
columns = ws.columns

#迭代所有的行
for row in rows:
line = [col.value for col in row]
print(line)

#通过坐标读取值
#print(ws.cell('A1').value) # A表示列,1表示行print ws.cell(row=1, column=1).value
print(ws['A1'].value)

csv写入

1
2
3
4
5
6
7
8
9
10
11
12
13
14
def save_csv(file_name, headers, rows):
"""
将表头和数据写入新生成的文件中
:param file_name: 生成文件名,例如xxx.csv
:param headers:文件第一行的表头元素,list存储
:param rows:文件数据,每一行为一个list
"""
# 保存格式必须以.csv,不然加上.csv
if file_name.endwith(".csv") is not True:
file_name += '.csv'
with open(file_name, 'a', encoding='utf8', errors='ignore', newline='') as f:
f_csv = csv.writer(f)
f_csv.writerow(headers)
f_csv.writerows(rows)

csv、xlsx写入内容封装

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
from openpyxl import Workbook
import csv


def save_excel(file_name, headers, rows):
"""
将表头和数据写入新生成的excel文件中,生成*.xlsx文件
:param file_name:文件名
:param headers:文件第一行的表头元素,list存储
:param rows:文件数据,每一行为一个list
"""
# 在内存中创建一个workbook对象,而且会至少创建一个 worksheet
wb = Workbook()
# 获取当前活跃的worksheet,默认就是第一个worksheet
ws = wb.active
ws.append(headers)
for row in rows:
ws.append(row)
# 保存格式必须以.xlsx结尾,不然加上.xlsx
if file_name.endswith(".xlsx") is not True:
file_name += '.xlsx'
wb.save(filename=file_name)
wb.close()


def save_csv(file_name, headers, rows):
"""
将表头和数据写入新生成的文件中
:param file_name: 生成文件名,例如xxx.csv
:param headers:文件第一行的表头元素,list存储
:param rows:文件数据,每一行为一个list
"""
# 保存格式必须以.csv,不然加上.csv
if file_name.endwith(".csv") is not True:
file_name += '.csv'
with open(file_name, 'a', encoding='utf8', errors='ignore', newline='') as f:
f_csv = csv.writer(f)
f_csv.writerow(headers)
f_csv.writerows(rows)
-------------本文结束 感谢您的阅读-------------