ParseExcel

The automation takes Excel file (entryID) as an input and parses its content to the war room and context.

python · Common Scripts

Source

import demistomock as demisto  # noqa: F401
import xlrd
from CommonServerPython import *  # noqa: F401

# Fixed xlrd known issue
xlrd.xlsx.ensure_elementtree_imported(False, None)
xlrd.xlsx.Element_has_iter = True


def parse_excel(file_entry_id):
    res = demisto.getFilePath(file_entry_id)
    file_path = res["path"]

    workbook = xlrd.open_workbook(file_path, on_demand=True)
    sheet_names = workbook.sheet_names()
    sheets = []
    context = {}

    for sheetnum in range(workbook.nsheets):
        worksheet = workbook.sheet_by_index(sheetnum)
        first_row = []
        for col in range(worksheet.ncols):
            first_row.append(str(worksheet.cell_value(0, col)))
        data = []
        for row in range(1, worksheet.nrows):
            elm = {}
            for col in range(worksheet.ncols):
                elm[first_row[col]] = worksheet.cell_value(row, col)
            data.append(elm)
        sheets.append(data)
        context["ParseExcel"] = sheets
        demisto.results(
            {
                "Type": entryTypes["note"],
                "Contents": data,
                "ContentsFormat": formats["json"],
                "HumanReadable": tableToMarkdown(sheet_names[sheetnum], data, first_row),
                "EntryContext": context,
            }
        )


def main():
    file_entry_id = demisto.args()["entryId"]
    parse_excel(file_entry_id)


# python2 uses __builtin__ python3 uses builtins
if __name__ == "__builtin__" or __name__ == "builtins":
    main()

README

Takes Excel files (entryID) as an input and parses the contents to the War Room and context.

Script Data


Name Description
Script Type python
Tags -

Inputs


Argument Name Description
entryId The entry ID of the Excel file.

Outputs


Path Description Type
ParseExcel   Unknown