第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

golang excelize 如何復(fù)制單元格及其格式

golang excelize 如何復(fù)制單元格及其格式

Go
天涯盡頭無女友 2022-11-15 17:12:01
我github.com/xuri/excelize/v2用來處理excel文件。我將許多 excel 文件中的許多表附加到一張 excel 中的一張表中。下面是示例代碼。    var mergedRows [][]string    for _, f := range files {        excelPath := folder + "/" + f.Name()        rows := loadXlsx(excelPath, sheetName)        for _, row := range rows[rowOffset:] {            mergedRows = append(mergedRows, row)        }    }    saveXlsx(aggregatedFilePath, sheetName, mergedRows, rowOffset)...func loadXlsx(xlsxPath string, sheetName string) [][]string {    f, err := excelize.OpenFile(xlsxPath)    if err != nil {        log.Fatal(err)    }    defer func() {        if err := f.Close(); err != nil{            fmt.Println(err)        }    }()    rows, err := f.GetRows(sheetName)    if err != nil {        log.Fatal(err)    }    return rows}func saveXlsx(path string, sheetName string, rows [][]string, rowOffset int) {    f, err := excelize.OpenFile(path)    if err != nil {        log.Fatal(err)    }    defer func() {        if err := f.Close(); err != nil{            fmt.Println(err)        }    }()    index := f.GetSheetIndex(sheetName)    offset := 1    sequence := 1    for _, row := range rows{        row[0] = strconv.Itoa(sequence)        sequence = sequence + 1        offset = offset + 1        axis := "A" + strconv.Itoa(offset)        f.SetSheetRow(sheetName, axis, &row)    }    for index, _ := range rows[0] {        axis, _ := excelize.CoordinatesToCellName(index, 2)        column, _ := excelize.ColumnNumberToName(index)        styleId, _ := f.GetCellStyle(sheetName, axis)        cellType, _ := f.GetCellType(sheetName, axis)        fmt.Println(styleId)        fmt.Println(cellType)        f.SetColStyle(sheetName, column, styleId)    }    f.SetActiveSheet(index)    if err := f.Save(); err != nil {        fmt.Println(err)    }}這有效,除了一些數(shù)據(jù)格式問題。數(shù)字的樣式被復(fù)制,但不起作用;日期已復(fù)制,但值錯誤。在源文件中,有一些數(shù)字采用 2 位小數(shù)格式并顯示為70.12,而在輸出文件中格式相同但顯示為70.119。在源文件中,有一些 Y/m/d 格式的日期顯示為2022/1/12,而在輸出文件中格式相同但顯示為01-12-22.
查看完整描述

1 回答

?
當(dāng)年話下

TA貢獻(xiàn)1890條經(jīng)驗(yàn) 獲得超9個贊

手冊

func (f *File) GetRows(sheet string, opts ...Options) ([][]string, error)

如果單元格格式可以應(yīng)用于單元格的值,將使用應(yīng)用的值,否則將使用原始值。

所以在我的問題中,rows, err := f.GetRows(sheetName)將復(fù)制帶有格式的日期和數(shù)字值,而不是原始數(shù)字。格式化值可能會轉(zhuǎn)換為非等值。

解決方案只是使用RawCellValue選項(xiàng)讀取原始值true,

rows, err := f.GetRows(sheetName, excelize.Options{RawCellValue:true})

如果格式發(fā)生變化,只需將原始文件的樣式應(yīng)用到新文件即可。


查看完整回答
反對 回復(fù) 2022-11-15
  • 1 回答
  • 0 關(guān)注
  • 389 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號