Python学习笔记——week_8

第十二章 处理Excel电子表格

1.基本操作

#导入openpyxl
import openpyxl
wb = openpyxl.load_workbook('example.xlsx') #打开当前工作目录下的example.xlsx文件
wb.sheetnames  #获得工作薄中的所有表名的列表
sheet = wb['Sheet2'] #获得工作薄中名为Sheet2的工作表
sheet.title  #获得工作表名称
anothersheet = wb.active    #获得工作簿中的活动表(打开Excel首先出现的工作表)
sheet['A1'].value #查看Sheet2表中A1单元格的值
c=sheet['B1']
c.value   #查看值
c.row  #查看行
c.coliumn  #查看列
c.coordinate  #查看单元格
d = sheet.cell(row=4,column=2)  #适用于列属性列表较大时,得到一个单元格
#for循环打印B列
for i in range(1,7):
     print(sheet.cell(row=i,column=2).value)
sheet.max_row  #查看Sheet2中最大行
sheet.max_column  #查看Sheet2中最大列

#这些属性项目(sheetnames、title、active)目测只能在IDLE窗口键入之后查看,或者直接赋值到一个变量中

2.列字母和数字之间的转化

import openpyxl
#新版由openpyxl.utils导入
from openpyxl.utils import get_column_letter,column_index_from_string  
get_column_letter(1)  #'A'
get_column_letter(27)   #'AA'
get_column_letter(900)   #'AHP'
column_index_from_string('A') # 1
column_index_from_string('AA') # 27

3. 从表中提取特定的行和列

import openpyxl
wb = openpyxl.load_workbook('example.xlsx')
sheet = wb['Sheet2']
tuple(sheet['A1':'B3'])  #类似于Excel的选择框,输出维一个元组列出他的Cell对象
#循环输出每个单元格,默认先行后列
for row in sheet['A1':'B3']:
    for cell in row :
        print(cell.coordinate,cell.value)
    print('-----------------')
sheet['A']   #选定第1列(A列)
sheet['B']   #选定第2列(B列)
list(sheet.columns)[1]  #等价于上面(B列)
sheet['1']   #选定第1行 
list(sheet.rows)[0]  #等价于上面(第1行)

4. 表格录入

import openpyxl
wb = openpyxl.Workbook('example.xlsx')   
sheet = wb.active   
sheet.title   #输出初始名
sheet.title = 'new sheet'  #重命名Sheet名
wb.save('new_example.xlsx')  # 另存为一个新的表格
#工作表操作(这是在new_example.xlsx的继续操作)
wb.create_sheet()  #创建一个名为Sheet的工作表
wb.create_sheet(index=0,title='First Sheet')  #在工作表列表中0指针处创建一个名为First Sheet的工作表
wb.create_sheet(index=2,title='Middle Sheet')  #在工作表列表中0指针处创建一个名为Middle Sheet的工作表
wb.sheetnames
wb.remove(wb['First Sheet'])  #删除First Sheet工作表
sheet1 = wb['Middle Sheet']
sheet1['A1'] = 'Hello World'  #A1单元格赋值
wb.save('new_example.xlsx') #保存更改

5. 单元格格式

import openpyxl
from openpyxl.styles import Font
wb = openpyxl.Workbook('example.xlsx')
sheet1 = wb['Middle Sheet']
italic24Font = Font(name='Times New Roman',size = 24,bold = True, italic = True)  #格式维新罗马字体,24号,加粗,斜体。  
sheet1['A1'].font = italic24Font   #A1单元格设置为此格式
#键入公式
sheet1['A2'] = '=SUM(B1:B4)+2'   #求和公式,其他同理,调用load_workbook()时带有data_only=True时,单元格就会直接显示公式结果,而不是文本
#调整行和列
sheet1.row_dimensions[1].height = 20   #行高
sheet1.column_dimensions['A'].width = 20.0   #列宽
#合并拆分单元格
sheet1.merge_cells('A1:B2')  #合并
sheet1.unmerge_cells('A1:B2') #拆分
wb.save('new_example.xlsx') 
#图表
refObj = openpyxl.chart.Reference(sheet, min_row = 1, min_col = 1, max_row = 10, max_col = 1)  #做表的数据
seriesObj = openpyxl.chart.Series(refObj, title = 'First series')
chartObj = openpyxl.chart.BarChart()
chartObj.title = 'My Chart'
chartObj.append(seriesObj)
 
sheet.add_chart(chartObj, 'C5')    #C5表示图标开始位置

6.冻结窗格

调用sheet.freeze_panes语句冻结一个cell对象的左侧和上方的行列

语句 作用
sheet.freeze_panes = ’A2‘ 冻结第一行
sheet.freeze_panes=’B1‘ 冻结第一列
sheet.freeze_panes= ’C1‘ 冻结第一列和第二列(A和B列)
sheet.freeze_panes=’A1‘ 或 sheet.freeze_panes=None 无冻结

第十三章 处理PDF和Word文档

1. PDF基本操作

#导入程序包提取文本
import PyPDF2
 
Obj = open('hah.pdf','rb')  #打开pdf文件
Reader = PyPDF2.PdfFileReader(Obj)   #创建PdfFileReader对象
Reader.numPages   #获取PdfFileReader对象的页码属性
page = Reader.getPage(0)    # 得到第一页的Page对象
page.extractText()    # 返回该页文本的字符串(好像对中文不太管用)

#解密文件
Reader.isEncrypted  #查看PDF文件是否存在密码
Reader.decrypt('password')   #如果存在,不输入正确的密码就无法访问PdfFIleReader对象


2. 创建PDF

#创建PDF,不能新建,只能拷贝或者加一点修改
#拷贝页面
Obj = open('hah.pdf','rb') 
Reader = PyPDF2.PdfFileReader(Obj)
pdfWriter = PDF2.PdfFileWriter()  #创建PdfFileWriter对象
for pageNum in range(Reader.numPages):
    PageObj = Reader.getPage(pageNum)
    pdfWriter.addPage(PageObj)    #addPages()写入文本
NewFile = open('newFile.pdf','wb')  #创建新PDF文件
pdfWriter.writer(NewFile)  #传入
NewFile.close()
Obj.close()

其他

方法 作用
page.rotateClockwise(90) 使一个page对象顺时针旋转90°
page.mergePage(page2) 将两个page对象叠加,附加水印
pdfWriter.encrypt(‘password’) 在调用Write()方法保存之间,调用encrypt() 方法加密PDF

3.查看 Word 文档

#导入模块
import docx
#Document表示整个文档
doc =docx.Document('F:\毕业论文\我的论文\内容规范.docx')

len(doc.paragraphs) #查看段落总数

doc.paragraphs[0].text  #第一段的纯文本

len(doc.paragraphs[0].runs) #查看Run对象的总数,格式变化就会产生一个显得run

doc.paragraphs[0].runs[0].text #查看第一段第一个run的纯文本
#读取整个文档的函数
import docx
def getText(FileName):
    doc = docx.Document(FileName)
    fullText = []
    for para in doc.paragraphs:
        fullText.append(para.text)
    return '\n'.join(fullText)   #' '是每段缩进,'\n\n'是每段加空行

4.写入Word文档

import docx 
doc = docx.Documnet()
doc.add_paragraph('hello world!','title')  #以title格式添加一段
para1 = doc.add_paragraph('This is a second paragraph') #添加一段
para2 = doc.add_paragraph('This is a yet another paragraph') #再添加一段
para1.add_run(',add to sencond paragraph')  #再para1后添加一个run对象文本
doc.save('hah.docx')  #保存

方法 作用
doc.add_heading(‘Header’,‘0’) 第二个参数可选0-4,'0’表示标题是title格式用于文章顶部,1-4是不同的标题层次
doc.paragraphs[0].runs[0].add_break() 换行
doc.paragraphs[0].runs[0].add_break(docx.text.WD_BREAK.PAGE) 换页
doc.add_picture(‘picture.png’,width=docx.shared.Inches(1),height=docx.shared.Cm(4)) 插入图片

ps.Inches()表示英寸。Cm()表示厘米

第十四章 处理CSV文件和JOSN数据

1. 读取CSV数据

import csv
File = open('example.csv')
Reader = csv.reader(File)
for row in Reader:
    print('Row #' + str(Reader.line_num) + ' ' + str(row)) 

2. 写入CSV数据

import csv 
outputFile = open('new.csv','w',newline='')  #新建
#传递给Writer对象,delimiter= '\t'表示制表符分隔单元格,默认是逗号;lineterminator='\n\n'两倍行距,默认换行符
Writer = csv.writer(outputFile,delimiter= '\t',lineterminator='\n\n')
#写入每一行
Writer.writerow(['spam','eggs','bacon'])
Writer.writerow(['cat','dog','fly'])
outputFile.close()

3. JOSN模块

#模拟一个JSON数据类型
data = '{"name"="jack","isCat"="True","age"=3}'
import json
Value1 = json.loads(data)  #loads()读取数据
Value2 = json.dumps(data)  #dumps()读取数据
#查看
Value1
Value2


你可能感兴趣的:(学习笔记,学习,python,excel,csv)