Metadata-Version: 2.1
Name: excel2dict
Version: 0.0.1
Summary: A converting excel file to python data structure package
Home-page: https://github.com/rwakaba/excel2dict
Author: Ryosuke Wakaba
Author-email: wakaba.ryosule@gmail.com
License: UNKNOWN
Description: # excel2dict
        
        excel2dict support easy loading data from excel files.
        
        ## Intalling
        ```
        pip install excel2dict
        ```
        
        ## Quick Over View
        
        Assuming below sample data was saved as excel file named Book.xslx.
        
        |foo|bar|
        |--|--|
        |'a'|1|
        |'b'|2|
        
        
        Simply, To convert to JSON format text file with command line.
        
        ```
        $ excel2dict Book.xlsx > out.json
        $ less out.json
        [
          {
            "foo": 'a',
            "bar": 1 
          },
          {
            "foo": 'b',
            "bar": 2 
          }
        ]
        ```
        
        As well, you can do the same thing in python script.
        
        ```
        >>> import excel2dict
        >>> excel2dict.to_dict('Book.xlsx')
        [
          {
            "foo": 'a',
            "bar": 1 
          },
          {
            "foo": 'b',
            "bar": 2 
          }
        ]
        ```
        
        ## Using Sheet Definition
        As above example, at simple usage, some data representing dedicated data type(boolean, date, etc) in excel can not be handled usefully.
        
        For this use case, you use a sheet definition file. if exists, excel2dict load a definition file named `sheet_definition.yaml` from the directory which a target excel file is saved in or optional argument specified to by `-s`.
        
        ### sample definition
        ```
        sheets:
        - name: Members
          cols: 
            - name: member_no
              schema:
                type: int
            - name: name
              schema:
                type: string
            - name: is_active
              schema:
                type: bool
        ```
        
        ### Label Definition
        Normally, sheet name is named in a business context in which the name may include multibyte character, space, etc. but for handling in script or JSON text file, named only ascii character is useful.
        For this, you can add `label` definition to the definition.
        
        #### For Sheet
        ```
        sheets:
        - name: members
          label: New Members
        ```
        
        #### For Column
        ```
        cols: 
          - name: name
            label: Member's Name
        ```
        
        ### Data Type Definition
        excel2dict suppot below data type.
        
        #### int
        ```
        schema:
          type: int
        ```
        #### str
        ```
        schema:
          type: str
        ```
        #### bool
        ```
        schema:
          type: bool
        ```
        #### date
        ```
        schema:
          type: date
        ```
        #### datetime
        ```
        schema:
          type: datetime
        ```
        
        For needing to adjust timezone, specifing offset is avalable.
        ```
        schema:
          type: datetime
          offset: 9
        ```
        For example, `2019-07-26T09:00:00` in JST, this setting convert the datetime to `2019-07-26T00:00:00`
        
        ## A Bit Odd Function
        For rare use case, you may need to convert values defined in other sheets as nested structure.
        
        For example, assuming there were 2 sheets as below,  
        
        #### Sheet1
        |User|Access Right|
        |--|--|
        |Scott|Admin|
        |Tom|General|
        
        #### Sheet2
        |Access Right|Read|Write|
        |--|--|--|
        |Admin|O|O|
        |General|O|X|
        
        #### Sheet Definition
        On Sheet1 setting, specify `type` with `ref` and `sheet` with reference sheet name.
        
        ```
        sheets:
        - name: Sheet1
          columns:
            - name: user
              label: User
              schema:
                type: int
            - name: access_right
              label: Access Right
              schema:
                type: ref
                sheet: Sheet2
        - name: Sheet2
          columns:
            - name: ref_name
              label: Access Right
        ```
        
        #### Output
        You can get an output like below format defining as `ref` type.
        ```
        [
            {
              "user": "Scott",
              "access_right": {
                "Read": "O",
                "Write": "O"
              }
            },
            {
              "user": "Tom",
              "access_right": {
                "Read": "O",
                "Write": "X"
              }
            }
          ]
        ```
        
        ## How to specify
        Required setting are type and sheet.
        - type: `ref`
        - sheet: reference sheet name
        
        ```
        schema:
          type: ref
          sheet: Sheet2
        ```
        
        For array, specifing `is_array` is avalable.
        ```
        schema:
          type: ref
          sheet: Sheet2
          is_array: true        
        ```
Platform: UNKNOWN
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Description-Content-Type: text/markdown
