实践出真知,这次我们就通过一些实例来巩固一下用Python的openpyxl模块处理Excel的一些操作吧!

一、乘法表

创建程序,从命令行接收数字N,在一个Excel电子表格中创建一个N×N的乘法表。行1和列A用作标签,应该使用粗体。

# coding=utf-8

import openpyxl

from openpyxl.utils import get_column_letter

from openpyxl.styles import Font

N = int(input('请输入一个数字:'))

wb = openpyxl.Workbook()

sheet = wb.active

fontObj = Font(bold=True)

# 先将第一行和第一列的数据写入,并设置字体样式

for i in range(1, N + 1):

sheet[get_column_letter(i + 1) + str(1)] = i

sheet[get_column_letter(i + 1) + str(1)].font = fontObj

sheet['A' + str(i + 1)] = i

sheet['A' + str(i + 1)].font = fontObj

# 写入其他行的数据

for i in range(2, N + 2):

for j in range(2, N + 2):

sheet.cell(row=i, column=j).value = sheet.cell(row=1, column=j).value * sheet.cell(row=i, column=1).value

# 保存文件

wb.save('D:\\PythonCodes\\multiplicationTable.xlsx')

运行以上程序并在命令行输入8得到的表格为:

python粗糙集知识约简程序 python 粗体_字符串

二、空行插入程序

创建一个程序,它接手两个整数和一个文件名字符串作为命令行参数,我们将第一个整数称作N,第二个整数称作M。程序应当从第N行开始,在电子表格中插入M个空行。

程序可以这样写:读入电子表格的内容,然后在写入新的电子表格时,利用 for 循环拷贝前面的N行。对于剩下的行,行号加上M,写入新的电子表格。

# coding=utf-8

import openpyxl

N = int(input("输入N:"))

M = int(input("输入M:"))

string = input("输入文件名:")

# 读取文件

wb1 = openpyxl.load_workbook("D:\\PythonCodes\\Produce.xlsx")

sheet1 = wb1.active

# 创建新的workbook对象

wb2 = openpyxl.Workbook()

sheet2 = wb2.active

# 循环遍历表格

for i in range(1, sheet1.max_row + 1):

for j in range(1, sheet1.max_column + 1):

# N行之前拷贝

if i < N:

sheet2.cell(row=i, column=j).value = sheet1.cell(row=i, column=j).value

else:

sheet2.cell(row=i+M, column=j).value = sheet1.cell(row=i, column=j).value

wb2.save(string)

运行以上程序并将其与原来的表格对比:

python粗糙集知识约简程序 python 粗体_电子表格_02

python粗糙集知识约简程序 python 粗体_字符串_03

三、电子表格单元格翻转程序

编写一个程序,翻转电子表格中行和列的单元格。例如,第5行第3列的值将出现在第3行第5列(反之亦然)。这应该针对电子表格中的所有单元格进行。

程序可以这样写:利用嵌套的 for 循环,将原来电子表格的数据赋给行列互换后的新的电子表格。

# coding=utf-8

import openpyxl

# 读取文件

wb1 = openpyxl.load_workbook("D:\\PythonCodes\\reverse.xlsx")

sheet1 = wb1.active

# 创建新的workbook对象

wb2 = openpyxl.Workbook()

sheet2 = wb2.active

# 循环遍历原来的表格

for i in range(1, sheet1.max_row + 1):

for j in range(1, sheet1.max_column + 1):

# 新的表格行列翻转,赋值

sheet2.cell(row=j, column=i).value = sheet1.cell(row=i, column=j).value

# 保存文件

wb2.save('D:\\PythonCodes\\reverse_copy.xlsx')

运行以上代码,将得到的表格与原来表格对比:

python粗糙集知识约简程序 python 粗体_文本文件_04

python粗糙集知识约简程序 python 粗体_电子表格_05

四、文本文件到电子表格

编写一个程序,读入几个文本文件的内容,并将这些内容插入到一个电子表格,每行写入一行文本。第一个文本文件中的行将写入列A中的单元格,第二个文本文件中的行将写入B中的单元格。

利用 File 对象的 readlines() 方法,返回一个字符串的列表,每个字符串就是文件中的一行。对于第一个文件,将第一行输出到列1行1。第二行应该写入列1行2,以此类推。下一个用 readlines() 读入的文件将写入列2,再下一个写入列3,以此类推。

# coding=utf-8

import openpyxl

wb = openpyxl.Workbook()

sheet = wb.active

# 读取第一个文本

# 创建File对象

with open("D:\\PythonCodes\\1.txt") as f1:

list1 = f1.readlines()

for i in range(1, len(list1) + 1):

sheet.cell(row=i, column=1).value = list1[i - 1]

# 读取第二个文本

with open("D:\\PythonCodes\\2.txt") as f2:

list2 = f2.readlines()

for i in range(1, len(list1) + 1):

sheet.cell(row=i, column=2).value = list2[i - 1]

# 读取第三个文本

with open("D:\\PythonCodes\\3.txt") as f3:

list3 = f3.readlines()

for i in range(1, len(list3) + 1):

sheet.cell(row=i, column=3).value = list3[i - 1]

wb.save('D:\\PythonCodes\\example_.xlsx')

运行上述代码比对原来的文本文档和得到的Excel文档:

python粗糙集知识约简程序 python 粗体_python处理excel的包_06

python粗糙集知识约简程序 python 粗体_字符串_07

五、电子表格到文本文件

编写一个程序,执行前一个程序相反的任务。该程序应该打开一个电子表格,将列A中的单元格写入一个文本文件,将列B中的单元格写入另一个文本文件,将列B中的单元格写入另一个文本文件,以此类推。

# coding=utf-8

import openpyxl

wb = openpyxl.load_workbook('D:\\PythonCodes\\example_.xlsx')

sheet = wb.active

with open('example_1.txt', 'w') as f1:

for i in range(1, sheet.max_row + 1):

f1.write(sheet.cell(row=i, column=1).value)

f1.close()

with open('example_2.txt', 'w') as f2:

for i in range(1, sheet.max_row + 1):

f2.write(sheet.cell(row=i, column=2).value)

f2.close()

with open('example_3.txt', 'w') as f3:

for i in range(1, sheet.max_row + 1):

f3.write(sheet.cell(row=i, column=3).value)

f3.close()

python粗糙集知识约简程序 python 粗体_电子表格_08

python粗糙集知识约简程序 python 粗体_python处理excel的包_09

我是快斗,程序不一定是最简洁最好用的,欢迎大家的批评指正!