feat(oo): sheet-aware spreadsheet export (docs csv/json)
- lib: WorkbookSheetNames/CSV/JSON (excelize) — sheet selection + JSON rows - oo docs csv SRC... [--sheet N] [--delimiter ,|;|||tab] [--out] - oo docs json SRC... [--sheet N] [--out] - SRC = OO file id or local path; --sheet is 1-based (default first) - DS csv output is first-sheet-only (verified) -> local reader for selection/JSON - test: TestWorkbookSheetExport
This commit is contained in:
@@ -0,0 +1,54 @@
|
||||
package onlyoffice
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
"github.com/xuri/excelize/v2"
|
||||
)
|
||||
|
||||
func TestWorkbookSheetExport(t *testing.T) {
|
||||
f := excelize.NewFile()
|
||||
f.SetSheetName("Sheet1", "first")
|
||||
_ = f.SetCellValue("first", "A1", "name")
|
||||
_ = f.SetCellValue("first", "B1", "age")
|
||||
_ = f.SetCellValue("first", "A2", "Alice")
|
||||
_ = f.SetCellValue("first", "B2", 30)
|
||||
_, _ = f.NewSheet("second")
|
||||
_ = f.SetCellValue("second", "A1", "city")
|
||||
_ = f.SetCellValue("second", "A2", "Lisbon")
|
||||
var buf bytes.Buffer
|
||||
if err := f.Write(&buf); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
data := buf.Bytes()
|
||||
|
||||
names, err := WorkbookSheetNames(data)
|
||||
if err != nil || len(names) != 2 {
|
||||
t.Fatalf("names=%v err=%v", names, err)
|
||||
}
|
||||
|
||||
csv0, err := WorkbookSheetCSV(data, 0, 0)
|
||||
if err != nil || !strings.Contains(csv0, "Alice") {
|
||||
t.Fatalf("sheet0 csv=%q err=%v", csv0, err)
|
||||
}
|
||||
csv1, err := WorkbookSheetCSV(data, 1, 0)
|
||||
if err != nil || !strings.Contains(csv1, "Lisbon") || strings.Contains(csv1, "Alice") {
|
||||
t.Fatalf("sheet1 csv=%q err=%v", csv1, err)
|
||||
}
|
||||
// negative index = first sheet
|
||||
csvDefault, _ := WorkbookSheetCSV(data, -1, 0)
|
||||
if !strings.Contains(csvDefault, "Alice") {
|
||||
t.Fatalf("default csv=%q", csvDefault)
|
||||
}
|
||||
|
||||
js, err := WorkbookSheetJSON(data, 1)
|
||||
if err != nil || len(js) != 1 || js[0]["city"] != "Lisbon" {
|
||||
t.Fatalf("sheet1 json=%#v err=%v", js, err)
|
||||
}
|
||||
|
||||
if _, err := WorkbookSheetCSV(data, 5, 0); err == nil {
|
||||
t.Fatal("expected out-of-range error")
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user