Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.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和Excel-OpenPyXL_Python_Python 3.x_List_Openpyxl - Fatal编程技术网

Python和Excel-OpenPyXL

Python和Excel-OpenPyXL,python,python-3.x,list,openpyxl,Python,Python 3.x,List,Openpyxl,我正在使用Python处理Excel,有几个问题: 正在将Excel工作表加载到二维数组中。 在VBA中,我只需执行以下操作: 我会得到数组(1到2500,1到5),我可以很容易地访问它,例如arrData(1,5)->行1列5 在Python中,我设法做到的是: #declare list excel_data=[] #loop to load excel spreadsheet data into 2d Array #basically I am looping through e

我正在使用Python处理Excel,有几个问题:

  • 正在将Excel工作表加载到二维数组中。
    在VBA中,我只需执行以下操作:
  • 我会得到数组(1到2500,1到5),我可以很容易地访问它,例如arrData(1,5)->行1列5

    在Python中,我设法做到的是:

    #declare list
    excel_data=[]
    
    #loop to load excel spreadsheet data into 2d Array   
    #basically I am looping through every row and append it to list
    for row in shtData.iter_rows(min_row=5, max_row=50,values_only =True):
        excel_data.append(row)
    
  • 是否有一种方法可以将行分配给列表,从索引1开始,而不是从0开始
    在VBA中,有一个选项Base 1

  • 这是操作Excel数据集的最快方法吗
    然后我计划循环遍历2500行5列->12'500个单元格
    有了VBA,诚实地说(在内存中的数组上操作)是非常有效的

  • 据我所知,OpenPyXL的功能:

  • #仅创建对EXCEL工作簿的引用-是否不打开它?或者它被“加载”到内存中,但硬盘上的内容实际上是完整的

    shtData = wkb.worksheets[0]                         
    
    #再次仅供参考

    shtReport = wkb.create_sheet(title="ReportTable")       
    

    #它会添加工作表,但会将其添加到加载到内存中的excel中,只有在保存后,才会覆盖HD上的excel?

    您可以使用Pandas并从excel电子表格创建数据框(2D表格)

    import pandas as pd
    
    df = pd.read_excel("data.xls")
    print(df)
    print("____________")
    print(f'Average sales are: {df["Gross"].values.mean()}')
    print(f'Net income for April: {df.at[3, "Net"]}')
    print("____________")
    df_no_header = pd.read_excel("data.xls",skiprows=1, header=None)
    print(df_no_header)
    print("____________")
    print(f'Net income for April: {df_no_header.at[3, 2]}')
    
    输出:


    Pandas dataframe有许多方法,允许您访问行和列并执行更多操作。设置skiprows=1,header=None将跳过标题行。请参阅。

    您可以使用Pandas并从Excel spreadsheat创建数据框(2D表格)

    import pandas as pd
    
    df = pd.read_excel("data.xls")
    print(df)
    print("____________")
    print(f'Average sales are: {df["Gross"].values.mean()}')
    print(f'Net income for April: {df.at[3, "Net"]}')
    print("____________")
    df_no_header = pd.read_excel("data.xls",skiprows=1, header=None)
    print(df_no_header)
    print("____________")
    print(f'Net income for April: {df_no_header.at[3, 2]}')
    
    输出:


    Pandas dataframe有许多方法,允许您访问行和列并执行更多操作。设置skiprows=1,header=None将跳过标题行。请参阅。

    那么,是否可以用它来操作Excel?还是我还需要OpenPyXL?你根本不需要OpenPyXL。这是一个更强大的选择。如果你经常处理从Excel导入大量数据的问题,那就熟悉Pandas吧。那么有可能用它来操作Excel吗?还是我还需要OpenPyXL?你根本不需要OpenPyXL。这是一个更强大的选择。如果您经常从Excel导入大量数据,请熟悉Pandas。
    import pandas as pd
    
    df = pd.read_excel("data.xls")
    print(df)
    print("____________")
    print(f'Average sales are: {df["Gross"].values.mean()}')
    print(f'Net income for April: {df.at[3, "Net"]}')
    print("____________")
    df_no_header = pd.read_excel("data.xls",skiprows=1, header=None)
    print(df_no_header)
    print("____________")
    print(f'Net income for April: {df_no_header.at[3, 2]}')