码迷,mamicode.com
首页 > 编程语言 > 详细

my-Python读写改Excel的方法

时间:2020-04-02 01:09:54      阅读:122      评论:0      收藏:0      [点我收藏+]

标签:row   center   win   +=   文件   time   python3   pre   就是   

(注:本文部分内容摘自互联网,由于作者水平有限,不足之处,还望留言指正。)

       面对疾风吧。

       回首往昔,更进一步。

       且随疾风前行,身后一许流星。

       正文:

       数据处理是Python的一大应用场景,而 Excel 则是最流行的数据处理软件。因此用 Python进行数据相关的工作时,难免要和 Excel 打交道。标准的 Excel 文件(xls/xlsx)具有较复杂的格式,并不方便像普通文本文件一样直接进行读写,需要借助第三方库来实现。

以下内容均在Python3上实现,如果是Python2,则需要修改编码。

一、读Excel表(xlrd模块)

      Xlrd模块只能用来读取数据操作,无法修改数据。

技术图片
import xlrd              #导入模块
data = xlrd.open_workbook(电影.xlsx‘)    #打开电影.xlsx文件读取数据
table = data.sheets()[0]       #读取第一个(0)表单
#或者通过表单名称获取 table = data.sheet_by_name(u‘Sheet1‘)
print(table.nrows)            #输出表格行数
print(table.ncols)            #输出表格列数
print(table.row_values(0))    #输出第一行
print(table.col_values(0))    #输出第一列
print(table.cell(0,2).value)  #输出元素(0,2)的值
技术图片

输出结果:

技术图片

原Excel表格情况:

技术图片

二、写Excel表(xlwt模块)

技术图片
import xlwt                            #导入模块
wb = xlwt.Workbook(encoding = ascii‘)  #创建新的Excel(新的workbook),建议还是用ascii编码
ws = wb.add_sheet(weng‘)               #创建新的表单weng
ws.write(0, 0, label = hello‘)         #在(0,0)加入hello
ws.write(0, 1, label = world‘)         #在(0,1)加入world
ws.write(1, 0, label = 你好)
wb.save(weng.xls‘)                     #保存为weng.xls文件
技术图片

在py文件路径下出现了这个文件,内容为:

技术图片

三、改Excel表(xlutils模块)

技术图片
import xlrd                           #导入模块
from xlutils.copy import copy        #导入copy模块
rb = xlrd.open_workbook(weng.xls‘)    #打开weng.xls文件
wb = copy(rb)                          #利用xlutils.copy下的copy函数复制
ws = wb.get_sheet(0)                   #获取表单0
ws.write(0, 0, changed!‘)             #改变(0,0)的值
ws.write(8,0,label = 好的‘)           #增加(8,0)的值
wb.save(weng.xls‘)                    #保存文件
技术图片

修改后的Excel表为:

技术图片

就写到这里吧,工作之余抽空写点,不足之处以后再补充吧。

 

关于python3中的追加写入excel问题,这个问题坑了我几小时,其实加一个参数即可。
因为之前有写好的excel,想追加写入,但是写入后却只有写入后的单元格格式,之前写的完全消失。
以下是我的代码
这代码可以用是我做的一个爬虫维护项目:
def times():
    User_Agent = ‘Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36‘
    headers = {
        ‘User-Agent‘: User_Agent
    }
    search_url = ‘https://www.cnss.com.cn/u/cms/www/indexJson/bdi_month.json?v=1577414941357‘
    request = urllib.request.Request(search_url, headers=headers)
    response = urllib.request.urlopen(request)
    content = response.read().decode(‘utf-8‘)
    content = ‘‘.join(content)
    # print(content)
    # index = re.findall(‘index":"(.*?)"‘, content)  # 获取指数
    date = re.findall(‘date":"(.*?)"‘, content)  # 获取时间
    time = []
    i = 0
    start_date = date[0].replace(‘.‘, ‘年‘)
    start_date.replace(‘.‘, ‘月‘)
    end_date = date[-1].replace(‘.‘, ‘年‘)
    end_date.replace(‘.‘, ‘月‘)
    # print(index,date,start_date,end_date)
    for j in range(int(len(date) / 1)):
        temp = date[i:i + 1]
        i += 1
        time.append(temp)
        hears = start_date + ‘日‘ + ‘——‘ + end_date + ‘日‘ + ‘嘻嘻嘻‘
        title=[‘交易日期‘,‘干散货指数(BDI)‘,‘海岬型指数(BCI)‘,‘巴拿马型指数(BPI)‘,‘超灵便型船运价指数(BSI)‘,‘灵便型船指数(BHSI)‘]
        sheet1.write_merge(0, 0+0,0,0+5, hears, style)
        for ti in range(len(title)):
            sheet1.write(1, ti+0, title[ti], style)
        for x in range(len(time)):
            for y in range(len(time[x])):
                sheet1.write(x + 2, 0, time[x][y], style)
        f.save(‘你想放的路径.xls‘)
123456789101112131415161718192021222324252627282930313233
上面的代码还是可以继续使用
标题xlwt的缺陷:
xlwt只能创建一个全新的excel文件,然后对这个文件进行写入内容以及保存。但是大多数情况下我们希望的是读入一个excel文件,然后进行修改或追加,这个时候就需要xlutils了。
xlutils的简单使用:
接下来的部分就是关键所在了
formatting_info=True这个参数能保留原excel格式
def write_excel_xls_append(path, value,u):
    index = len(value)  # 获取需要写入数据的行数
    workbook = xlrd.open_workbook(‘./result/30波罗的海干散货运价指数.xls‘,formatting_info=True)  # 打开工作簿
    sheets = workbook.sheet_names()  # 获取工作簿中的所有表格
    worksheet = workbook.sheet_by_name(sheets[0])  # 获取工作簿中所有表格中的的第一个表格
    rows_old = worksheet.ncols  # 获取表格中已存在的数据的行数
    new_workbook = copy(workbook)  # 将xlrd对象拷贝转化为xlwt对象
    styleS = xlwt.XFStyle()
    alignment = xlwt.Alignment()
    alignment.horz = xlwt.Alignment.HORZ_CENTER
    alignment.vert = xlwt.Alignment.VERT_CENTER
    styleS.alignment = alignment
    new_worksheet = new_workbook.get_sheet(0)  # 获取转化后工作簿中的第一个表格
    for i in range(0, index):
        for j in range(0, len(value[i])):
            new_worksheet.write(i+2, u+1, value[i][j],styleS)  # 追加写入数据,注意是从i+rows_old行开始写入
    new_workbook.save(path)  # 保存工作簿
————————

 

————————

    树叶的一生,只是为了归根吗?

    长路漫漫,惟剑做伴。

    一剑,一念。

 

 

 

 

 

my-Python读写改Excel的方法

标签:row   center   win   +=   文件   time   python3   pre   就是   

原文地址:https://www.cnblogs.com/xinxihua/p/12616908.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
分享档案
周排行
mamicode.com排行更多图片
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!