2 Commits

Author SHA1 Message Date
2a89008a54 generate empty workbook if no data to add 2023-06-15 10:41:33 +10:00
c91d38f96c fix json keys 2023-05-31 11:51:04 +10:00
2 changed files with 17 additions and 7 deletions

View File

@@ -22,6 +22,6 @@ Advanced settings can be provided via a top level json key named "config". Here
| Key | Example Value | Description |
|---------------|---------------|---------------------------|
| key-order | "Column3,Column1,Column2"| Comma separated list of column names in the desired order |
| overwrite-file | true | Boolean indicating whether output file should be overwritten if it already exists |
| parent-node | "results" | Specify an alternate starting key for the spreadsheet data than just the first non-config key. Useful with json structures with multiple top-level keys |
| keyOrder | "Column3,Column1,Column2"| Comma separated list of column names in the desired order |
| overwriteFile | true | Boolean indicating whether output file should be overwritten if it already exists |
| parentNode | "results" | Specify an alternate starting key for the spreadsheet data than just the first non-config key. Useful with json structures with multiple top-level keys |

View File

@@ -114,18 +114,18 @@ func main() {
// Parse each key into our config struct
for _, key := range configKeys {
if strings.EqualFold(key, "key-order") {
fmt.Printf("Found config element for key-order\n")
if strings.EqualFold(key, "keyOrder") {
fmt.Printf("Found config element for keyOrder\n")
e, _ := configMap.Get(key)
for i, e := range strings.Split(e.(string), ",") {
config.keyOrder[i] = e
}
fmt.Printf("Column order is now : '%v'\n", config.keyOrder)
} else if strings.EqualFold(key, "overwrite-file") {
} else if strings.EqualFold(key, "overwriteFile") {
fmt.Printf("Found config element for overwriting output file\n")
e, _ := configMap.Get(key)
overwriteFile = e.(bool)
} else if strings.EqualFold(key, "parent-node") {
} else if strings.EqualFold(key, "parentNode") {
fmt.Printf("Found config element for forcing parent key for spreadsheet data\n")
e, _ := configMap.Get(key)
config.parentOverride = e.(string)
@@ -153,6 +153,16 @@ func main() {
// Get an interface that we can work with to access the sub elements
vslice := vislice.([]interface{})
if len(vslice) < 1 {
// There was no data but lets just log that and close off the empty workbook
fmt.Printf("No data found contained in top-level json key '%s', no work to do.\n", parentNode)
// Close off the file
if err := xlsx.SaveAs(outputFilename); err != nil {
log.Fatal(err)
}
return
}
// Check that the first element is what we expected
if _, ok := vslice[0].(orderedmap.OrderedMap); !ok {
error := fmt.Sprintf("Type of first vslice element is not an ordered map. It appears to be '%v'\n", reflect.TypeOf(vslice[0]))