用xlwt最新库,有4个WS名字是工资-招商银行,工资-民生商银行,工资-浙商银行,总计,把4个WS存入一个xls中,总计WS写入一个单元格给另外3个WS的F列求和输出为excel的SUM公式(包含3个WS名字)
时间: 2024-04-30 15:24:58 浏览: 166
以下是一个示例代码,可以实现你的需求:
```python
import xlwt
# 创建一个Workbook对象,相当于一个Excel文件
workbook = xlwt.Workbook()
# 创建4个Worksheet对象,分别对应4个工资表和一个总计表
ws_zs = workbook.add_sheet('工资-招商银行')
ws_ms = workbook.add_sheet('工资-民生商银行')
ws_zsh = workbook.add_sheet('工资-浙商银行')
ws_total = workbook.add_sheet('总计')
# 在每个工资表中写入数据
# ...
# 在总计表中计算每个工资表的F列的和,并写入SUM公式
for i, ws in enumerate([ws_zs, ws_ms, ws_zsh]):
total_formula = f'=SUM({ws.name}!F:F)'
# 写入公式
ws_total.write(0, 5 + i, xlwt.Formula(total_formula))
# 将Workbook对象保存为xls文件
workbook.save('example.xls')
```
需要注意的是,xlwt库只支持创建xls文件,如果需要创建xlsx文件,可以使用openpyxl库。
相关问题
用xlwt库,有4个WS名字是工资-招商银行,工资-民生商银行,工资-浙商银行,差异,把4个WS存入一个xls中,差异WS写入一个单元格,给另3个WS的F列求和
可以参考以下代码实现:
```python
import xlwt
# 创建一个新的工作簿
wb = xlwt.Workbook()
# 创建4个工作表
ws1 = wb.add_sheet('工资-招商银行')
ws2 = wb.add_sheet('工资-民生商银行')
ws3 = wb.add_sheet('工资-浙商银行')
ws4 = wb.add_sheet('差异')
# 写入数据到工资-招商银行工作表
ws1.write(0, 0, '姓名')
ws1.write(0, 1, '工资')
ws1.write(1, 0, '张三')
ws1.write(1, 1, 5000)
ws1.write(2, 0, '李四')
ws1.write(2, 1, 6000)
# 写入数据到工资-民生商银行工作表
ws2.write(0, 0, '姓名')
ws2.write(0, 1, '工资')
ws2.write(1, 0, '张三')
ws2.write(1, 1, 4500)
ws2.write(2, 0, '李四')
ws2.write(2, 1, 5500)
# 写入数据到工资-浙商银行工作表
ws3.write(0, 0, '姓名')
ws3.write(0, 1, '工资')
ws3.write(1, 0, '张三')
ws3.write(1, 1, 4000)
ws3.write(2, 0, '李四')
ws3.write(2, 1, 5000)
# 计算差异并写入差异工作表
ws4.write(0, 0, '差异')
ws4.write(0, 1, ws1.cell(1, 1).value - ws2.cell(1, 1).value)
ws4.write(1, 0, '')
ws4.write(1, 1, '')
# 计算工资总和并写入工资-招商银行工作表
ws1.write(3, 0, '总和')
ws1.write(3, 1, xlwt.Formula('SUM(F2:F3)'))
# 计算工资总和并写入工资-民生商银行工作表
ws2.write(3, 0, '总和')
ws2.write(3, 1, xlwt.Formula('SUM(F2:F3)'))
# 计算工资总和并写入工资-浙商银行工作表
ws3.write(3, 0, '总和')
ws3.write(3, 1, xlwt.Formula('SUM(F2:F3)'))
# 保存工作簿
wb.save('工资表.xls')
```
这段代码创建了一个名为“工资表.xls”的工作簿,并在其中创建了4个工作表。然后,分别向3个工资工作表中写入数据,并计算出差异,将其写入差异工作表中。最后,使用`xlwt.Formula()`函数计算出每个工资工作表中F列的总和,并将其写入总和单元格中。最后,将工作簿保存到本地。
用xlwt最新库,有4个WS名字是工资-招商银行,工资-民生商银行,工资-浙商银行,差异,把4个WS存入一个xls中,差异WS写入一个单元格给另外3个WS的F列求和输出为excel公式
可以按照以下步骤实现:
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')
```
阅读全文