Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python 3.4中,如何将cell_值与xlrd进行比较并计算它们之间的差异_Python_Excel_Python 3.4_Xlrd - Fatal编程技术网

在Python 3.4中,如何将cell_值与xlrd进行比较并计算它们之间的差异

在Python 3.4中,如何将cell_值与xlrd进行比较并计算它们之间的差异,python,excel,python-3.4,xlrd,Python,Excel,Python 3.4,Xlrd,说来话长,对不起。所以,当我自学python的时候,我一直在想,我该如何将我所学的知识应用到我的日常生活或工作中,这样我就不只是做随机练习和教程了。我想我可以写一个脚本,使我在工作中的一部分工作自动化 我是一家酒店的餐饮部经理,所以我要做的一件事就是把我们所有的酒、啤酒和葡萄酒都清点一下。我想我可以想出一些可以: 从excel电子表格中检查我的当前库存 与我的标准(酒、白酒类、酒在酒店里的数量)相比,< 如果我当前的库存少于我的标准,脚本将计算出白酒类的差异和名称,并将其导出到一个自动发送的电

说来话长,对不起。所以,当我自学python的时候,我一直在想,我该如何将我所学的知识应用到我的日常生活或工作中,这样我就不只是做随机练习和教程了。我想我可以写一个脚本,使我在工作中的一部分工作自动化

我是一家酒店的餐饮部经理,所以我要做的一件事就是把我们所有的酒、啤酒和葡萄酒都清点一下。我想我可以想出一些可以:

  • 从excel电子表格中检查我的当前库存

  • 与我的标准(酒、白酒类、酒在酒店里的数量)相比,

    < 如果我当前的库存少于我的标准,脚本将计算出白酒类的差异和名称,并将其导出到一个自动发送的电子邮件。

  • 它将在周一和周四上午9点这样做,每周两次

我不是在寻找解决方案或答案;这是我想自己解决的问题,但我一直很难想象如何开始构建这样的脚本。我不是一个初学者,但我也不接近中级。我应该使用一堆函数,或者是带有一些方法的类吗?我想我可以称之为剧本的“骨架”是由什么组成的

另外,如果有人能给我指出正确的方向,让我阅读并学习如何完成一些我想做的事情,比如:

将数据导出到电子邮件并发送出去

如何在excel中读取单个单元格,以及如何在一般情况下使用python和excel

如何在计时器上基本设置脚本

我的电脑总是在工作,所以我没有这个脚本在后台不断运行的问题

我今天才开始做这个,因为工作的关系,我没有太多时间。我有点被困在从我的cell_值中提取信息上。代码如下:

import xlrd
import xlwt
import datetime

file_location = "Your file path here"


def par_num():

    par_workbook = xlrd.open_workbook(file_location)
    par_worksheet = par_workbook.sheet_by_name('Par')

    # Total number of rows with content in cells.
    num_rows = par_worksheet.nrows - 1

    num_cells = par_worksheet.ncols - 2

    # Current row for when iterating over spread sheet.
    cur_row = 2
    print(num_cells)
    # Iterates over work sheet
    while cur_row < num_rows:
        cur_row += 1

        cur_cell = -1

        print('--------------------')

        while cur_cell < num_cells:
            cur_cell += 1
            # Cell Types: 0 = Empty, 1 = Text, 2 = Number, 3 = Date, 4 = Boolean, 5 = Error, 6 = Blank
            cell_type = par_worksheet.cell_type(cur_row, cur_cell)

            # (Liq Name, Quantity in house)
            cell_value = par_worksheet.cell_value(cur_row, cur_cell)

            print(' ', cell_type, ' : ', cell_value)


def inventory_num():

    inv_workbook = xlrd.open_workbook(file_location)
    inv_worksheet = inv_workbook.sheet_by_name('Sheet1')
    # Total number of rows with content in cells.
    num_rows = inv_worksheet.nrows - 1

    num_cells = inv_worksheet.ncols - 2

    # Current row for when iterating over spread sheet.
    cur_row = 2

    # Iterates over work sheet
    while cur_row < num_rows:
        cur_row += 1
        row = inv_worksheet.row(cur_row)

        cur_cell = -1

        print('--------------------')

        while cur_cell < num_cells:
            cur_cell += 1
            # Cell Types: 0 = Empty, 1 = Text, 2 = Number, 3 = Date, 4 = Boolean, 5 = Error, 6 = Blank
            cell_type = inv_worksheet.cell_type(cur_row, cur_cell)

            # (Liq Name, Quantity in house)
            cell_value = inv_worksheet.cell_value(cur_row, cur_cell)

            print(' ', cell_type, ' : ', cell_value)
为了查看是否可以提取数量,它返回以下错误:

print(' ', cell_type, ' : ', cell_value[1])
TypeError: 'float' object is not subscriptable
“单元格值”的内容实际上是如何存储的?它是一个元组(x,y)?还是一份清单?为什么我不能用cell_value[1]调用该值

我有点不知所措,不知道如何将电子表格上的值与另一个值进行比较,从而计算出“while”循环中的差值

另外,如果我的格式有问题,请原谅我,我将非常感谢对我的代码布局或任何其他方面的批评

以下是指向我的库存表的链接:

  • 类型错误:无序类型:str()
  • 发生这种情况的原因是,显然您正在查看的单元格包含文本内容,而不是数字内容。请注意,在Excel(以及xlrd)中,包含文本“123”的单元格与包含数字123的单元格不同。所以你必须确保

    • 库存工作簿中的数字实际上记录为数字
    • 脚本没有查看,即,在标题处认为它包含一个数字
    (记录如下:python2不会出现这个错误……但情况不会更好,因为float和str之间的比较结果对您没有任何用处)

    在任何情况下,为了防止出现错误,您只需事先检查
    单元格类型==2

  • TypeError:“float”对象不可下标
  • 请注意,对于与上一个不同的单元格,应该会出现此错误-一个包含数字的单元格


    这完全取决于您试图访问单元格的值,就像它是一个列表一样(
    cell\u value[1]
    ),而它不是。其后果将取决于此类单元格的内容。如果您尝试访问字符串“123”位置1中的项目,如前一示例中所示,您会得到“2”-由于这不是一个数字,而是一个字符串,因此您会得到与前一示例中相同的错误。相反,如果您尝试访问浮动123的位置1中的项目,您甚至会在之前收到一个错误,因为您无法“访问浮动项目”。

    OP可能还希望使用以下方法查看: 这将有助于直接连接到谷歌表单

    print(' ', cell_type, ' : ', cell_value[1])
    
    print(' ', cell_type, ' : ', cell_value[1])
    TypeError: 'float' object is not subscriptable