sirius/main.go
2023-04-15 00:51:35 +10:00

69 lines
1.5 KiB
Go

package main
import (
"bytes"
"encoding/json"
"fmt"
"io/ioutil"
"os"
"strconv"
excelize "github.com/xuri/excelize/v2"
"gitstore.ru/tolikproh/sirius/model"
)
func main() {
var sirius model.Sirius
siriusJson, err := ioutil.ReadFile("sirius.json")
if err != nil {
fmt.Println("No read file: sirius.json")
os.Exit(0)
}
siriusJson = bytes.TrimPrefix(siriusJson, []byte("\xef\xbb\xbf"))
if !json.Valid(siriusJson) {
fmt.Println("Formated file not supported: sirius.json")
os.Exit(0)
}
fmt.Println("Start converted ....")
err = json.Unmarshal(siriusJson, &sirius)
if err != nil {
fmt.Println("Error unmarshal file: sirius.json")
os.Exit(0)
}
if err := SaveToExel("sirius.xlsx", sirius.NewBolid().ZoneInfo()); err != nil {
fmt.Println("Error create file: sirius.xlsx")
os.Exit(0)
}
fmt.Println("Converted finalise. Create file: sirius.xlsx")
}
func SaveToExel(filename string, data []model.ZoneInfo) error {
f := excelize.NewFile()
defer func() {
if err := f.Close(); err != nil {
return
}
}()
// Create a new sheet.
f.SetCellValue("Sheet1", "A2", "№ зоны")
f.SetCellValue("Sheet1", "B2", "Описание зоны")
f.SetCellValue("Sheet1", "C2", "Адреса в зоне")
i := 3
for _, d := range data {
f.SetCellValue("Sheet1", "A"+strconv.Itoa(i), d.ZoneNum)
f.SetCellValue("Sheet1", "B"+strconv.Itoa(i), d.ZoneName)
f.SetCellValue("Sheet1", "C"+strconv.Itoa(i), d.InputString())
i++
}
// Save spreadsheet by the given path.
if err := f.SaveAs(filename); err != nil {
return err
}
return nil
}