|
@@ -8,6 +8,7 @@ import (
|
|
"fmt"
|
|
"fmt"
|
|
"os"
|
|
"os"
|
|
"reflect"
|
|
"reflect"
|
|
|
|
+ "regexp"
|
|
"strconv"
|
|
"strconv"
|
|
"strings"
|
|
"strings"
|
|
"time"
|
|
"time"
|
|
@@ -1427,22 +1428,22 @@ func getExcelizeAlignmentConf(cellInfo LuckySheetDataValue) *excelize.Alignment
|
|
|
|
|
|
// getColor 获取hex颜色
|
|
// getColor 获取hex颜色
|
|
func getColor(bgStr string) string {
|
|
func getColor(bgStr string) string {
|
|
- if strings.Contains(bgStr, "(") {
|
|
|
|
- arr := strings.Split(bgStr, ",")
|
|
|
|
- if len(arr) != 3 {
|
|
|
|
|
|
+ isRgb := strings.HasPrefix(bgStr, "rgb")
|
|
|
|
+ re := regexp.MustCompile(`\(([^)]+)\)`)
|
|
|
|
+ matches := re.FindStringSubmatch(bgStr)
|
|
|
|
+ if len(matches) != 2 {
|
|
|
|
+ return bgStr
|
|
|
|
+ }
|
|
|
|
+ if isRgb {
|
|
|
|
+ arr := strings.Split(matches[1], ",")
|
|
|
|
+ if len(arr) < 3 {
|
|
return bgStr
|
|
return bgStr
|
|
}
|
|
}
|
|
-
|
|
|
|
- // 第一位
|
|
|
|
- tmpFirstArr := strings.Split(arr[0], "(")
|
|
|
|
- arr[0] = tmpFirstArr[len(tmpFirstArr)-1]
|
|
|
|
-
|
|
|
|
- // 最后一位
|
|
|
|
- tmpLastArr := strings.Split(arr[2], ")")
|
|
|
|
- arr[2] = tmpLastArr[0]
|
|
|
|
-
|
|
|
|
rgbArr := make([]int64, 0)
|
|
rgbArr := make([]int64, 0)
|
|
- for _, v := range arr {
|
|
|
|
|
|
+ for i, v := range arr {
|
|
|
|
+ if i >= 3 {
|
|
|
|
+ continue
|
|
|
|
+ }
|
|
tmpInt, err := strconv.Atoi(utils.TrimStr(v))
|
|
tmpInt, err := strconv.Atoi(utils.TrimStr(v))
|
|
if err != nil {
|
|
if err != nil {
|
|
return bgStr
|
|
return bgStr
|
|
@@ -1717,6 +1718,35 @@ func GetTableDataByCustomData(excelType int, data request.TableDataReq, lang str
|
|
return
|
|
return
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+func rgbStrToHex(rgbStr string) string {
|
|
|
|
+ isRgba := strings.HasPrefix(rgbStr, "rgba")
|
|
|
|
+ re := regexp.MustCompile(`\(([^)]+)\)`)
|
|
|
|
+ matches := re.FindStringSubmatch(rgbStr)
|
|
|
|
+ if len(matches) != 2 {
|
|
|
|
+ return ""
|
|
|
|
+ }
|
|
|
|
+ rgbParts := strings.Split(matches[1], ",")
|
|
|
|
+ var hexColor string
|
|
|
|
+ // 默认如果不是rgba,则认为是rgb
|
|
|
|
+ if isRgba {
|
|
|
|
+ if len(rgbParts) != 4 {
|
|
|
|
+ return ""
|
|
|
|
+ }
|
|
|
|
+ // 暂不处理a通道
|
|
|
|
+ // a, _ := strconv.ParseFloat(strings.TrimSpace(rgbParts[3]), 64)
|
|
|
|
+ // a255 := int(a * 255)
|
|
|
|
+ } else {
|
|
|
|
+ if len(rgbParts) != 3 {
|
|
|
|
+ return ""
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ r, _ := strconv.Atoi(strings.TrimSpace(rgbParts[0]))
|
|
|
|
+ g, _ := strconv.Atoi(strings.TrimSpace(rgbParts[1]))
|
|
|
|
+ b, _ := strconv.Atoi(strings.TrimSpace(rgbParts[2]))
|
|
|
|
+ hexColor = fmt.Sprintf("#%02x%02x%02x", r, g, b)
|
|
|
|
+ return hexColor
|
|
|
|
+}
|
|
|
|
+
|
|
// GetTableDataByMixedTableData 通过混合表格数据获取表格数据
|
|
// GetTableDataByMixedTableData 通过混合表格数据获取表格数据
|
|
func GetTableDataByMixedTableData(config [][]request.MixedTableCellDataReq, hideMerged bool) (selfTableData TableData, err error) {
|
|
func GetTableDataByMixedTableData(config [][]request.MixedTableCellDataReq, hideMerged bool) (selfTableData TableData, err error) {
|
|
tableDataList := make([][]LuckySheetDataValue, 0)
|
|
tableDataList := make([][]LuckySheetDataValue, 0)
|