-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathexcel_reader.py
More file actions
60 lines (49 loc) · 2.09 KB
/
Copy pathexcel_reader.py
File metadata and controls
60 lines (49 loc) · 2.09 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
"""
class ExcelReader
Læser en Excel-fil og returnerer en liste af url- og filnavn tuples.
Args:
file_path (str): Stien til Excel-filen
url_column (str): Navnet på kolonnen med URL
name_column (str): Navnet på kolonnen med filnavne
Functions:
read_data(file_path, ..): Læser data og lægger det i tuples[url, name]
Returns:
list[tuple[str, str]]: Liste af url/filnavn par
"""
# Panel Data import
import pandas as pd
from logger import LoggerService
class ExcelReader:
# initialisering af klassen
def __init__(self, logger: LoggerService):
self.logger = logger
# funktion der forsøger at læse i et Excel-ark og finde udvalgte kolonner
def read_data(self, file_path: str, url_column: str, name_column: str) -> list[tuple[str, str]]:
self.logger.log_info(f"Forsøger at læse Excel-ark i '{file_path}'")
# try-except til hvis filen ikke findes eller ikke kan læses
try:
df = pd.read_excel(file_path)
except FileNotFoundError:
raise FileNotFoundError(f"Filen '{file_path}' blev ikke fundet.")
except Exception as e:
raise ValueError(f"Kunne ikke læse Excel-filen: {e}")
# fjerner whitespace i valgte kolonner
df.columns = df.columns.astype(str).str.strip()
# Tjek om url kolonnen eksisterer
if url_column not in df.columns:
raise ValueError(f"Mangler kolonnen '{url_column}' i Excel filen.")
# tjek om name kolonnen eksisterer
if name_column not in df.columns:
raise ValueError(f"Mangler kolonnen '{name_column}' i Excel filen.")
# Opsæt data tuples så url og navne danner par
# Derefter fjern whitespace
data = []
for _, row in df.iterrows():
url = str(row[url_column]).strip()
name = str(row[name_column]).strip()
if pd.notna(url) and url:
data.append((url, name))
# Tjek om der er URL'er i kolonnerne
if not data:
raise ValueError("Ingen gyldige URL'er fundet i filen.")
return data