Excel

xlrd与xlwt的基本操作(读写)

#xlrd读excel:
import xlrd
book = xlrd.open_workbook('data.xlsx')
sheet1 = book.sheets()[0]
nrows = sheet1.nrows
print('表格总行数',nrows)
cell_3_3 = sheet1.cell(2,2).value
print('第3行第3列的单元格的值:',cell_3_3)
ncols = sheet1.ncols
print('表格总列数',ncols)
row3_values = sheet1.row_values(2)
print('第3行值',row3_values)
col3_values = sheet1.col_values(2)
print('第3列值',col3_values)

#xlwt写excel
import xlwt
workbook = xlwt.Workbook()
worksheet = workbook.add_sheet('test')
worksheet.col(0).width = 4444   #第一列宽度
worksheet.write(0,0,'A1data')
worksheet.write_merge(0, 1, 6, 7,'源码')   #合并第1行到第二行的  第7和8列。后面是合并后写什么内容,如果合并本行的,前两个参数就写一样的
workbook.save('excelwrite.xls')

xlrd实现pandas功能(停更)

import xlrd
excel = xlrd.open_workbook("2020-06-10 已配送.xls")
sheet = excel.sheet_by_index(0) #通过索引读取sheet对象,第一个sheet的索引为"0"
row_the_first = sheet.row_values(0) #读取第1行的所有数据,并以列表的形式存储到row_3中
all_cell_data={}
for i in range(len(row_the_first)):  # 第几列
    one_col_data=sheet.col_values(i)[1:]  # 没有信息的会变成''
    all_cell_data[row_the_first[i]]=one_col_data
print(all_cell_data)

def read_excel(path):
    import xlrd
    excel = xlrd.open_workbook(path)
    sheet = excel.sheet_by_index(0)  # 通过索引读取sheet对象,第一个sheet的索引为"0"
    row_the_first = sheet.row_values(0)  # 读取第1行的所有数据,并以列表的形式存储到row_3中
    all_cell_data = {}
    for i in range(len(row_the_first)):  # 第几列
        one_col_data = sheet.col_values(i)[1:]  # 没有信息的会变成''
        all_cell_data[row_the_first[i]] = one_col_data
    return all_cell_data

xlrd操作

import xlrd
excel = xlrd.open_workbook("data.xls")

sheet = excel.sheet_by_index(0) #通过索引读取sheet对象,第一个sheet的索引为"0"
row_3 = sheet.row_values(2) #读取第3行的所有数据,并以列表的形式存储到row_3中
col_3 = sheet.col_values(2) #读取第3列的所有数据,并以列表list的形式存储到col_3中
cell_12_7 = sheet.cell_value(11,6)   #读取第12行第7列的数据,并存储到cell_12_7中
cell_11_11 = sheet.cell(10,10).value #读取第11行第11列的数据,并存储到cell_11_11中
cell_7_8 = sheet.row(6)[7].value       #读取第7行第8列的数据
cell_8_7 = sheet.cel(7)[6].value        #读取第8列第7行的数据
num_rows = sheet.nrows             #读取sheet的总行数
num_cols = sheet.ncols               #读取sheet的总列数

xlutils修改一个已经存在的excel文档

import xlwt       #导入xlwt模块
import xlrd       #导入xlrd模块
from xlutils.copy import copy       #导入import模块的copy函数,接下来就可以直接使用函数copy了。

fileName = "E:\\4.xls"
sheetName = "sheet1"

styleBoldRed = xlwt.easyxf('font: color-index red, bold on')   #设置字体,颜色为红色,加粗
oldWb = xlrd.open_workbook(fileName, formatting_info=True)   #使用xlrd.open_workbook函数打开文件,formatting_info=True表示保留该文件的格式
newWb = copy(oldWb)   #通过copy函数把oldWb copy到newWb,然后通过编辑newWb来实现编辑已经存在的文件。
newWs = newWb.get_sheet(0)   #读取第一个sheet
newWs.write(4, 0, "value1",styleBoldRed)    #第5行第1列写入值“value1”,格式采用styleBoldRed。
newWs.write(4, 1, "value2",styleBoldRed)   #第5行第2列写入值“value2”
newWs.write(4, 2, "value3",styleBoldRed)   #第5行第3列写入值“value3”
newWb.save(fileName)   #文件保存为"E:\\4.xls"

xlwt详细操作

import os,xlwt,datetime   #导入模块

data =xlwt.Workbook()   #新建一个Workbook
sheet = data.add_sheet(u"sheet")   #新建一个sheet,名称为'sheet'

style1 = xlwt.XFStyle()   #创建格式style1
style2 = xlwt.XFStyle()
style3 = xlwt.XFStyle()

#设置字体格式
font1 = xlwt.Font()   #创建font1
font1.name = 'Times New Roman'  #字体为'Times New Roman'
font1.bold = True   #加粗
font1.colour_index = 2  #字体颜色为红色,0 = Black, 1 = White, 2 = Red, 3 = Green, 4 = Blue, 5 = Yellow, 6 = Magenta, 7 = Cyan
font1.underline = xlwt.Font.UNDERLINE_DOUBLE  #下划线类型,UNDERLINE_DOUBLE 代表双下划线,另外还有 UNDERLINE_NONE, UNDERLINE_SINGLE, UNDERLINE_SINGLE_ACC, UNDERLINE_DOUBLE, UNDERLINE_DOUBLE_ACC
font1.escapement = xlwt.Font.ESCAPEMENT_SUPERSCRIPT   #设置上标
font1.family = xlwt.Font.FAMILY_ROMAN
font1.height = 0x190 #0x190是16进制,换成10进制为400,然后除以20,就得到字体的大小为20
style1.font = font1  #将创建的font1字体格式应用到style1上

font2 = xlwt.Font()   #创建font2
font2.name = "Algerian"    #字体为'Algerian'
font2.colour_index = 3   #字体颜色为绿色
font2.italic = True  #斜体
font2.struck_out = True   #删除线
font2.height = 0x258   #字体大小为30
style2.font = font2  #将创建的font2字体格式应用到style2上

#设置列宽
sheet.col(0).width = 6000
sheet.col(1).width = 12000
sheet.set_col_default_width(2)

#设置单元格对齐方式
alignment = xlwt.Alignment()    #创建alignment
alignment.horz = xlwt.Alignment.HORZ_CENTER   #设置水平对齐为居中,May be: HORZ_GENERAL, HORZ_LEFT, HORZ_CENTER, HORZ_RIGHT, HORZ_FILLED, HORZ_JUSTIFIED, HORZ_CENTER_ACROSS_SEL, HORZ_DISTRIBUTED
alignment.vert = xlwt.Alignment.VERT_CENTER   #设置垂直对齐为居中,May be: VERT_TOP, VERT_CENTER, VERT_BOTTOM, VERT_JUSTIFIED, VERT_DISTRIBUTED
style3.alignment = alignment   #应用alignment到style3上

#插入时间
style3.num_format_str = 'YYYY-MM-DD HH:MM:SS'   #设置时间格式
sheet.write(1,1,datetime.datetime.now(),style3)   #在第2行第2列插入当前时间,格式为style3

#设置单元格背景颜色
pattern_yellow = xlwt.Pattern()  #创建pattern_yellow
pattern_yellow.pattern = xlwt.Pattern.SOLID_PATTERN  #设置填充模式为全部填充
pattern_yellow.pattern_fore_colour = 5    #设置填充颜色为yellow黄色
style1.pattern = pattern_yellow  #把设置的pattern应用到style3上
pattern_red = xlwt.Pattern()  #创建pattern_red
pattern_red.pattern = xlwt.Pattern.SOLID_PATTERN   #设置填充模式为全部填充
pattern_red.pattern_fore_colour = 2  #设置填充颜色为red红色
style2.pattern = pattern_red  #把设置的pattern应用到style4上

#设置单元格边框
borders = xlwt.Borders()   #创建borders
borders.left = xlwt.Borders.DASHED #设置左边框的类型为虚线 May be: NO_LINE, THIN, MEDIUM, DASHED, DOTTED, THICK, DOUBLE, HAIR, MEDIUM_DASHED, THIN_DASH_DOTTED, MEDIUM_DASH_DOTTED, THIN_DASH_DOT_DOTTED, MEDIUM_DASH_DOT_DOTTED, SLANTED_MEDIUM_DASH_DOTTED, or 0x00 through 0x0D.
borders.right = xlwt.Borders.THIN  #设置右边框的类型为细线
borders.top = xlwt.Borders.DOTTED   #设置上边框的类型为打点的
borders.bottom = xlwt.Borders.THICK  #设置底部边框类型为粗线
borders.left_colour = 0x10  #设置左边框线条颜色
borders.right_colour = 0x20
borders.top_colour = 0x30
borders.bottom_colour = 0x40
style1.borders = borders    #将borders应用到style1上
style2.borders = borders    #将borders应用到style2上

sheet.write(3, 0, 'HuZhangdong', style1)   #在第4行第1列写入'HuZhangdong',格式引用style1
sheet.write(4, 0, 'YinMengran' , style2)   #在第5行第1列写入'YinMengran',格式引用style2

data.save(u'3.xls')   #保存到 e:\\3.xls

使用openpyxl读写(大文件可用)

import openpyxl#写大文件使用
def readExel(self):
    filename = r'D:\work\Excel_txtProcesss\new-微博-合并\58.xlsx'
    inwb = openpyxl.load_workbook(filename)  # 读文件
    sheetnames = inwb.get_sheet_names()  # 获取读文件中所有的sheet,通过名字的方式
    ws = inwb.get_sheet_by_name(sheetnames[0])  # 获取第一个sheet内容
    # 获取sheet的最大行数和列数
    rows = ws.max_row
    cols = ws.max_column
    for r in range(1,rows):
        for c in range(1,cols):
            print(ws.cell(r,c).value)
        if r==10:
            break

def writeExcel(self):
    outwb = openpyxl.Workbook()  # 打开一个将写的文件
    wb2 = openpyxl.load_workbook(path)  # 打开现有的excel
    outws = outwb.create_sheet(index=0)  # 在将写的文件创建sheet
    for row in range(1,70000):
        for col in range(1,4):
            outws.cell(row, col).value = row*2  # 写文件
        print(row)
    saveExcel = "D:\\work\\Excel_txtProcesss\\test.xlsx"
    outwb.save(saveExcel)  # 一定要记得保存

解决读取的不同类型数据会变形的问题

'''
https://www.cnblogs.com/yuanfang0903/p/11596804.html
'''

xlwt与openpyxl读写的模板

import xlrd
import openpyxl

# 创建表格
workbook = openpyxl.Workbook()  # 打开一个将写的文件,可以是本地文件
worksheet = workbook.create_sheet(index=0)  # 在将写的文件创建sheet
worksheet.cell(1, 1).value = '标题'
worksheet.cell(1, 2).value = '发文时间'
worksheet.cell(1, 3).value = '发文主体'
worksheet.cell(1, 4).value = '新闻正文'
row = 2

book = xlrd.open_workbook('address')#打开表格
sheet1 = book.sheets()[0]
nrows = sheet1.nrows
for nrow in range( nrows):
    #开始写
    worksheet.cell(row, 1).value = sheet1.cell(nrow, 0).value
    worksheet.cell(row, 2).value = sheet1.cell(nrow, 1).value
    worksheet.cell(row, 3).value = sheet1.cell(nrow, 2).value
    worksheet.cell(row, 4).value = sheet1.cell(nrow, 3).value
    row += 1
workbook.save('name.xlsx')



Word

常使用库:python-docx

将本地图片存储到word文档

想要利用Python来操作word文档可以使用docx模块.

安装: pip install python-docx

from docx import Document
from docx.shared import Inches
 
string = '文字内容'
images = '1.jpg'    # 保存在本地的图片
doc = Document()    # doc对象
doc.add_paragraph(string)   # 添加文字
doc.add_picture(images, width=Inches(2))     # 添加图, 设置宽度
doc.save('word文档.docx')     # 保存路径

控制鼠标键盘

'''
https://blog.csdn.net/m0_46521785/article/details/106339368
'''
Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐