Как заполнить построчно таблицу в Excel с помощью Python?
Основная суть вопроса: как занести несколько Dataframe в одну таблицу excel? Программа берёт файл index.html и парсит его. При выводе в excel таблицу, значения переменной df записываются в одну строчку. Не получается сделать так, чтобы записывалась по-порядку 1 файл = 1 строка в excel. Данные после парсинга (переменной df) выглядят примерно так и они же заносятся в xlsx таблицу:
Show id detect
0 2 usbhub
0 2 wireless
Кто-нибудь знает возможно ли реализовать по строчное заполненине таблицы excel? Одна таблица равно 1 строка в excel. Кто знает, подскажите, пожалуйста, что я делаю не так. Если что не понятно, пишите
from bs4 import BeautifulSoup
import pandas as pd
from pandas import DataFrame
import os
from array import *
import openpyxl as ox
dir_viewer = os.listdir("/home/html/")
#print(dir_viewer)
for onedir in dir_viewer:
#Открывает файл для парсинга
cur_path = "/home/html/"+str(onedir)+"/index.html"
if os.path.exists(cur_path):
with open(cur_path) as fp:
soup = BeautifulSoup(fp, 'html.parser')
fp = pd.read_html(cur_path, match="Detect")
for record in fp:
#print(record)
#print('==================')
df = pd.DataFrame(fp)
export_csv = df.to_excel(r'program_lang.xlsx', index=None, header=None)
Ответы (2 шт):
Возможно Вы сможете адаптировать мою рабочую функцию под свои нужды.
import pandas as pd
import openpyxl as oxl
# пример словарь python
data = {"Company":"sony","Website":"sony.com","Country":"japan" }
def write_data():
try:
excel = pd.read_excel(r"E:\program_lang.xlsx", index_col=0)#открываем файл
row = len(excel.index) + 2# ищем пустую ячейку в файле
wb = oxl.load_workbook(r"E:\program_lang.xlsx")# загружаем существующий excel
sheet = wb.active
columns = ['A', 'B', 'C', 'D','N']# пишем нужные колонки excel для записи
col = 0
for k in data:
sheet[columns[col] + str(row)] = str(data[k])
col = col + 1
wb.save(r"E:\program_lang.xlsx")
except PermissionError:
print('--- Oшибка! Вы забыли закрыть excel фаил ---' )
Вообщем проблема решилась, добавлением строчек:
for_table=[]
for_table.append([onedir,fp])
from bs4 import BeautifulSoup
import pandas as pd
from pandas import DataFrame
import os
from array import *
dir_viewer = os.listdir("/home/html/")
for_table = []
for onedir in dir_viewer:
#Открывает файл для парсинга
cur_path = "/home/html/"+str(onedir)+"/index.html"
if os.path.exists(cur_path):
with open(cur_path) as fp:
soup = BeautifulSoup(fp, 'html.parser')
fp = pd.read_html(cur_path, match="Defect ID")
for record in fp:
print(record)
print('==================')
for_table.append([onedir,fp]) #onedir будет первым столбцом в экселе, fp вторым
export_csv = DataFrame(for_table).to_excel(r'program_lang.xlsx', index=None, header=None)
Всем спасибо за помощь!