mirror of
https://github.com/unidoc/unioffice.git
synced 2025-04-27 13:48:54 +08:00
220 lines
6.0 KiB
Go
220 lines
6.0 KiB
Go
// Copyright 2017 Baliance. All rights reserved.
|
|
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"log"
|
|
|
|
"baliance.com/gooxml/color"
|
|
"baliance.com/gooxml/document"
|
|
"baliance.com/gooxml/measurement"
|
|
|
|
"baliance.com/gooxml/schema/soo/wml"
|
|
)
|
|
|
|
func main() {
|
|
doc := document.New()
|
|
|
|
// First Table
|
|
{
|
|
table := doc.AddTable()
|
|
// width of the page
|
|
table.Properties().SetWidthPercent(100)
|
|
// with thick borers
|
|
borders := table.Properties().Borders()
|
|
borders.SetAll(wml.ST_BorderSingle, color.Auto, 2*measurement.Point)
|
|
|
|
row := table.AddRow()
|
|
run := row.AddCell().AddParagraph().AddRun()
|
|
run.AddText("Name")
|
|
run.Properties().SetHighlight(wml.ST_HighlightColorYellow)
|
|
row.AddCell().AddParagraph().AddRun().AddText("John Smith")
|
|
row = table.AddRow()
|
|
row.AddCell().AddParagraph().AddRun().AddText("Street Address")
|
|
row.AddCell().AddParagraph().AddRun().AddText("111 Country Road")
|
|
}
|
|
|
|
doc.AddParagraph() // break up the consecutive tables
|
|
|
|
// Second Table
|
|
{
|
|
table := doc.AddTable()
|
|
// 4 inches wide
|
|
table.Properties().SetWidth(4 * measurement.Inch)
|
|
borders := table.Properties().Borders()
|
|
// thin borders
|
|
borders.SetAll(wml.ST_BorderSingle, color.Auto, measurement.Zero)
|
|
|
|
row := table.AddRow()
|
|
cell := row.AddCell()
|
|
// column span / merged cells
|
|
cell.Properties().SetColumnSpan(2)
|
|
run := cell.AddParagraph().AddRun()
|
|
run.AddText("Cells can span multiple columns")
|
|
|
|
row = table.AddRow()
|
|
row.AddCell().AddParagraph().AddRun().AddText("Street Address")
|
|
row.AddCell().AddParagraph().AddRun().AddText("111 Country Road")
|
|
}
|
|
|
|
doc.AddParagraph()
|
|
|
|
// Third Table
|
|
{
|
|
table := doc.AddTable()
|
|
table.Properties().SetWidthPercent(100)
|
|
borders := table.Properties().Borders()
|
|
borders.SetAll(wml.ST_BorderSingle, color.Auto, 1*measurement.Point)
|
|
|
|
hdrRow := table.AddRow()
|
|
|
|
cell := hdrRow.AddCell()
|
|
cell.Properties().SetShading(wml.ST_ShdSolid, color.LightGray, color.Auto)
|
|
cellPara := cell.AddParagraph()
|
|
cellPara.Properties().SetAlignment(wml.ST_JcLeft)
|
|
cellPara.AddRun().AddText("Left Align")
|
|
|
|
cell = hdrRow.AddCell()
|
|
cell.Properties().SetShading(wml.ST_ShdThinDiagStripe, color.Red, color.LightGray)
|
|
cellPara = cell.AddParagraph()
|
|
cellPara.Properties().SetAlignment(wml.ST_JcCenter)
|
|
cellPara.AddRun().AddText("Center Align")
|
|
|
|
cell = hdrRow.AddCell()
|
|
cell.Properties().SetShading(wml.ST_ShdPct20, color.Red, color.LightGray)
|
|
cellPara = cell.AddParagraph()
|
|
cellPara.Properties().SetAlignment(wml.ST_JcRight)
|
|
cellPara.AddRun().AddText("Right Align")
|
|
|
|
veryLightGray := color.RGB(240, 240, 240)
|
|
for i := 0; i < 5; i++ {
|
|
row := table.AddRow()
|
|
for j := 0; j < 3; j++ {
|
|
cell := row.AddCell()
|
|
// shade every other row
|
|
if i%2 == 0 {
|
|
cell.Properties().SetShading(wml.ST_ShdSolid, veryLightGray, color.Auto)
|
|
}
|
|
cell.AddParagraph().AddRun()
|
|
}
|
|
}
|
|
}
|
|
|
|
doc.AddParagraph()
|
|
// Fourth Table
|
|
{
|
|
table := doc.AddTable()
|
|
table.Properties().SetWidthPercent(50)
|
|
table.Properties().SetAlignment(wml.ST_JcTableCenter)
|
|
borders := table.Properties().Borders()
|
|
borders.SetAll(wml.ST_BorderSingle, color.Auto, 1*measurement.Point)
|
|
|
|
row := table.AddRow()
|
|
row.Properties().SetHeight(2*measurement.Inch, wml.ST_HeightRuleExact)
|
|
|
|
cell := row.AddCell()
|
|
cell.Properties().SetVerticalAlignment(wml.ST_VerticalJcCenter)
|
|
|
|
para := cell.AddParagraph()
|
|
para.Properties().SetAlignment(wml.ST_JcCenter)
|
|
run := para.AddRun()
|
|
run.AddText("hello world")
|
|
}
|
|
|
|
doc.AddParagraph()
|
|
// Fifth Table
|
|
{
|
|
table := doc.AddTable()
|
|
table.Properties().SetWidthPercent(90)
|
|
table.Properties().SetAlignment(wml.ST_JcTableCenter)
|
|
borders := table.Properties().Borders()
|
|
borders.SetAll(wml.ST_BorderSingle, color.Auto, 1*measurement.Point)
|
|
|
|
row := table.AddRow()
|
|
|
|
cell := row.AddCell()
|
|
cell.Properties().SetWidthPercent(25)
|
|
para := cell.AddParagraph()
|
|
run := para.AddRun()
|
|
run.AddText("hello")
|
|
|
|
cell = row.AddCell()
|
|
cell.Properties().SetWidthPercent(75)
|
|
para = cell.AddParagraph()
|
|
run = para.AddRun()
|
|
run.AddText("world")
|
|
|
|
// start a new table
|
|
doc.AddParagraph()
|
|
table = doc.AddTable()
|
|
table.Properties().SetWidthPercent(90)
|
|
table.Properties().SetAlignment(wml.ST_JcTableCenter)
|
|
borders = table.Properties().Borders()
|
|
borders.SetAll(wml.ST_BorderSingle, color.Auto, 1*measurement.Point)
|
|
|
|
row = table.AddRow()
|
|
|
|
cell = row.AddCell()
|
|
cell.Properties().SetWidth(0.25 * measurement.Inch)
|
|
para = cell.AddParagraph()
|
|
run = para.AddRun()
|
|
run.AddText("hello")
|
|
|
|
cell = row.AddCell()
|
|
cell.Properties().SetWidth(2.5 * measurement.Inch)
|
|
para = cell.AddParagraph()
|
|
run = para.AddRun()
|
|
run.AddText("world")
|
|
|
|
}
|
|
doc.AddParagraph()
|
|
// Sixth Table - Styled
|
|
{
|
|
// construct a table style
|
|
ts := doc.Styles.AddStyle("MyTableStyle", wml.ST_StyleTypeTable, false)
|
|
tp := ts.TableProperties()
|
|
tp.SetRowBandSize(1)
|
|
tp.SetColumnBandSize(1)
|
|
tp.SetTableIndent(measurement.Zero)
|
|
|
|
// horizomntal banding
|
|
s := ts.TableConditionalFormatting(wml.ST_TblStyleOverrideTypeBand1Horz)
|
|
s.CellProperties().SetShading(wml.ST_ShdSolid, color.LightBlue, color.Red)
|
|
|
|
// first row bold
|
|
s = ts.TableConditionalFormatting(wml.ST_TblStyleOverrideTypeFirstRow)
|
|
s.RunProperties().SetBold(true)
|
|
|
|
// last row bold
|
|
s = ts.TableConditionalFormatting(wml.ST_TblStyleOverrideTypeLastRow)
|
|
s.RunProperties().SetBold(true)
|
|
cb := s.CellProperties().Borders()
|
|
cb.SetTop(wml.ST_BorderDouble, color.Black, 0.5*measurement.Point)
|
|
|
|
tp.Borders().SetAll(wml.ST_BorderSingle, color.Blue, 0.5*measurement.Point)
|
|
|
|
table := doc.AddTable()
|
|
|
|
table.Properties().SetLayout(wml.ST_TblLayoutTypeFixed)
|
|
table.Properties().SetWidthPercent(90)
|
|
table.Properties().SetStyle("MyTableStyle")
|
|
look := table.Properties().TableLook()
|
|
look.SetFirstColumn(true)
|
|
look.SetFirstRow(true)
|
|
look.SetHorizontalBanding(true)
|
|
|
|
for r := 0; r < 5; r++ {
|
|
row := table.AddRow()
|
|
for c := 0; c < 5; c++ {
|
|
cell := row.AddCell()
|
|
cell.AddParagraph().AddRun().AddText(fmt.Sprintf("row %d col %d", r+1, c+1))
|
|
}
|
|
}
|
|
}
|
|
if err := doc.Validate(); err != nil {
|
|
log.Fatalf("error during validation: %s", err)
|
|
}
|
|
doc.SaveToFile("tables.docx")
|
|
|
|
}
|