Python 使用xlwings和excel,这两种方法中哪一种最快/首选?

Python 使用xlwings和excel,这两种方法中哪一种最快/首选?,python,xlwings,Python,Xlwings,我刚刚开始学习Python,正在使用xlwings编写excel电子表格。我对编码非常陌生(这是我的第一个问题),所以这可能是一个有点简单的问题,但任何评论都将非常感谢 我正在阅读一个网站(使用selenium和beautiful soup)的页面源代码,以获取有关产品的一些信息,例如价格和重量。然后我将这些值写入excel中的单元格 我有两种方法可以做到这一点——第一种是运行函数,然后将值写入excel,然后再转到下一个函数: (这些是主脚本的摘录-两种方法都可以) 当rowNum

我刚刚开始学习Python,正在使用xlwings编写excel电子表格。我对编码非常陌生(这是我的第一个问题),所以这可能是一个有点简单的问题,但任何评论都将非常感谢

我正在阅读一个网站(使用selenium和beautiful soup)的页面源代码,以获取有关产品的一些信息,例如价格和重量。然后我将这些值写入excel中的单元格

我有两种方法可以做到这一点——第一种是运行函数,然后将值写入excel,然后再转到下一个函数:

(这些是主脚本的摘录-两种方法都可以)

当rowNum
第二个函数运行所有函数,然后一次性将每个存储值写入excel:

   while rowNum < lastRow + 1:    

    urlCellRef = (rowNum, colNum)
    url = wb.sheets[0].range(urlCellRef).value


    getPageSource()            
    getProductPrice() 
    getProductWeight()
    getProductQuantity()
    getProductCode()


    itemPriceRef = (rowNum, colNum + 1)
    wb.sheets[0].range(itemPriceRef).value = productPrice  

    itemWeightRef = (rowNum, colNum + 2)
    wb.sheets[0].range(itemWeightRef).value = productWeight

    itemQuantityRef = (rowNum, colNum + 4)
    wb.sheets[0].range(itemQuantityRef).value = productQuantity

    prodCodeRef = (rowNum, colNum + 6)
    wb.sheets[0].range(prodCodeRef).value = productCode


    rowNum = rowNum + 1 
当rowNum
我想知道,做这件事的首选方法是什么?我还没有注意到速度上的差异,但是我的笔记本电脑速度非常慢,所以如果有一种方法被认为是最佳实践,那么我更愿意采用这种方法,因为我将增加使用的URL数量


非常感谢你的帮助

Excel调用的开销占主导地位。使用XLWings时,尽可能不频繁地写入电子表格


我发现使用Range对象重写整个工作表(或要更改的工作表区域)比编写单个单元格、行或列要快得多。如果我不做任何繁重的数据操作,我只使用嵌套列表——将子列表视为列或行(使用transpose选项)是否更好取决于您处理数据的方式。如果您正在处理更大的数据集或进行更密集的工作,您可能希望使用NumPy阵列或Panda。

您好-谢谢您的建议!我现在正在学习列表,所以我将重新安排所有内容,以便最终写入excel时使用单个列表写入一个范围,而不是像当前那样依次写入每个单元格。我需要做一些关于NumPy和Panda的家庭作业,正如我看到他们提到的,但还没有使用它们。再次感谢你,理查德。
   while rowNum < lastRow + 1:    

    urlCellRef = (rowNum, colNum)
    url = wb.sheets[0].range(urlCellRef).value


    getPageSource()            
    getProductPrice() 
    getProductWeight()
    getProductQuantity()
    getProductCode()


    itemPriceRef = (rowNum, colNum + 1)
    wb.sheets[0].range(itemPriceRef).value = productPrice  

    itemWeightRef = (rowNum, colNum + 2)
    wb.sheets[0].range(itemWeightRef).value = productWeight

    itemQuantityRef = (rowNum, colNum + 4)
    wb.sheets[0].range(itemQuantityRef).value = productQuantity

    prodCodeRef = (rowNum, colNum + 6)
    wb.sheets[0].range(prodCodeRef).value = productCode


    rowNum = rowNum + 1