1. 基本语法
(1)模块导入
import openpyxl
(2)读取表格
wb = openpyxl.load_workbook('文本文件到表格.xlsx')
sheet = wb.get_active_sheet() #获得当前sheet表
(3)写入表格
wb = openpyxl.Workbook() #创建一个workbook对象
sheet = wb.get_active_sheet()
sheet.title = '12.13.1.xlsx' #创建sheet名字
wb.save( '12.13.1.xlsx')
(4)常用函数
rowmax = sheet.max_row #当前表格最大行数
clnmax = sheet.max_column #当前表格最大列数
from openpyxl.styles import Font #字体修改函数
fontobj = Font(name = 'Times New Roman' , size = 24,bold = True, italic = True) #字体名称,字号,粗体,斜体
sheet['A3'].font =fontobj
sheet.row_dimensions[1].height =70 #修改行高
sheet.column_dimensions['B'].width = 20 #修改列宽
#图表
refobj = openpyxl.chart.Reference(sheet,(1,1),(10,1)) #创建Reference对象 (表格对象,左上角起始数据,右下角结束数据位置)
seriesobj = openpyxl.chart.Series(refobj,title = 'First Series') #创建Series对象
chartobj = openpyxl.chart.BarChart() #图表类型 : .lineChart ScatterChar PieChart 折线图、散点图、饼图
chartobj.append(seriesobj) #添加数据构成图表
2.课后习题
1. 创建乘法表
输入N,创建N*N的乘法表
import openpyxl
from openpyxl.styles import Font
wb = openpyxl.Workbook()
sheet = wb.get_active_sheet()
sheet.title = '12.13.1.xlsx'
n = int(input("创造一个N行N列的乘法表,请输入N: ")) #注意int类型!!
fontobj = Font(bold = True)
for i in range(1,n+1): #其中一行一列表示乘数
sheet.cell(row = 1,column = i+1).value = i
sheet.cell(row=1, column=i + 1).font = fontobj #第一行粗体
sheet.cell(row = i+1,column = 1).value = i
sheet.cell(row=i + 1, column=1).font = fontobj #第一列粗体
for j in range(2,i+2):
for k in range(2,i+2):
sheet.cell(row = j,column = k).value = (j-1)*(k-1)
sheet['A1'] = None
wb.save( '12.13.1.xlsx')
2. 空行插入程序
输入两个整数N,M,程序从第N行开始,在电子表格中插入M个空行
import openpyxl
from openpyxl.styles import Font
wb = openpyxl.Workbook()
sheet = wb.get_active_sheet()
sheet.title = '12.13.1.xlsx'
n = int(input("创造一个N行N列的乘法表,请输入N: ")) #注意int类型!!
fontobj = Font(bold = True)
for i in range(1,n+1): #其中一行一列表示乘数
sheet.cell(row = 1,column = i+1).value = i
sheet.cell(row=1, column=i + 1).font = fontobj #第一行粗体
sheet.cell(row = i+1,column = 1).value = i
sheet.cell(row=i + 1, column=1).font = fontobj #第一列粗体
for j in range(2,i+2):
for k in range(2,i+2):
sheet.cell(row = j,column = k).value = (j-1)*(k-1)
sheet['A1'] = None
wb.save( '12.13.1.xlsx')
3. 电子表格翻转程序
将电子表格中所有行列翻转,如第5行3列→第3行第5列
(思想:利用嵌套for循环将每个单元格的数据读入一个二维列表)
import openpyxl
wb = openpyxl.load_workbook('12.13.2.xlsx')
sheet1 = wb.get_active_sheet()
nb = openpyxl.Workbook()
sheet2 = nb.get_active_sheet()
rowmax = sheet1.max_row
clmmax = sheet1.max_column
#二维列表创建方法
sheetdata = [[0 for col in range(clmmax)] for row in range(rowmax)] #创建二位列表存储原数据
for i in range(1,rowmax+1):
for j in range(1,clmmax+1):
sheetdata[i-1][j-1] = sheet1.cell(row = i, column = j).value
sheet2.cell(row = j, column = i).value = sheetdata[i-1][j-1]
nb.save('12.13.3 单元格翻转.xlsx')
#附二位列表初始化方法2
# nums = []
# rows = eval(input("请输入行数:"))
# columns = eval(input("请输入列数:"))
#
# for row in range(rows):
# nums.append([])
# for column in range(columns):
# num = eval(input("请输入数字:"))
# nums[row].append(num)
# print(nums)
4. 文本文件到表格
读入几个文本中的文件,将这些内容插入到一个Excel中,每一列表示一个文件,每一行表示一个文件的一行文本内容,如第一个文件共五行,应占据表格第一列的前五行,第二个文件共两行,应占据表格第二列的前两行
import openpyxl
import os
txtfiles = [] #找到当前目录所有的txt文件
for txt in os.listdir('.'):
if txt.endswith('.txt'):
txtfiles.append(txt)
wb = openpyxl.Workbook()
sheet = wb.get_active_sheet()
j=1
for file in txtfiles:
txt = open(file,'r')
i = 1 #第二列从第一行重新开始
for line in txt.readlines():
sheet.cell(row = i,column =j ).value = line
i += 1
j += 1
wb.save('文本文件到表格.xlsx')
5. 电子表格到文件
和前一个程序相反,将第一列的内容写入一个文件,将第二列的内容写入一个文件
import openpyxl
wb = openpyxl.load_workbook('文本文件到表格.xlsx')
sheet = wb.get_active_sheet()
rowmax = sheet.max_row
clnmax = sheet.max_column
for i in range(1,clnmax+1):
f = open('file'+str(i)+'txt','w') #创建新的txt文件
for j in range(1,rowmax+1):
content = sheet.cell(row = j ,column = i).value
if content != None: #一定要记得 判断 内容 是否为空!!
f.write(content)
f.close()