|
@@ -4,6 +4,7 @@ import (
|
|
|
"encoding/json"
|
|
|
"fmt"
|
|
|
"hongze/hongze_chart_lib/utils"
|
|
|
+ "sort"
|
|
|
)
|
|
|
|
|
|
type LuckySheetDataBak struct {
|
|
@@ -494,3 +495,77 @@ func handleCellVal(tmpTableColData LuckySheetDataValue) (valueStr string) {
|
|
|
}
|
|
|
return
|
|
|
}
|
|
|
+
|
|
|
+type CellPosition struct {
|
|
|
+ RowIndex int
|
|
|
+ ColumnIndex int
|
|
|
+}
|
|
|
+
|
|
|
+// HandleTableCell 前端d毛需要我根据合并单元格处理掉多余的单元格
|
|
|
+func HandleTableCell(oldTableData TableData) (newTableData TableData) {
|
|
|
+ newTableData = oldTableData
|
|
|
+
|
|
|
+ mergeList := oldTableData.MergeList
|
|
|
+ lenMergeList := len(mergeList)
|
|
|
+ if lenMergeList <= 0 {
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ deleteRowMap := make(map[int]map[int]int)
|
|
|
+ deleteRowList := make([]int, 0)
|
|
|
+ deleteColumnMap := make(map[int][]int, 0)
|
|
|
+ for i := lenMergeList - 1; i >= 0; i-- {
|
|
|
+ tmpMerge := mergeList[i]
|
|
|
+
|
|
|
+ //
|
|
|
+ for rowIndex := tmpMerge.MergeRowNum; rowIndex >= 0; rowIndex-- {
|
|
|
+ tmpColumnMap := make(map[int]int)
|
|
|
+ if columnMap, ok := deleteRowMap[tmpMerge.StartRowIndex+rowIndex]; ok {
|
|
|
+ tmpColumnMap = columnMap
|
|
|
+ } else {
|
|
|
+ deleteRowList = append(deleteRowList, tmpMerge.StartRowIndex+rowIndex)
|
|
|
+ }
|
|
|
+
|
|
|
+ deleteColumnList := make([]int, 0)
|
|
|
+ if columnList, ok := deleteColumnMap[tmpMerge.StartRowIndex+rowIndex]; ok {
|
|
|
+ deleteColumnList = columnList
|
|
|
+ }
|
|
|
+
|
|
|
+ for columnIndex := tmpMerge.MergeColumnNum; columnIndex >= 0; columnIndex-- {
|
|
|
+ if rowIndex == 0 && columnIndex == 0 {
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ tmpColumnMap[tmpMerge.StartColumnIndex+columnIndex] = tmpMerge.StartColumnIndex + columnIndex
|
|
|
+ deleteColumnList = append(deleteColumnList, tmpMerge.StartColumnIndex+columnIndex)
|
|
|
+ }
|
|
|
+
|
|
|
+ // 待删除的行
|
|
|
+ deleteRowMap[tmpMerge.StartRowIndex+rowIndex] = tmpColumnMap
|
|
|
+ // 该行待删除的列
|
|
|
+ deleteColumnMap[tmpMerge.StartRowIndex+rowIndex] = deleteColumnList
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ sort.Ints(deleteRowList)
|
|
|
+ //for k, v := range deleteRowList {
|
|
|
+ // fmt.Println("k:", k, "v:", v)
|
|
|
+ //}
|
|
|
+ //return
|
|
|
+ //fmt.Println("===============")
|
|
|
+
|
|
|
+ for i := len(deleteRowList) - 1; i >= 0; i-- {
|
|
|
+ rowIndex := deleteRowList[i]
|
|
|
+ deleteColumnList := deleteColumnMap[rowIndex]
|
|
|
+ sort.Ints(deleteColumnList)
|
|
|
+ for i := len(deleteColumnList) - 1; i >= 0; i-- {
|
|
|
+ columnIndex := deleteColumnList[i]
|
|
|
+
|
|
|
+ tmpColumnDataList := newTableData.TableDataList[rowIndex]
|
|
|
+
|
|
|
+ newTableData.TableDataList[rowIndex] = append(tmpColumnDataList[:columnIndex], tmpColumnDataList[columnIndex+1:]...) // 删除开头N个元素
|
|
|
+ //fmt.Println("row:", rowIndex, "===column:", columnIndex)
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return
|
|
|
+}
|