Microsoft Office编程(三)

1.CSV数据的写入和读取

Python标准库自带CSV模块,不用自行安装

摘自:玩转Python网络爬虫

  • CSV写入数据的整体思路
  1. open函数打开或新建CSV文件,模式为w,生成file对象
  2. CSV模块的writer()方法加载file对象
  3. 使用writerow()或writerows()写入一行或多行数据
#!/usr/bin/python3
# -*- coding: utf-8 -*-

import csv

#存在文件,打开csv文件;不存在文件,则新建文件
#不设置newline='',则每行数据会隔一行空白行
with open('csv_test.csv','w',newline='') as csvfile:
    #将文件加载到csv对象中
    writer=csv.writer(csvfile)
    #写一行数据
    writer.writerow(['姓名','年龄','电话'])
    #写入多行数据
    data=[
        ('张三','18','123456789'),
        ('李四','22','987654321')
    ]
    writer.writerows(data)
  • CSV读取数据的整体思路
  1. open函数打开CSV文件,模式为r,生成file对象
  2. CSV模块的writer()方法加载file对象
  3. 使用reader或DictReader读取数据
#!/usr/bin/python3
# -*- coding: utf-8 -*-

import csv

with open('csv_test.csv','r') as csvfile:
    #以列表形式输出
    reader=csv.reader(csvfile)
    #以字典形式输出
    #reader=csv.DictReader(csvfile)
    rows=[row for row in reader]
    print(rows)

2.Excel数据写入和读取

pyExcelerator只支持2003版本,openpyxl只支持2007版本,xlrd支持Excel任何版本的读取,xlwt支持Excel任何版本的写入

pip install xlrd

pip install xlwt

  • Excel写入数据的整体思路
  1. xlwt创建生成临时Excel对象
  2. 添加WorkSheets对象
  3. 单元格的位置有行列索引决定,索引从0开始
  4. 数据写入主要由write_merge()和write()实现,前者要合并单元格
  5. 设置数据格式是在写入数据传入参数style
#!/usr/bin/python3
# -*- coding: utf-8 -*-

import xlwt
#新建一个Excel文件
wb=xlwt.Workbook()
#新建一个Sheet
ws=wb.add_sheet('Python',cell_overwrite_ok=True)
#定义字体对齐方式对象
alignment=xlwt.Alignment()
#设置水平方向
alignment.horz=xlwt.Alignment.HORZ_CENTER
#设置垂直方向
alignment.vert=xlwt.Alignment.VERT_CENTER
#定义格式对象
style=xlwt.XFStyle()
style.alignment=alignment
#合并单元格write_merge(开始行,结束行,开始列,结束列,内容,格式)
ws.write_merge(0,0,0,5,'Python网络爬虫',style)
#写入数据wb.write(行,列,内容)
for i in range(2,7):
    for k in range(5):
        ws.write(i,k,i+k)
    #Excel公式xlwt.Formula
    ws.write(i,5,xlwt.Formula('SUM(A{0}:E{0})'.format(i+1)))
    '''
    插入图片,insert_bitmap(img,x,y,x1,y1,scale_x=0.8,scale_y=1)
    图片格式必须为bmp
    x表示行数,y表示列数
    x1表示相对原来位置向下偏移的像素
    y1表示相对原来位置向左偏移的像素
    scale_x,scale_y缩放比例
    '''
    ws.insert_bitmap('E:\\test.bmp',9,1,2,2,scale_x=0.3,scale_y=0.3)
    #保存文件
    wb.save('file.xls')
  • Excel读取数据的整体思路
  1. xlrd生成Workbook对象,并指向Excel文件
  2. 选择Workbook里某个Workbook对象
  3. 获取Workbook里数据的总行数和总列数
  4. 循环总行数和总列数,读取每个单元格的数据
#!/usr/bin/python3
# -*- coding: utf-8 -*-

import xlrd

wb=xlrd.open_workbook('file.xls')
#获取Sheets总数
ws_count=wb.nsheets
print('Sheets总数',ws_count)
#通过索引顺序获取Sheets
# ws=wb.sheets()[0]
# ws=wb.sheet_by_index(0)
#通过Sheets名获取Sheets
ws=wb.sheet_by_name('Python')
#获取整行的值
row_value=ws.row_values(3)
print('第4行数据',row_value)
#获取整列的值
col_value=ws.col_values(3)
print('第4列数据',col_value)
#获取所有行列
nrows=ws.nrows
ncols=ws.ncols
print('总行数:',nrows,',总列数:',ncols)
#获取某个单元格内容cell(行,列)
cell_F3=ws.cell(2,5).value
print('F3内容:',cell_F3)
#使用行列索引获取某个单元格内容
row_F3=ws.row(2)[5].value
col_F3=ws.col(2)[5].value
print('F3内容:',row_F3,'F3内容:',col_F3)

3.Word数据写入和读取

Python 读写Word需要第三方库扩展支持

pip install python-docx

  • Word写入数据的整体思路
  1. 创建生成临时Word对象并使用以下方法添加内容
  2. add_heading()添加标题
  3. add_paragraph()添加正文内容
  4. add_picture()插入图片
  5. add_table()添加表格
#!/usr/bin/python3
# -*- coding: utf-8 -*-

from docx import Document
from docx.shared import Inches

#创建对象
document=Document()
#添加标题,其中'0'代表标题类型,共有4中类型
document.add_heading('Python 爬虫',0)
#添加正文内容并设置部分内容格式
p=document.add_paragraph('Python 爬虫开发-')
#设置内容加粗
p.runs[0].bold=True
#添加内容并加粗
p.add_run('数据存储-').bold=True
#添加内容
p.add_run('Word-')
#添加内容并设置字体斜体
p.add_run('存储实例-').italic=True
#添加正文,设置“样式”=>“明显引用”
document.add_paragraph('样式'-'明显引用',style='IntenseQuote')
#添加正文,设置‘项目符号’
document.add_paragraph('项目符号1',style='ListBullet')
document.add_paragraph('项目符号2',style='ListNumber')
#添加图片
document.add_picture('test.png',width=Inches(1.25))
#添加表格
table=document.add_table(rows=1,cols=3)
hdr_cells=table.rows[0].cells
hdr_cells[0].text='Qty'
hdr_cells[1].text='Id'
hdr_cells[2].text='Desc'
for item in range(2):
    row_cells=table.add_row().cells
    row_cells[0].text='a'
    row_cells[1].text='b'
    row_cells[2].text='c'
#保存文件
document.add_page_break()
document.save('test.docx')
  • Word读取数据的整体思路
  1. 生成Word对象,并指向Word文件
  2. paragraphs()获取Word对象全部内容
  3. 循环paragraphs对象,获取每行数据写入列表
  4. 将列表转换为字符串
#!/usr/bin/python3
# -*- coding: utf-8 -*-

import docx
def readDocx(docxName):
    fullText=[]
    doc=docx.Document(docxName)
    #读取全部内容
    paras=doc.paragraphs
    #将每行数据存入列表
    for p in paras:
        fullText.append(p.text)

    return '\n'.join(fullText)
print(readDocx('test.docx'))
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值