Skip to content

Commit 6fcc29e

Browse files
committed
Move read excel code to FL Util
1 parent aec5bf1 commit 6fcc29e

File tree

2 files changed

+3
-90
lines changed

2 files changed

+3
-90
lines changed

requirements.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,4 @@ reuse
55
PyYAML
66
xlrd==1.2.0
77
XlsxWriter==1.2.9
8-
fosslight_util>=1.4.2
8+
fosslight_util>=1.4.3

src/fosslight_oss_pkg/_parsing_excel.py

Lines changed: 2 additions & 89 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,14 @@
22
# -*- coding: utf-8 -*-
33
# Copyright (c) 2021 LG Electronics Inc.
44
# SPDX-License-Identifier: GPL-3.0-only
5-
6-
import xlrd
75
import logging
86
import os
9-
import json
107
import yaml
118
from fosslight_util.constant import LOGGER_NAME
12-
from fosslight_util.oss_item import OssItem
13-
from fosslight_util.parsing_yaml import find_all_oss_pkg_files, parsing_yml, set_value_switch
9+
from fosslight_util.parsing_yaml import find_all_oss_pkg_files, parsing_yml
1410
from fosslight_util.write_excel import write_result_to_excel, write_result_to_csv
1511
from fosslight_util.write_yaml import create_yaml_with_ossitem
12+
from fosslight_util.read_excel import read_oss_report
1613

1714
logger = logging.getLogger(LOGGER_NAME)
1815
IDX_CANNOT_FOUND = -1
@@ -78,87 +75,3 @@ def convert_excel_to_yaml(oss_report_to_read, output_file, sheet_names=""):
7875
def write_yaml_file(output_file, json_output):
7976
with open(output_file, 'w') as f:
8077
yaml.dump(json_output, f, sort_keys=False)
81-
82-
83-
def read_oss_report(excel_file, sheet_names=""):
84-
_oss_report_items = []
85-
_xl_sheets = []
86-
SHEET_PREFIX_TO_READ = ["bin", "bom", "src"]
87-
if sheet_names:
88-
sheet_name_prefix_math = False
89-
sheet_name_to_read = sheet_names.split(",")
90-
else:
91-
sheet_name_prefix_math = True
92-
sheet_name_to_read = SHEET_PREFIX_TO_READ
93-
94-
try:
95-
logger.info(f"Read data from : {excel_file}")
96-
xl_workbook = xlrd.open_workbook(excel_file)
97-
for sheet_name in xl_workbook.sheet_names():
98-
try:
99-
sheet_name_lower = sheet_name.lower()
100-
if any(((sheet_name_prefix_math and sheet_name_lower.startswith(sheet_to_read.lower()))
101-
or sheet_name_lower == sheet_to_read.lower())
102-
for sheet_to_read in sheet_name_to_read):
103-
sheet = xl_workbook.sheet_by_name(sheet_name)
104-
if sheet:
105-
logger.info(f"Load a sheet: {sheet_name}")
106-
_xl_sheets.append(sheet)
107-
except Exception as error:
108-
logger.debug(f"Failed to load sheet: {sheet_name} {error}")
109-
110-
for xl_sheet in _xl_sheets:
111-
_item_idx = {
112-
"ID": IDX_CANNOT_FOUND,
113-
"Source Name or Path": IDX_CANNOT_FOUND,
114-
"Binary Name": IDX_CANNOT_FOUND,
115-
"OSS Name": IDX_CANNOT_FOUND,
116-
"OSS Version": IDX_CANNOT_FOUND,
117-
"License": IDX_CANNOT_FOUND,
118-
"Download Location": IDX_CANNOT_FOUND,
119-
"Homepage": IDX_CANNOT_FOUND,
120-
"Exclude": IDX_CANNOT_FOUND,
121-
"Copyright Text": IDX_CANNOT_FOUND,
122-
"Comment": IDX_CANNOT_FOUND,
123-
"File Name or Path": IDX_CANNOT_FOUND
124-
}
125-
num_cols = xl_sheet.ncols
126-
num_rows = xl_sheet.nrows
127-
MAX_FIND_HEADER_COLUMN = 5 if num_rows > 5 else num_rows
128-
DATA_START_ROW_IDX = 1
129-
for row_idx in range(0, MAX_FIND_HEADER_COLUMN):
130-
for col_idx in range(row_idx, num_cols):
131-
cell_obj = xl_sheet.cell(row_idx, col_idx)
132-
if cell_obj.value in _item_idx:
133-
_item_idx[cell_obj.value] = col_idx
134-
135-
if len([key for key, value in _item_idx.items() if value != IDX_CANNOT_FOUND]) > 3:
136-
DATA_START_ROW_IDX = row_idx + 1
137-
break
138-
139-
# Get all values, iterating through rows and columns
140-
column_keys = json.loads(json.dumps(_item_idx))
141-
142-
for row_idx in range(DATA_START_ROW_IDX, xl_sheet.nrows):
143-
item = OssItem("")
144-
valid_row = True
145-
load_data_cnt = 0
146-
147-
for column_key, column_idx in column_keys.items():
148-
if column_idx != IDX_CANNOT_FOUND:
149-
cell_obj = xl_sheet.cell(row_idx, column_idx)
150-
cell_value = cell_obj.value
151-
if cell_value != "":
152-
if column_key != "ID":
153-
if column_key:
154-
column_key = column_key.lower().strip()
155-
set_value_switch(item, column_key, cell_value)
156-
load_data_cnt += 1
157-
else:
158-
valid_row = False if cell_value == "-" else True
159-
if valid_row and load_data_cnt > 0:
160-
_oss_report_items.append(item)
161-
162-
except Exception as error:
163-
logger.error(f"Parsing a OSS Report: {error}")
164-
return _oss_report_items

0 commit comments

Comments
 (0)