45 lines
1.5 KiB
Go
45 lines
1.5 KiB
Go
// Copyright (c) [2022] [程凯 ckfavor@163.com]
|
|
// [ohUrlShortener] is licensed under Mulan PSL v2.
|
|
// You can use this software according to the terms and conditions of the Mulan PSL v2.
|
|
// You may obtain a copy of Mulan PSL v2 at:
|
|
// http://license.coscl.org.cn/MulanPSL2
|
|
// THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
|
|
// See the Mulan PSL v2 for more details.
|
|
|
|
package export
|
|
|
|
import (
|
|
"errors"
|
|
"strconv"
|
|
|
|
"ohurlshortener/core"
|
|
|
|
"github.com/xuri/excelize/v2"
|
|
)
|
|
|
|
func AccessLogToExcel(logs []core.AccessLog) ([]byte, error) {
|
|
if logs == nil {
|
|
return nil, errors.New("数据为空")
|
|
}
|
|
f := excelize.NewFile()
|
|
index := f.NewSheet("Sheet1")
|
|
// 填充表头
|
|
f.SetCellValue("Sheet1", "A1", "短链接")
|
|
f.SetCellValue("Sheet1", "B1", "访问时间")
|
|
f.SetCellValue("Sheet1", "C1", "访问IP")
|
|
f.SetCellValue("Sheet1", "D1", "UserAgent")
|
|
for i := 0; i < len(logs); i++ {
|
|
f.SetCellValue("Sheet1", "A"+strconv.Itoa(i+2), logs[i].ShortUrl)
|
|
f.SetCellValue("Sheet1", "B"+strconv.Itoa(i+2), logs[i].AccessTime)
|
|
f.SetCellValue("Sheet1", "C"+strconv.Itoa(i+2), logs[i].Ip.String)
|
|
f.SetCellValue("Sheet1", "D"+strconv.Itoa(i+2), logs[i].UserAgent.String)
|
|
}
|
|
f.SetActiveSheet(index)
|
|
if excellBytes, erorrW := f.WriteToBuffer(); erorrW != nil {
|
|
return nil, erorrW
|
|
} else {
|
|
return excellBytes.Bytes(), nil
|
|
}
|
|
|
|
}
|