美文网首页
Python帮你做Excel——写入Excel文档

Python帮你做Excel——写入Excel文档

作者: 苏小菁在编程 | 来源:发表于2019-12-27 20:18 被阅读0次

    上一篇文章我们学习了如何使用openpyxl读取excel数据。当然除此之外,我们还可以向excel文档中写入数据。写入数据的过程在某种程度上与读取数据的过程十分类似。我们可以创建excel工作表,在单元格内写入文字、数字或方程,在修改完毕之后关闭文件。此外我们还会创建、删除工作表,应用设置、字体和样式,设置单元格和工作区的宽度和高度,合并和取消合并单元格。

    Let's GOOOOOOO!

    Excel文档创建与保存

    首先我们需要学习如何用python创建与保存文档。先导入openpyxl模块,并且创建一个工作簿

    >>> import openpyxl
    >>> mywb = openpyxl.Workbook()
    

    上面的代码会创建一个只包含一个工作表的工作簿,如上一章描述的那样,我们可以用下列代码确认工作表的名字,数量和活动的工作表。

    >>> mywb.get_sheet_names()
    ['Sheet']
    >>> sheet = mywb.active
    >>> sheet.title
    'Sheet'
    

    现在我们可以修改工作表的名字,示例如下

    >>> sheet.title = 'MyNewTitle'
    >>> wb.get_sheet_names()
    ['MyNewTitle']
    >>>mywb.save('NewExcelFile.xlsx')
    

    这样一个新的excel文件就创建完成了,此时如果你打开你的当前工作路径就可以看到刚刚创建的文件——‘NewExcelFile’工作簿里有唯一的一个叫做‘MynewTitle’的工作表。

    载入Excel文件并保存

    在把一个现有的excel文件读入内存,并对它进行一系列修改之后,必须使用save()方法,将其保存,否则所有的更改都会丢失。不过保存副本的方法其实非常简单,只是将读取excel文件与保存文件的方法结合起来即可,详见下面的代码

    >>> import openpyxl
    >>> mywb = openpyxl.load_workbook('filetest.xlsx')
    >>> sheet = mywb.active
    >>> sheet.title = 'Working on Save as'
    >>> mywb.save('example_filetest.xlsx')
    

    从上面的代码我们可以看到,我们读取了一个已经存在的文件,更改了工作表的名字然后保存了一个工作簿副本。在这个案例当中原工作簿与新创建的工作簿都会在你的工作路径里,你可以尝试打开看一下,是否按照你的思路成功更改了工作表名。
    通常用python修改excel文件时,最好能保存为一个与原文件不同名字的副本,这样能预防你的程序中存在bug或者工作时出现任何错误。

    创建新的工作表

    要在工作簿中创建一个新的工作表,只需使用create_sheet()方法即可。类似的,要删除一个工作表只需使用remove_sheet()方法即可。

    >>> import openpyxl
    >>> mywb = openpyxl.Workbook()
    >>> mywb.get_sheet_names()
    ['Sheet']
    >>> mywb.create_sheet()
    <Worksheet "Sheet1">
    >>> mywb.get_sheet_names()
    ['Sheet', 'Sheet1']
    >>> wb.create_sheet(index=0, title='1st Sheet')
    <Worksheet "1st Sheet">
    >>> mywb.get_sheet_names()
    ['1st Sheet', 'Sheet', 'Sheet1']
    >>>mywb.create_sheet(index=2, title='2nd Sheet')
    <Worksheet "2nd Sheet">
    >>>mywb.get_sheet_names()
    ['1st Sheet', 'Sheet', '2nd Sheet', 'Sheet1']
    

    使用create_sheet()方法创建的新工作表默认排在工作簿的最后一个,当然我们也可以用index具体规定新建工作表的位置,并且还可以在创建的同时对其命名。使用index排序的规则继承了python的排序方法,index从0开始。

    删除工作表

    当我们想删除一个特定的工作表的时候,使用remove_sheet()方法,具体展示如下

    >>>mywb.get_sheet_names()
    ['1st Sheet', 'Sheet', '2nd Sheet', 'Sheet1']
    >>> mywb.remove_sheet(mywb.get_sheet_by_name('1st Sheet'))
    >>> mywb.remove_sheet(mywb.get_sheet_by_name('Sheet1'))
    >>> mywb.get_sheet_names()
    ['Sheet', '2nd Sheet']
    

    从上述代码中可以看出,在真正删除一个工作表之前,我们需要选中一个工作表对象。remove_sheet()方法将一个工作表对象作为输入,而不是工作表名。使用get_sheet_by_name()方法,输入工作表名,即可返回一个工作表对象了。当然在最后不要忘记使用save()方法对所作更改进行保存。

    向单元格写入数据

    现在我们终于来到了如何在选定的单元格中写入数据。其实方法也非常简单,见下

    >>> import openpyxl
    >>> mywb = openpyxl.Workbook()
    >>> mysheet = mywb.get_sheet_by_name('Sheet')
    >>> mysheet['F6'] = 'Writing new Value!'
    >>> mysheet['F6'].value    
    'Writing new Value'
    

    从上述代码可以看到,直接向单元格进行赋值即可写入数据。如果你还记得第一章的内容的话,你一定知道,还有另一种方法可以指向单元格的值。我们同样可以用cell()函数指向单元格,并且对其写入数据,示例如下

    >>> import openpyxl
    >>> mywb = openpyxl.Workbook()
    >>> mysheet = mywb.get_sheet_by_name('Sheet')
    >>> mysheet.cell(row=2, column=4).value = 'Let\'s try again!'
    >>> mysheet['D2'].value
    'Let\'s try again!'
    

    注意,使用cell()函数进行写入时,必须使用value方法,否则就会发生下述的错误

    >>> mysheet.cell(row=2, column=4) = 'Let\'s try again!'
      File "<stdin>", line 1
    SyntaxError: can't assign to function call
    

    向单元格写入方程

    excel中的方程是一项非常重要的功能,实际上工作簿的威力就在于它的方程。我们可以使用openpyxl在任何指定的单元格中输入公式,我们需要做的只不过是对单元格赋值一个等号以及你想写的公式,就像这样

    >>>mysheet['F6'] = '=Sum(D7:D20)'
    

    看上去与向单元格写入数据的方法并没有什么区别,只是加了等号的公式而已。上面的公式会将D7至D20单元格中所有的数值相加,并存入F6单元格。让我们来看看别的例子

    >>> import openpyxl
    >>> mywb = openpyxl.Workbook()
    >>> mysheet = mywb.active
    >>> mysheet['F6'] = 500
    >>> mysheet['F7'] = 800
    >>> mysheet['D3'] = '=SUM(F6:F7)'
    >>> mywb.save('Applyingformula.xlsx')
    

    这个例子是对方程使用的一个完整的呈现,我们在F6中输入500,在F7单元格中输入800。单元格D3有一个把F6和F7加起来的公式。打开电子表格以后,你就会在D3看到1300的数值。

    那么至此,我们已经学完了如何读取,写入,修改以及保存excel文件。那么接下来我们将学习如何对表格进行设置和调整,以及如何用openpyxl画图。

    敬请期待啦!!!

    相关文章

      网友评论

          本文标题:Python帮你做Excel——写入Excel文档

          本文链接:https://www.haomeiwen.com/subject/mjxjoctx.html