相关文章:

全网最详细超长python学习笔记、14章节知识点很全面十分详细,快速入门,只用看这一篇你就学会了!

【1】windows系统如何安装后缀是whl的python库

【2】超级详细Python-matplotlib画图,手把手教你画图!(线条颜色、大小、线形、标签)

【3】超级详细matplotlib使用教程,手把手教你画图!(多个图、刻度、标签、图例等)

【4】python读写文件操作---详细讲解!

【5】数据可视化pygal,画出美观的图表

python读写文件详细讲解!

1.操作xls格式的表格文件:

读取:xlrd

写入:xlwt

修改(追加写入):xlutils

2.操作xlsx格式的表格文件:

读取/写入:openpyxl

一. 读取Excel

1. 导入读取库

import xlrd

2. 打开Excel文件读取数据

data = xlrd.open_workbook('xxx.xls')

3. 获取一个工作表

table = data.sheets()[0] #通过索引顺序获取

table = data.sheet_by_index(0) #通过索引顺序获取

table = data.sheet_by_name(u'Sheet1')#通过名称获取

4. 获取整行和整列的值(数组)

print (table.row_values(0))

print (table.col_values(0))

5. 获取行数和列数

nrows = table.nrows

ncols = table.ncols

print(nrows)

print(ncols)

6. 循环行列表数据

for i in range(nrows):

print(table.row_values(i))

7. 单元格

#单元格: 第几行,第几列

cell_A1 = table.cell(0, 0).value

cell_C4 = table.cell(3, 2).value

print(cell_A1)

print(cell_C4)

8. 使用行列索引

#使用行列索引

cell_A1 = table.row(0)[0].value

cell_B2 = table.col(1)[0].value

print(cell_A1)

print(cell_B2)

二. 导出Excel 

from openpyxl import Workbook

wb = Workbook()

# 创建一个工作簿

ws1 = wb.active

# 至少建立一个工作表

ws = wb.create_sheet("mySheet", 0)

ws1.title = "New Title"

# 设置表的名字

ws.sheet_properties.tabColor = "1072BA"

# 改变表选项卡的颜色

ws["A4"] = 4

ws.cell(row=1, column=1, value=1)

# 两种修改表格内容的方法, cell的方法暂时还弄不懂它第一个参数的意义。

print(ws["A2"].value)

# 访问A列2行的值,得到cell直接访问它的value属性,就是目标表格的值。

wb.save("sample.xlsx")

# 保存

xls格式的表格文件:

# coding=UTF-8

import xlrd

import xlwt

from xlutils.copy import copy

def write_excel_xls(path, sheet_name, value):

index = len(value) # 获取需要写入数据的行数

workbook = xlwt.Workbook() # 新建一个工作簿

sheet = workbook.add_sheet(sheet_name) # 在工作簿中新建一个表格

for i in range(0, index):

for j in range(0, len(value[i])):

sheet.write(i, j, value[i][j]) # 像表格中写入数据(对应的行和列)

workbook.save(path) # 保存工作簿

print("xls格式表格写入数据成功!")

def write_excel_xls_append(path, value):

index = len(value) # 获取需要写入数据的行数

workbook = xlrd.open_workbook(path) # 打开工作簿

sheets = workbook.sheet_names() # 获取工作簿中的所有表格

worksheet = workbook.sheet_by_name(sheets[0]) # 获取工作簿中所有表格中的的第一个表格

rows_old = worksheet.nrows # 获取表格中已存在的数据的行数

new_workbook = copy(workbook) # 将xlrd对象拷贝转化为xlwt对象

new_worksheet = new_workbook.get_sheet(0) # 获取转化后工作簿中的第一个表格

for i in range(0, index):

for j in range(0, len(value[i])):

new_worksheet.write(i+rows_old, j, value[i][j]) # 追加写入数据,注意是从i+rows_old行开始写入

new_workbook.save(path) # 保存工作簿

print("xls格式表格【追加】写入数据成功!")

def read_excel_xls(path):

workbook = xlrd.open_workbook(path) # 打开工作簿

sheets = workbook.sheet_names() # 获取工作簿中的所有表格

worksheet = workbook.sheet_by_name(sheets[0]) # 获取工作簿中所有表格中的的第一个表格

for i in range(0, worksheet.nrows):

for j in range(0, worksheet.ncols):

print(worksheet.cell_value(i, j), "\t", end="") # 逐行逐列读取数据

print()

book_name_xls = 'xls格式测试工作簿.xls'

sheet_name_xls = 'xls格式测试表'

value_title = [["姓名", "性别", "年龄", "城市", "职业"],]

value1 = [["张三", "男", "19", "杭州", "研发工程师"],

["李四", "男", "22", "北京", "医生"],

["王五", "女", "33", "珠海", "出租车司机"],]

value2 = [["Tom", "男", "21", "西安", "测试工程师"],

["Jones", "女", "34", "上海", "产品经理"],

["Cat", "女", "56", "上海", "教师"],]

write_excel_xls(book_name_xls, sheet_name_xls, value_title)

write_excel_xls_append(book_name_xls, value1)

write_excel_xls_append(book_name_xls, value2)

read_excel_xls(book_name_xls)

xlsx格式的表格文件:

# coding=UTF-8

import openpyxl

def write_excel_xlsx(path, sheet_name, value):

index = len(value)

workbook = openpyxl.Workbook()

sheet = workbook.active

sheet.title = sheet_name

for i in range(0, index):

for j in range(0, len(value[i])):

sheet.cell(row=i+1, column=j+1, value=str(value[i][j]))

workbook.save(path)

print("xlsx格式表格写入数据成功!")

def read_excel_xlsx(path, sheet_name):

workbook = openpyxl.load_workbook(path)

# sheet = wb.get_sheet_by_name(sheet_name)这种方式已经弃用,不建议使用

sheet = workbook[sheet_name]

for row in sheet.rows:

for cell in row:

print(cell.value, "\t", end="")

print()

book_name_xlsx = 'xlsx格式测试工作簿.xlsx'

sheet_name_xlsx = 'xlsx格式测试表'

value3 = [["姓名", "性别", "年龄", "城市", "职业"],

["111", "女", "66", "石家庄", "运维工程师"],

["222", "男", "55", "南京", "饭店老板"],

["333", "女", "27", "苏州", "保安"],]

write_excel_xlsx(book_name_xlsx, sheet_name_xlsx, value3)

read_excel_xlsx(book_name_xlsx, sheet_name_xlsx)

运行结果:

相关总结:

1.xlwt 写入xls文件内容

import xlwt

book = xlwt.Workbook() # 新建工作簿

table = book.add_sheet('Over',cell_overwrite_ok=True) # 如果对同一单元格重复操作会发生overwrite Exception,cell_overwrite_ok为可覆盖

sheet = book.add_sheet('Test') # 添加工作页

sheet.write(1,1,'A') # 行,列,属性值 (1,1)为B2元素,从0开始计数

style = xlwt.XFStyle() # 新建样式

font = xlwt.Font() #新建字体

font.name = 'Times New Roman'

font.bold = True

style.font = font # 将style的字体设置为font

table.write(0,0,'Test',style)

book.save(filename_or_stream='excel_test.xls') # 一定要保存

2.xlrd读取xls文件内容

import xlrd

data = xlrd.open_workbook('excel_test.xls')

print(data.sheet_names()) # 输出所有页的名称

table = data.sheets()[0] # 获取第一页

table = data.sheet_by_index(0) # 通过索引获得第一页

table = data.sheet_by_name('Over') # 通过名称来获取指定页

nrows = table.nrows # 为行数,整形

ncolumns = table.ncols # 为列数,整形

print(type(nrows))

print(table.row_values(0))# 输出第一行值 为一个列表

# 遍历输出所有行值

for row in range(nrows):

print(table.row_values(row))

# 输出某一个单元格值

print(table.cell(0,0).value)

print(table.row(0)[0].value)

3.综合使用python-excel三大模块完成Excel内容追加写入

import xlwt,xlrd

from xlutils.copy import copy

data = xlrd.open_workbook('excel_test.xls',formatting_info=True)

excel = copy(wb=data) # 完成xlrd对象向xlwt对象转换

excel_table = excel.get_sheet(0) # 获得要操作的页

table = data.sheets()[0]

nrows = table.nrows # 获得行数

ncols = table.ncols # 获得列数

values = ["E","X","C","E","L"] # 需要写入的值

for value in values:

excel_table.write(nrows,1,value) # 因为单元格从0开始算,所以row不需要加一

nrows = nrows+1

excel.save('excel_test.xls')

4.使用openpyxl写xlsx文件

import openpyxl

data = openpyxl.Workbook() # 新建工作簿

data.create_sheet('Sheet1') # 添加页

#table = data.get_sheet_by_name('Sheet1') # 获得指定名称页

table = data.active # 获得当前活跃的工作页,默认为第一个工作页

table.cell(1,1,'Test') # 行,列,值 这里是从1开始计数的

data.save('excel_test.xlsx') # 一定要保存

5.使用openpyxl读取xlsx文件

import openpyxl

data = openpyxl.load_workbook('excel_test.xlsx') # 读取xlsx文件

table = data.get_sheet_by_name('Sheet') # 获得指定名称的页

nrows = table.rows # 获得行数 类型为迭代器

ncols = table.columns # 获得列数 类型为迭代器

print(type(nrows))

for row in nrows:

print(row) # 包含了页名,cell,值

line = [col.value for col in row] # 取值

print(line)

# 读取单元格

print(table.cell(1,1).value)

6.综合使用openpyxl对Excel内容追加写入

import openpyxl

data = openpyxl.load_workbook('excel_test.xlsx')

print(data.get_named_ranges()) # 输出工作页索引范围

print(data.get_sheet_names()) # 输出所有工作页的名称

# 取第一张表

sheetnames = data.get_sheet_names()

table = data.get_sheet_by_name(sheetnames[0])

table = data.active

print(table.title) # 输出表名

nrows = table.max_row # 获得行数

ncolumns = table.max_column # 获得行数

values = ['E','X','C','E','L']

for value in values:

table.cell(nrows+1,1).value = value

nrows = nrows + 1

data.save('excel_test.xlsx')

7.XlsxWriter

# !/usr/bin/python

# coding:utf-8

# xlsxwriter的基本用法

import xlsxwriter

# 1. 创建一个Excel文件

workbook = xlsxwriter.Workbook('demo1.xlsx')

# 2. 创建一个工作表sheet对象

worksheet = workbook.add_worksheet()

# 3. 设定第一列(A)宽度为20像素

worksheet.set_column('A:A',20)

# 4. 定义一个加粗的格式对象

bold = workbook.add_format({'bold':True})

# 5. 向单元格写入数据

# 5.1 向A1单元格写入'Hello'

worksheet.write('A1','Hello')

# 5.2 向A2单元格写入'World'并使用bold加粗格式

worksheet.write('A2','World',bold)

# 5.3 向B2单元格写入中文并使用加粗格式

worksheet.write('B2',u'中文字符',bold)

# 5.4 用行列表示法(行列索引都从0开始)向第2行、第0列(即A3单元格)和第3行、第0列(即A4单元格)写入数字

worksheet.write(2,0,10)

worksheet.write(3,0,20)

# 5.5 求A3、A4单元格的和并写入A5单元格,由此可见可以直接使用公式

worksheet.write(4,0,'=SUM(A3:A4)')

# 5.6 在B5单元格插入图片

worksheet.insert_image('B5','./demo.png')

# 5.7 关闭并保存文件

workbook.close()

参考链接:https://blog.csdn.net/qq_40676033/article/details/86555425?utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-1.baidujs&dist_request_id=&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-1.baidujs

参考链接

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。