dumpXLSX.go 956 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. package main
  2. import (
  3. "fmt"
  4. "os"
  5. "github.com/360EntSecGroup-Skylar/excelize"
  6. )
  7. func main() {
  8. // Exit on missing filename
  9. if len(os.Args) < 2 || os.Args[1] == "" {
  10. fmt.Println("Syntax: dumpXLSX <filename.xlsx>")
  11. os.Exit(1)
  12. }
  13. // Open file and panic on error
  14. fmt.Println("Reading ", os.Args[1])
  15. xlsx, err := excelize.OpenFile(os.Args[1])
  16. if err != nil {
  17. panic(err)
  18. }
  19. // Read all sheets in map
  20. for i, sheet := range xlsx.GetSheetMap() {
  21. //Output sheet header
  22. fmt.Printf("----- %d. %s -----\n", i, sheet)
  23. // Get rows
  24. rows := xlsx.GetRows(sheet)
  25. // Create a row number prefix pattern long enough to fit all row numbers
  26. prefixPattern := fmt.Sprintf("%% %dd ", len(fmt.Sprintf("%d", len(rows))))
  27. // Walk through rows
  28. for j, row := range rows {
  29. // Output row number as prefix
  30. fmt.Printf(prefixPattern, j)
  31. // Output row content
  32. for _, cell := range row {
  33. fmt.Print(cell, "\t")
  34. }
  35. fmt.Println()
  36. }
  37. }
  38. }