用xlwt最新库,有4个WS名字是工资-招商银行,工资-民生商银行,工资-浙商银行,差异,把4个WS存入一个xls中,差异WS写入一个单元格给另外3个WS的F列求和输出为excel公式
时间: 2024-05-06 13:16:32 浏览: 87
xlwt-1.3.0 xlrd-2.0.1
可以按照以下步骤实现:
1. 首先,需要安装最新版的 `xlwt` 库,可以使用 `pip` 命令进行安装:
```
pip install xlwt --upgrade
```
2. 创建一个新的 Excel 文件,并且添加 4 个工作表:
```python
import xlwt
# 创建一个新的工作簿
workbook = xlwt.Workbook()
# 添加 4 个工作表
sheet1 = workbook.add_sheet('工资-招商银行')
sheet2 = workbook.add_sheet('工资-民生商银行')
sheet3 = workbook.add_sheet('工资-浙商银行')
sheet4 = workbook.add_sheet('差异')
```
3. 将数据写入每个工作表中。这里假设每个工作表中都有一个名为 `salary` 的数据列表,其中包含每个员工的工资信息。可以使用循环将数据写入每个工作表中:
```python
# 假设有一个名为 salary 的数据列表,包含每个员工的工资信息
for i, s in enumerate(salary):
# 写入第 i+1 行的数据
sheet1.write(i, 0, s['bank1'])
sheet1.write(i, 1, s['salary'])
sheet2.write(i, 0, s['bank2'])
sheet2.write(i, 1, s['salary'])
sheet3.write(i, 0, s['bank3'])
sheet3.write(i, 1, s['salary'])
sheet4.write(i, 0, s['bank1'] + s['bank2'] + s['bank3'])
```
4. 在差异工作表中添加一个公式,计算其他 3 个工作表的 F 列之和。可以使用 `xlwt` 库提供的 `Formula` 类来实现:
```python
# 在差异工作表中添加一个公式,计算其他 3 个工作表的 F 列之和
sum_formula = 'SUM('
for i in range(len(salary)):
if i > 0:
sum_formula += ','
sum_formula += '工资-招商银行!F{0},工资-民生商银行!F{0},工资-浙商银行!F{0}'.format(i+1)
sum_formula += ')'
sheet4.write(0, 0, xlwt.Formula(sum_formula))
```
5. 最后,将数据保存到 Excel 文件中:
```python
# 将数据保存到 Excel 文件中
workbook.save('salary.xls')
```
完整的代码如下:
```python
import xlwt
# 假设有一个名为 salary 的数据列表,包含每个员工的工资信息
salary = [
{'bank1': '招商银行', 'bank2': '民生商银行', 'bank3': '浙商银行', 'salary': 5000},
{'bank1': '招商银行', 'bank2': '民生商银行', 'bank3': '浙商银行', 'salary': 6000},
{'bank1': '招商银行', 'bank2': '民生商银行', 'bank3': '浙商银行', 'salary': 7000},
{'bank1': '招商银行', 'bank2': '民生商银行', 'bank3': '浙商银行', 'salary': 8000},
]
# 创建一个新的工作簿
workbook = xlwt.Workbook()
# 添加 4 个工作表
sheet1 = workbook.add_sheet('工资-招商银行')
sheet2 = workbook.add_sheet('工资-民生商银行')
sheet3 = workbook.add_sheet('工资-浙商银行')
sheet4 = workbook.add_sheet('差异')
# 将数据写入每个工作表中
for i, s in enumerate(salary):
sheet1.write(i, 0, s['bank1'])
sheet1.write(i, 1, s['salary'])
sheet2.write(i, 0, s['bank2'])
sheet2.write(i, 1, s['salary'])
sheet3.write(i, 0, s['bank3'])
sheet3.write(i, 1, s['salary'])
sheet4.write(i, 0, s['bank1'] + s['bank2'] + s['bank3'])
# 在差异工作表中添加一个公式,计算其他 3 个工作表的 F 列之和
sum_formula = 'SUM('
for i in range(len(salary)):
if i > 0:
sum_formula += ','
sum_formula += '工资-招商银行!F{0},工资-民生商银行!F{0},工资-浙商银行!F{0}'.format(i+1)
sum_formula += ')'
sheet4.write(0, 0, xlwt.Formula(sum_formula))
# 将数据保存到 Excel 文件中
workbook.save('salary.xls')
```
阅读全文