Showing 7 changed files with 21 additions and 8 deletions
+8 -6
README.md
... ...
@@ -11,11 +11,11 @@ license below), you may download the binary.
11 11
 
12 12
 Here are the SHA-256 checksums for the binaries:
13 13
 
14
-    9cd013ac244c0d364302da1eab724ea93831f6088188bcaaae08545f00a4582a  csv2xlsx_386.exe
15
-    535c3937447497bd0769296d434c809b41e1ead7bc463f560888ec51cfb95794  csv2xlsx_amd64.exe
16
-    d491329c16f44d82c6d50bb4afa74bd704f25ade7e93b28d0ec0b747648c9a6e  csv2xlsx_linux_386
17
-    cfa63a9eb6ab4d9c418afe95cf54524b32611a01d970e95ed57831b1368406f1  csv2xlsx_linux_amd64
18
-    daa9ff8f2ccb49b6ccf4fd7d7b600011a8bd4ba9fe1b3870ce15dcbbe6fa1092  csv2xlsx_osx
14
+    86fab8cdb756d612391bdfca36641414424cb0cfe7c9c196329124976f3d3a8c  csv2xlsx_386.exe
15
+    91b94bb4c0acf91bcd2b3874d7ab7f96e204e6c0acb1d0119694bb740dedb6f4  csv2xlsx_amd64.exe
16
+    d1b3dc8bfa72647f4e92dbafede0ee729ccb488a7b2a400304634bf03439b744  csv2xlsx_linux_386
17
+    3e8661e7ef681c796452736e9004f19653ccf01c916f3c6a8b1e67d99f1e0ab5  csv2xlsx_linux_amd64
18
+    2933cdca783beca8fbcfccc2d396f4ec115c898a9f69680d6c64806ac84e1804  csv2xlsx_osx    
19 19
 
20 20
 ### Usage
21 21
 
... ...
@@ -44,6 +44,8 @@ Please see below for a list of command line options.
44 44
   -filemask
45 45
         bulk mode, specify a file mask here (e.g. "/use/docs/datalib/2018*.csv")
46 46
         make sure to quote the filespace to prevent shell globbing
47
+  -headerlines
48
+        specify number of header lines in the CSV file (default is 1, use 0 fpr no header)
47 49
   -h	
48 50
   -help
49 51
     	display usage information
... ...
@@ -60,7 +62,7 @@ Please see below for a list of command line options.
60 62
   -silent
61 63
     	do not display progress messages
62 64
   -noheader
63
-    	do not use the first line as header (default is Yes)
65
+    	do not use the first line as header (DEPRECATED, use headerlines option instaead)
64 66
 
65 67
         Column ranges are a comma-separated list of numbers (e.g. 1,4,8,16), intervals (e.g. 0-4,18-32) or a combination.
66 68
         Each comma group can take a type specifiers for the column,
+13 -2
csv2xlsx.go
... ...
@@ -27,6 +27,9 @@ var (
27 27
 	parmOutDir          string
28 28
 	parmFileMask        string
29 29
 	parmEncoding        string
30
+	parmHeaderLines     int
31
+	parmFontSize        int
32
+	parmFontName        string
30 33
 	parmColSep          rune
31 34
 	parmDateFormat      string
32 35
 	parmExcelDateFormat string
... ...
@@ -144,9 +147,12 @@ func parseCommandLine() {
144 147
 	flag.StringVar(&parmSheet, "sheet", "fromCSV", "tab name of the Excel sheet")
145 148
 	flag.StringVar(&tmpStr, "colsep", "|", "column separator (default '|') ")
146 149
 	flag.StringVar(&parmEncoding, "encoding", "utf-8", "character encoding")
150
+	flag.StringVar(&parmFontName, "fontname", "Arial", "set the font name to use")
151
+	flag.IntVar(&parmFontSize, "fontsize", 12, "set the default font size to use")
152
+	flag.IntVar(&parmHeaderLines, "headerlines", 1, "set the number of header lines (use 0 for no header)")
147 153
 	// not settable with csv reader
148 154
 	//flag.StringVar(&parmRowSep, "rowsep", "\n", "row separator (default LF) ")
149
-	flag.BoolVar(&parmNoHeader, "noheader", false, "no headers in first line, only data lines (default false)")
155
+	flag.BoolVar(&parmNoHeader, "noheader", false, "DEPRECATED (use headerlines) no header, only data lines")
150 156
 	flag.BoolVar(&parmAbortOnError, "abortonerror", false, "abort program on first invalid cell data type")
151 157
 	flag.BoolVar(&parmSilent, "silent", false, "do not display progress messages")
152 158
 	flag.BoolVar(&parmAutoFormula, "autoformula", false, "automatically format string starting with = as formulae")
... ...
@@ -402,7 +408,8 @@ func processDataColumns(excelRow *xlsx.Row, rownum int, csvLine []string) {
402 408
 		colType, processColumn := colRangeParsed[colnum]
403 409
 		if processColumn {
404 410
 			cell := excelRow.AddCell()
405
-			if rownum == 0 && !parmNoHeader {
411
+			isHeader := (parmHeaderLines > 0) || !parmNoHeader
412
+			if isHeader && (rownum <= parmHeaderLines) {
406 413
 				// special case for the title row
407 414
 				cell.SetString(csvLine[colnum])
408 415
 				if colType == "number" || colType == "currency" {
... ...
@@ -435,6 +442,9 @@ func getInputFiles(inFileSpec string) []string {
435 442
 // return a string with the target file name
436 443
 func buildOutputName(infile string) string {
437 444
 	outfile := strings.TrimSuffix(infile, filepath.Ext(infile)) + ".xlsx"
445
+	if parmOutFile != "" {
446
+		outfile = parmOutFile
447
+	}
438 448
 	if parmOutDir != "" {
439 449
 		if _, err := os.Stat(parmOutDir); err == nil {
440 450
 			outfile = filepath.Join(parmOutDir, filepath.Base(outfile))
... ...
@@ -452,6 +462,7 @@ func convertFile(infile, outfile string) {
452 462
 	setRangeInformation(len(rows), len(rows[0]))
453 463
 
454 464
 	// excel stuff, create file, add worksheet, define a right-aligned style
465
+	xlsx.SetDefaultFont(parmFontSize, parmFontName)
455 466
 	workBook = xlsx.NewFile()
456 467
 	workSheet, _ = workBook.AddSheet(parmSheet)
457 468
 	rightAligned = &xlsx.Style{}
BIN
csv2xlsx_386.exe
Binary file not shown.
BIN
csv2xlsx_amd64.exe
Binary file not shown.
BIN
csv2xlsx_linux_386
Binary file not shown.
BIN
csv2xlsx_linux_amd64
Binary file not shown.
BIN
csv2xlsx_osx
Binary file not shown.