用xlwt有一个ws名叫差异,还有一个ws名叫工资-招商银行,差异要求输出xls公式求工资-招商银行的和
时间: 2023-06-19 17:36:11 浏览: 181
可以使用 xlwt 的 `Formula` 类型来插入公式。假设 `ws_diff` 和 `ws_salary` 分别是差异和工资-招商银行两个 worksheet,可以使用下面的代码来插入公式:
```python
import xlwt
# 创建一个新的 workbook
workbook = xlwt.Workbook()
# 创建两个 worksheet,分别为差异和工资-招商银行
ws_diff = workbook.add_sheet('差异')
ws_salary = workbook.add_sheet('工资-招商银行')
# 在 ws_diff 中插入公式
formula = 'SUM(工资-招商银行!A1:A10)' # 假设需要求和的数据在 A1:A10 单元格范围内
ws_diff.write(0, 0, xlwt.Formula(formula))
# 保存 workbook
workbook.save('output.xls')
```
这样,差异 worksheet 的 A1 单元格中就会显示工资-招商银行 worksheet 中 A1:A10 单元格范围内的数据的和。你可以根据实际情况修改 `formula` 变量来适应不同的需求。
相关问题
用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')
```
用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列的总和,并将其写入总和单元格中。最后,将工作簿保存到本地。
阅读全文