1 Star 0 Fork 0

jackytse / tabtoy

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
tab_xlsx.go 1.66 KB
一键复制 编辑 原始数据 按行查看 历史
黑色灵猫 提交于 2019-06-05 10:18 . 处理数据导出
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,
}
}
Go
1
https://gitee.com/jackytse/tabtoy.git
git@gitee.com:jackytse/tabtoy.git
jackytse
tabtoy
tabtoy
v0.1.0

搜索帮助