Initial commit
This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
package utils
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"strconv"
|
||||
)
|
||||
|
||||
const TotalRows = 1048576
|
||||
|
||||
const MinColumns = 1
|
||||
|
||||
const MaxColumns = 16384
|
||||
|
||||
// ColumnNumberToName provides a function to convert the integer to Excel
|
||||
// sheet column title.
|
||||
//
|
||||
// Example:
|
||||
//
|
||||
// excelize.ColumnNumberToName(37) // returns "AK", nil
|
||||
func ColumnNumberToName(num int) (string, error) {
|
||||
if num < MinColumns || num > MaxColumns {
|
||||
return "", fmt.Errorf("the column number must be greater than or equal to %d and less than or equal to %d", MinColumns, MaxColumns)
|
||||
}
|
||||
var col string
|
||||
for num > 0 {
|
||||
col = string(rune((num-1)%26+65)) + col
|
||||
num = (num - 1) / 26
|
||||
}
|
||||
return col, nil
|
||||
}
|
||||
|
||||
// CoordinatesToCellName converts [X, Y] coordinates to alpha-numeric cell
|
||||
// name or returns an error.
|
||||
//
|
||||
// Example:
|
||||
//
|
||||
// excelize.CoordinatesToCellName(1, 1) // returns "A1", nil
|
||||
// excelize.CoordinatesToCellName(1, 1, true) // returns "$A$1", nil
|
||||
func CoordinatesToCellName(col, row int, abs ...bool) (string, error) {
|
||||
if col < 1 || row < 1 {
|
||||
return "", errors.New("col row < 0")
|
||||
}
|
||||
if row > TotalRows {
|
||||
return "", errors.New("row number exceeds maximum limit")
|
||||
}
|
||||
colName, err := ColumnNumberToName(col)
|
||||
return colName + strconv.Itoa(row), err
|
||||
}
|
||||
Reference in New Issue
Block a user