python3操作excel文件和.docx文件

2018-09-06  本文已影响17人  test小星星

读取excel文件

pip install xlrd # 安装xlrd模块

import xlrd  # 导入xlrd模块

# 打开excel文件

data = xlrd.open_workbook('文件路径及文件名')

# 获取读入的文件的

sheet = data.sheet_by_index(0)  # 索引的方式,从0开始

# 获取行数

nrows = sheet.nrows

# 获取列数

ncols = sheet.ncols

# 获取整行的值

sheet.row_values(0) # 第一行的值

# 获取整列的值

sheet.col_values(0) # 第一列的值

# 获取某个单元格的值

data = sheet.cell(x, y).value

对已有的excel更新(修改)

import xlrd
from xlutils.copy import copy  # 导入xlutils.copy

# 打开文件
file = xlrd.open_workbook('文件路径', formatting_info=True)  # formatting_info=True保留文档单元格的格式,(默认False)
# 拷贝一份新的文件
new_file = copy(xls_fils)  
# 此对象拥有write方法
sheet = new_file.get_sheet(0)
# 要修改的单元格
sheet.write(4, 7, data)
# 修改后的保存路径
new_file.save(save_path)

formatting_info还没有对新版本的xlsx的格式完成兼容,所以在读取xlsx格式的Excel时,传入formatting_info会直接抛出异常:"formatting_info=True not yet implemented"
解决办法:修改为xlsx为xls。

更改文件格式

# xls更改为xlsx
import win32com.client
path = r'E:\修改文件\test.xls'
excel = win32com.client.gencache.EnsureDispatch('Excel.Application')  # 要看MIME手册
# 打开被修改的文件
wb = excel.Workbooks.Open(path)
# 修改文件(51是xlsx格式)然后保存。  56是xls
wb.SaveAs(path + 'x', FileFormat=51)
wb.Close()
excel.Application.Quit()

获取某个目录的所有文件

import os    

for root, dirs, filesin os.walk(file_dir):

        print(root)    # 当前目录路径

        print(dirs)    # 当前路径下所有子目录

        print(files)    # 当前路径下所有非目录子文件

读取.doxc文件

# 安装doxc库

pip install docx

# 导入docx库

import docx

# 打开文件

data = docx.Document('文件路径及文件名') 

# 读文件

for file in data.paragraphs:
    print(file.text)    # 逐行读取

读取.docx文件中的表格数据

# 获取文件中的表格集 

tables = data.tables   

 # 获取文件中的第一个表格

table = tables[0]   

for i in range(1,len(table.rows)):    #从表格第二行开始循环读取表格数据
        result = table.cell(i,0).text + " " +  table.cell(i,1).text    # 读取第二行开始的第一个单元格和第二个单元格
        print(result)

将doc转为docx

from win32com import client as wc
word = wc.Dispatch("Word.Application")
doc = word.Documents.Open('.doc文件路径及文件名')
doc.SaveAs('转换成docx文件后保存的路径', 12) # 12为docx
doc.Close()
word.Quit()

CSV文件操作

import csv
import codecs
from itertools import islice

# 读取本地 CSV 文件
data = csv.reader(codecs.open('user_info.csv', 'r', 'utf_8_sig'))

# 用户存放用户数据
users = []

# 循环输出每一行信息
for line in islice(data, 1, None):
    users.append(line)

islice用于切片操作

islice(iterable, [start,] stop [, step]) # --> islice object
islice(f,0,10) # 取文件的前10行
islice(f,100,300) #生成 文件 100 到  300 行的生成器,不包含第300行
islice(f,500) #生成500行以内的生成器
islice(f,500,None) #生成500行以后的生成器
for line in islice(f,0,10):
    print line
上一篇下一篇

猜你喜欢

热点阅读