月亮斗斗 发表于 2020-9-6 21:52:35

把原表的贷方数,在新表中变为负数表示

import xlrd                        # 导入 xlrd模块
from xlutils.copy import copy                  # 导入xlutils 中的复制模块
wb = xlrd.open_workbook("职工借款.xls")      # 读取工作簿
# ws = wb.sheet_names()                        # 读取工作簿下的所有工作表对象
ws = wb.sheet_by_name('9月')                   # 读取工作簿下的指定工作表对象
nwb = copy(wb)                              # 复制工程簿
nws = nwb.add_sheet('复制表')                # 新建工程表 表名为 复制表
n,m = 8,0                                    # 初始化变量
while n<ws.nrows-1:                        # 开始循环数据
    n += 1                                 # 累加 n 变量
    (ws.cell_value(n, 0), ws.cell_value(n, 7), ws.cell_value(n, 8))    # 读取三列数据
    m += 1                                  # 累加 m 变量
    nws.write(m,0,ws.cell_value(n,0))          # 写入姓名列
    nws.write(m, 1, ws.cell_value(n, 7))          # 写入方向列
    if ws.cell_value(n, 7) = '贷':                # 如果第七列为 贷
      nws.write((m, 2, ws.cell_value(n, 8)*(-1))    # 则在写入余额时 乘以-1
    else:                                                # 否则
      nws.write(m, 2, ws.cell_value(n, 8))             # 写入余额
nws.write(0,0,'姓名')                                 # 写入表头
nws.write(0,1,'方向')                               # 写入表头
nws.write(0,2,'余额')                               # 写入表头
nwb.save('贷方数.xls')                        # 保存 复制表

*******************************************************************
以下为运行后,出现的提示

D:\Python37\python.exe F:/课程资料/练习用表/20200906-006.py
File "F:/课程资料/练习用表/20200906-006.py", line 15
    if ws.cell_value(n, 7) = '贷':                # 如果第七列为 贷
                           ^
SyntaxError: invalid syntax

Process finished with exit code 1


我的目的是想把原表的 贷方数,在新表中 变为负数 表示。请老师们指点一下怎么改。感谢!

疾风怪盗 发表于 2020-9-6 22:12:16

    if ws.cell_value(n, 7) == '贷':                # 如果第七列为 贷
      nws.write((m, 2, ws.cell_value(n, 8)*(-1)))    # 则在写入余额时 乘以-1
    else:                                                # 否则
      nws.write(m, 2, ws.cell_value(n, 8))   
这段好像有错误,if判断是否相等用的是==
if下面的代码,后面少了个括号

疾风怪盗 发表于 2020-9-6 22:12:59

如果用的是pycharm或者VScode来写的话,应该会有错误提示的啊

月亮斗斗 发表于 2020-9-6 22:46:11

疾风怪盗 发表于 2020-9-6 22:12
这段好像有错误,if判断是否相等用的是==
if下面的代码,后面少了个括号

老师,我改了:
    if ws.cell_value(n, 7) == '贷':                # 如果第七列为 贷
      nws.write((m, 2, ws.cell_value(n, 8)*(-1)))    # 则在写入余额时 乘以-1
    else:                                              # 否则
      nws.write(m, 2, ws.cell_value(n, 8))             # 写入余额
****************************************************************
电脑提示:
D:\Python37\python.exe F:/课程资料/练习用表/20200906-006.py
Traceback (most recent call last):
File "F:/课程资料/练习用表/20200906-006.py", line 16, in <module>
    nws.write((m, 2, ws.cell_value(n, 8)*(-1)))    # 则在写入余额时 乘以-1
TypeError: write() missing 1 required positional argument: 'c'

Process finished with exit code 1

麻烦你再帮我看看,谢谢

月亮斗斗 发表于 2020-9-6 22:47:19

疾风怪盗 发表于 2020-9-6 22:12
如果用的是pycharm或者VScode来写的话,应该会有错误提示的啊

就是没有明确指出错误,我又是新手,所以不知道错在哪里了{:5_110:}

疾风怪盗 发表于 2020-9-6 22:55:19

4、往单元格内写入内容
  worksheet.write(0, 0, label = 'Row 0, Column 0 Value')
感觉你没写错
nws.write(m, 2, ws.cell_value(n, 8)*(-1))
会不会是因为多加了个括号的原因,之前我说错了,你那不是后面少个),是前面多了个(
再试试
还不行的话,就给个数据吧,否则不好运行

额..额... 发表于 2020-9-6 23:05:57

我个人也喜欢操控excel,但是目前还是vba体验感绝佳,速度贼快。如果用python,我建议你用win32com来操控excel,性能据说最好,而且功能是最全的,几乎所有excel的功能都可以调用。

月亮斗斗 发表于 2020-9-7 07:49:06

本帖最后由 月亮斗斗 于 2020-9-7 07:50 编辑

月亮斗斗 发表于 2020-9-7 07:47
辅助余额表
期间:2020.01-2020.09       
【科目:其他应收款/职工借款】                               


老师,确实是前面多了个括号,谢谢

月亮斗斗 发表于 2020-9-7 08:05:45

额..额... 发表于 2020-9-6 23:05
我个人也喜欢操控excel,但是目前还是vba体验感绝佳,速度贼快。如果用python,我建议你用win32com来操控ex ...

我才开始学习python,以前也没有学过程序,我去试试,谢谢
页: [1]
查看完整版本: 把原表的贷方数,在新表中变为负数表示