16 金额单位的调整

import openpyxl
myBook=openpyxl.load_workbook('利润表.xlsx')
mySheet=myBook['1季度利润表']
#循环1季度利润表的第5行到44行
for i in range(5,45):
    #将每行的第1列的“(万元)”修改为“(元)”
    myValue=mySheet.cell(i,1).value
    myValue=myValue[0:-4]+'(元)'
    mySheet.cell(i,1).value=myValue
    #将每行的第2列的金额乘以10000
    myValue=mySheet.cell(i,2).value
    if(myValue is not None):
          myValue=myValue*10000
          mySheet.cell(i,2).value=myValue
myBook.save('结果表-利润表.xlsx')

17 累加所有表格数据

import openpyxl
myBook = openpyxl.load_workbook('利润表.xlsx')
#累加工作簿(myBook)的所有工作表的B5单元格数据
mySum = sum([mySheet['B5'].value for mySheet in myBook])
#在工作簿(myBook)中新增一个全年利润表(mySheet2)
mySheet2 = myBook.copy_worksheet(myBook.worksheets[0])
mySheet2.title = '全年利润表'
#在全年利润表(mySheet2)的对应单元格设置累加数(合计)
mySheet2['B5'].value = mySum
mySheet2['B6'].value = mySum
myBook.save('结果表-利润表.xlsx')

18 计算合计

import openpyxl
myBook=openpyxl.load_workbook('收入表.xlsx')
mySheet=myBook.worksheets[0]
myRowIndex=0
#按行循环收入表(mySheet)的['B5':'D8']范围的行(myRow)
for myRow in mySheet['B5':'D8']:
    myRowSum=0
    myRowIndex+=1
    #循环行(myRow)的单元格(myCell)
    for myCell in myRow:
        #累加各个单元格(myCell)的数据
        myRowSum+=myCell.value
    #在行(myRow)的最后一个单元格中写入合计
    mySheet.cell(myRowIndex+4,5).value=myRowSum
myBook.save('结果表-收入表.xlsx')

19 求和写入合计

import openpyxl
myBook=openpyxl.load_workbook('收入表.xlsx')
#myRows=list(myBook['收入表'].values)
#获取收入表(myBook.worksheets[0])的单元格数据(myRows)
myRows=list(myBook.worksheets[0].values)
myRowIndex=4
#从myRows的第5行开始循环(到最后一行)
while myRowIndex<len(myRows):
      #对每行的[1:4]范围(第2、3、4列)的单元格数据求和
      myRowSum=sum(myRows[myRowIndex][1:4])
      #将求和结果写入合计列
      myBook.worksheets[0].cell(myRowIndex+1,5).value=myRowSum
      myRowIndex+=1
myBook.save('结果表-收入表.xlsx')

20 新建excel并写入

import openpyxl
#myBook=openpyxl.load_workbook('收入表.xlsx')
myBook=openpyxl.load_workbook('收入表.xlsx',data_only=True)
mySheet=myBook.active
myRows=mySheet.rows
#新建工作簿(myNewBook),在保存之后即为新的Excel文件
myNewBook=openpyxl.Workbook()
myNewSheet=myNewBook.active
myNewSheet.title='收入表'
#循环收入表的行(myRow)
for myRow in myRows:
    myList=[]
    #循环行(myRow)的单元格
    for myCell in myRow:
        myList+=[myCell.value]
    #在新工作簿的收入表(myNewSheet)中添加行(数据)
    myNewSheet.append(myList)
myNewBook.save('结果表-收入表.xlsx')

21 求和写入

import openpyxl
myBook=openpyxl.load_workbook('收入表.xlsx')
mySheet=myBook.worksheets[0]
#设置收入表(mySheet)的数据范围(myRange)
myRange=mySheet['A1':'D8']
#使用列表推导式对myRange的行数据求和
myValues=[sum([myCell.value for myCell in myRow[1:]]) for myRow in myRange[4:]]
myRowIndex=5
for myValue in myValues:
    #在合计列的单元格中写入求和数据(即每个季度的收入合计)
    mySheet.cell(myRowIndex,5).value=myValue
    myRowIndex+=1
myBook.save('结果表-收入表.xlsx')

22 对列数据求和写入

import openpyxl
myBook=openpyxl.load_workbook('收入表.xlsx')
#按行获取收入表(myBook.worksheets[0])的单元格数据
myRows=list(myBook.worksheets[0].values)
#实现行列数据交换,即行转换成列,列转换成行
myCols=list(zip(*list(myRows[4:8])))[1:4]
myIndex=2
for myCol in myCols:
    #对行数据求和,即是对列数据求和
    myColSum=sum(myCol)
    myBook.worksheets[0].cell(9, myIndex).value=myColSum
    myIndex+=1
myBook.save('结果表-收入表.xlsx')

23 数据都乘以10000

import openpyxl
myBook=openpyxl.load_workbook('收入表.xlsx')
#获取收入表(myBook.active)的行(myRows)
myRows=myBook.active.rows
#循环myRows的5、6、7、8行(myRow)
for myRow in list(myRows)[4:8]:
    #循环行(myRow)的B、C、D列的单元格(myCell)
    for myCell in myRow[1:4]:
        #如果单元格(myCell)不为空
        if myCell.value is not None:
           #则将单元格(myCell)的数据乘以10000
           myCell.value*=10000
myBook.save('结果表-收入表.xlsx')

24 循环求和

import openpyxl
myBook=openpyxl.load_workbook('收入表.xlsx')
#获取收入表(myBook.active)的所有列(myColumns)
myColumns=myBook.active.columns
myColIndex=2
#循环收入表(myColumns)的B、C、D列(myCol)
for myCol in list(myColumns)[1:4]:
    myColSum=0
    #循环列(myCol)的5、6、7、8行的4个单元格
    for myCell in myCol[4:8]:
        #对4个单元格数据求和
        myColSum+=myCell.value
    #将求和数据(myColSum)写入合计单元格
    myBook.active.cell(9,myColIndex).value=myColSum;
    myColIndex+=1
myBook.save('结果表-收入表.xlsx')

25 行数据求和

import openpyxl
myBook=openpyxl.load_workbook('收入表.xlsx')
mySheet=myBook.active
#指定收入表(mySheet)的数据范围(myRange),即B5:D8
myRange=mySheet.iter_rows(min_row=5,min_col=2,max_row=8,max_col=4)
myRowIndex=5
#循环数据范围(myRange)的行(myRow)
for myRow in myRange:
    #对行(myRow)的单元格数据求和(myRowSum)
    myRowSum=sum([myCell.value for myCell in myRow])
    mySheet.cell(myRowIndex,5).value=myRowSum
    myRowIndex+=1
myBook.save('结果表-收入表.xlsx')