PythonがExcelを操作するためのいくつかのサードパーティライブラリ

まず、発生した問題についてお話しし
ます。システムからダウンロードしたExcelはピボットテーブルです。xlrd、openpyxl、pandasを使用すると、下の表のデータを取得できず、最終的にxlwingsが成功しました。
理由の分析:
ダウンロードしたExcelは、手動で開いてから閉じない限り、変更を保存するかどうかをポップアップ表示し(何も変更されていません。理由はわかりません)、[保存]をクリックして取得します。
xlwingsが成功する理由は、手動でExcelを開くことをシミュレートできるためである可能性があります。
ここに画像の説明を挿入
1.xlrd

import xlrd
#打开excel
excel=xlrd.open_workbook("C://Users//18210//Downloads//WWReport_20200831085747.xlsx")
#选择Sheet
table=excel.sheet_by_index(0)
# table=excel.sheet_by_name('WW Report Data')
# 获取总行数
nrows=table.nrows
print(nrows)
# 获取总列数
ncols=table.ncols
print(ncols)
# 获取指定单元格的值
getVol = table.cell_value(21,2)
print(getVol)

ここに画像の説明を挿入
2.openpyxl

from openpyxl import load_workbook
#打开excel
f1='C:\\Users\\18210\\Downloads\\WWReport_20200831085747.xlsx'
wb = load_workbook(f1)
ws = wb.active
# 获取总列数
nrows=ws.max_row
ncols=ws.max_column
print(nrows)
print(ncols)
getVol = ws.cell(22,4).value
print(getVol)

ここに画像の説明を挿入
3.パンダ

import pandas
url='C:\\Users\\18210\\Downloads\\WWReport_20200831085747.xlsx'
sheetname = 'P&L Overview'   #sheet名称
data = pandas.read_excel(url,sheet_name=sheetname)
# d = data.head()   #显示前五行
lines = data.iloc[22].values  # iloc索引 返回列表除标题外的第一行数据
# rows = data.loc[:,'A'].values  #loc标签,返回列表第一列数据
print(lines)

ここに画像の説明を挿入
4.xlwings

import xlwings as xw
#指定不显示地打开Excel,读取Excel文件
app = xw.App(visible=False, add_book=False)
path = 'C:\\Users\\18210\\Downloads\\WWReport_20200831085747.xlsx'
# wb = xw.Book(path)
wb = app.books.open(path) # 打开Excel文件
ws = wb.sheets[0]# 选择第0个表单
# 获取表单使用信息:
info = ws.used_range
nrows = info.last_cell.row
print(nrows)
ncols = info.last_cell.column
print(ncols)
# data = ['北京', '上海']
# ws.range('A19').value = data
vol = ws.range('E22').value
print(vol)
wb.save()
# 关闭工作簿
wb.close()
# 退出当前活动excel程序
app.quit()

ここに画像の説明を挿入
しかし、取得した行の総数と列の総数が正しくないようです。何が問題なのかわかりません。

毎回ダウンロードされるExcel列の数が異なるため、xlwingsとxlrdは一緒に使用されます

import xlwings as xw
import os
import xlrd

def read_excel(file_path):
    # 指定不显示地打开Excel,读取Excel文件
    #file_path= 'C:\\Users\\18210\\Downloads\\WWReport_20200831085747.xlsx'
    app = xw.App(visible=False, add_book=False)
    wb = app.books.open(file_path)  # 打开Excel文件
    wb.save()
    wb.close()
    app.quit()
    # 打开excel
    excel = xlrd.open_workbook(file_path)
    table = excel.sheet_by_index(0)
    # nrows = table.nrows
    # print(nrows)
    ncols = table.ncols
    print(ncols)
    # 获取指定单元格的值
    getVol = table.cell_value(21, ncols - 1)
    getRev = table.cell_value(25, ncols - 1)
    getGP = table.cell_value(28, ncols - 1)
    return getVol,getRev,getGP

おすすめ

転載: blog.csdn.net/zhaoweiya/article/details/108321791