代码拉取完成,页面将自动刷新
package helper
import (
"github.com/tealeg/xlsx"
"strings"
)
type XlsxFile struct {
file *xlsx.File
sheets []TableSheet
}
func (self *XlsxFile) Sheets() (ret []TableSheet) {
return self.sheets
}
func (self *XlsxFile) Save(filename string) error {
return self.file.Save(filename)
}
func (self *XlsxFile) Load(filename string) error {
file, err := xlsx.OpenFile(filename)
if err != nil {
return err
}
self.FromXFile(file)
return nil
}
func (self *XlsxFile) FromXFile(file *xlsx.File) {
self.file = file
for _, sheet := range file.Sheets {
self.sheets = append(self.sheets, newXlsxSheet(sheet))
}
}
func NewXlsxFile() TableFile {
self := &XlsxFile{}
return self
}
type XlsxSheet struct {
*xlsx.Sheet
}
func (self *XlsxSheet) Name() string {
return self.Sheet.Name
}
func (self *XlsxSheet) MaxColumn() int {
return self.Sheet.MaxCol
}
func (self *XlsxSheet) IsFullRowEmpty(row int) bool {
for col := 0; col < self.Sheet.MaxCol; col++ {
data := self.GetValue(row, col, nil)
if data != "" {
return false
}
}
return true
}
func (self *XlsxSheet) GetValue(row, col int, opt *ValueOption) (ret string) {
c := self.Sheet.Cell(row, col)
// 浮点数单元格按原样输出
if opt != nil && opt.ValueAsFloat {
ret, _ = c.GeneralNumeric()
ret = strings.TrimSpace(ret)
} else {
// 取列头所在列和当前行交叉的单元格
ret = strings.TrimSpace(c.Value)
}
return
}
func (self *XlsxSheet) WriteRow(valueList ...string) {
row := self.Sheet.AddRow()
for _, value := range valueList {
cell := row.AddCell()
cell.SetValue(value)
}
}
func newXlsxSheet(sheet *xlsx.Sheet) TableSheet {
return &XlsxSheet{
Sheet: sheet,
}
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。