Данные Sharepoint excel принимаются во фрейм данных Pandas без загрузки

#python #excel #pandas #azure #sharepoint

Вопрос:

Мне нужно перенести мой файл SharePoint excel в фрейм данных pandas, потому что мне нужно выполнить анализ с использованием python для этого файла excel. для доступа к SharePoint я использую приведенный ниже код, и он работает. Из приведенного ниже кода я могу получить доступ к своему файлу excel, который находится в SharePoint. Теперь я хочу перенести свой файл excel в фрейм данных pandas.итак, как я могу изменить приведенный ниже код?

 from office365.sharepoint.client_context import ClientContext

SP_SITE_URL ='https://asdfgh.sharepoint.com/sites/ABC/'
SP_DOC_LIBRARY ='Publications'
USERNAME ='asd@fgh.onmicrosoft.com'
PASSWORD ='******' 

# 1. Create a ClientContext object and use the user’s credentials for authentication 
ctx =ClientContext(SP_SITE_URL).with_user_credentials(USERNAME, PASSWORD) 

# 2. Read file entities from the SharePoint document library 
files = ctx.web.lists.get_by_title(SP_DOC_LIBRARY).root_folder.files 
ctx.load(files)
ctx.execute_query()

# 3. loop through file entities
for filein files: 
  # 4. Access the file object properties 
  print(file.properties['Name'], file.properties['UniqueId'])
  # 5. Access list item object through the file object 
  item = file.listItemAllFields
  ctx.load(item) 
  ctx.execute_query() 
  print('Access metadata - Category: {0}, Status: {1}'.format(item.properties['Category'], item.properties['Status']))

# 4. The Output: 
# File Handling in SharePoint Document Library Using Python.docx 77819f08-5fbe-450f-9f9b-d3ae2862cbb5
# Access metadata - Category: Python, Status: Submitted 
 

Ответ №1:

Для его работы файл должен будет присутствовать в памяти системы.

Найдите путь к файлу — он должен быть в Метаданных файла, которым вы уже являетесь.

С помощью приведенной ниже библиотеки :

 from office365.sharepoint.files.file import File 
 

Вы можете использовать приведенный ниже код, чтобы продолжить, сохранить его в памяти и прочитать из фрейма данных Panda.

 response = File.open_binary(ctx, url)

bytes_file_obj = io.BytesIO()
bytes_file_obj.write(response.content)
bytes_file_obj.seek(0) #set file object to start

df = pd.read_excel(bytes_file_obj, sheetname = <Sheetname>)
 

Комментарии:

1. Проследите, помогло ли вышеприведенное решение ?