The Wayback Machine - https://web.archive.org/web/20190531172940/https://github.com/360EntSecGroup-Skylar/excelize
Skip to content
Golang library for reading and writing Microsoft Excel™ (XLSX) files.
Branch: master
Clone or download
xuri Merge pull request #391 from mlh758/390-change-default-font
Add the ability to change the default font
Latest commit 6233757 May 23, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github/ISSUE_TEMPLATE Delete ISSUE_TEMPLATE.md Jul 30, 2018
test Resolve #106, #294 performance optimization for add hyperlink Feb 26, 2019
.gitignore refactor: handler error instead of panic, Mar 23, 2019
.travis.yml Remove Go 1.8 test in TravisCI May 2, 2019
CODE_OF_CONDUCT.md Code of conduct and contributing updated. Jul 10, 2017
CONTRIBUTING.md Resolve #318, add new functions and Jan 6, 2019
LICENSE Resolve #329, add copyright agreement statement on README and LICENSE Jan 5, 2019
PULL_REQUEST_TEMPLATE.md Create PULL_REQUEST_TEMPLATE.md Jul 29, 2018
README.md Resolve #393, upgrade Go module to v2 May 2, 2019
README_zh.md Resolve #393, upgrade Go module to v2 May 2, 2019
adjust.go Resolve #369,#370 Apr 15, 2019
adjust_test.go add unit tests to functions Apr 16, 2019
calcchain.go Resolve #387, skip saving empty calculation chains Apr 22, 2019
cell.go Add a check for maximum limit hyperlinks in a worksheet Apr 20, 2019
cell_test.go Resolve #382, rewrite prepareSheetXML to scale linearly (#383) Apr 16, 2019
cellmerged.go Resolve #393, upgrade Go module to v2 May 2, 2019
cellmerged_test.go Resolve #393, upgrade Go module to v2 May 2, 2019
chart.go Resolve #393, upgrade Go module to v2 May 2, 2019
chart_test.go add unit tests to functions Apr 16, 2019
codelingo.yaml CodeLingo setup Dec 21, 2018
col.go Resolve #397, support set style by columns May 16, 2019
col_test.go Resolve #397, support set style by columns May 16, 2019
comment.go Add the ability to change the default font May 23, 2019
datavalidation.go Fix structs fields definition errors and keep double quotes in data v… May 3, 2019
datavalidation_test.go Resolve #394, init set header and footer support May 5, 2019
date.go refactor: handler error instead of panic, Mar 23, 2019
date_test.go add unit tests to functions Apr 16, 2019
errors.go Typo fixed and godoc updated Mar 20, 2019
errors_test.go Huge refactorig for consistent col/row numbering (#356) Mar 19, 2019
excelize.go Resolve #393, upgrade Go module to v2 May 2, 2019
excelize.png Typo fixed and godoc updated Mar 20, 2019
excelize_test.go Resolve #397, support set style by columns May 16, 2019
file.go Resolve #369,#370 Apr 15, 2019
go.mod Resolve #393, upgrade Go module to v2 May 2, 2019
go.sum Resolve #393, upgrade Go module to v2 May 2, 2019
hsl.go Comments style changed. Sep 13, 2018
lib.go godoc update and typo fixed Apr 20, 2019
lib_test.go refactor: handler error instead of panic, Mar 23, 2019
logo.png Typo fixed and godoc updated Mar 20, 2019
picture.go Resolve #393, upgrade Go module to v2 May 2, 2019
picture_test.go add unit tests to functions Apr 16, 2019
rows.go godoc update and typo fixed Apr 20, 2019
rows_test.go add unit tests to functions Apr 16, 2019
shape.go Add the ability to change the default font May 23, 2019
sheet.go Resolve #404, get sheet map by target rels. May 17, 2019
sheet_test.go Resolve #394, init set header and footer support May 5, 2019
sheetpr.go Resolve #369,#370 Apr 15, 2019
sheetpr_test.go Resolve #393, upgrade Go module to v2 May 2, 2019
sheetview.go Resolve #369,#370 Apr 15, 2019
sheetview_test.go Resolve #393, upgrade Go module to v2 May 2, 2019
styles.go Add the ability to change the default font May 23, 2019
styles_test.go Add the ability to change the default font May 23, 2019
table.go godoc update and typo fixed Apr 20, 2019
templates.go Add the ability to change the default font May 23, 2019
vmlDrawing.go README updated Jan 1, 2019
xmlCalcChain.go resolve the issue corrupted xlsx after deleting formula of cell, refe… Feb 22, 2019
xmlChart.go README updated Jan 1, 2019
xmlComments.go README updated Jan 1, 2019
xmlContentTypes.go README updated Jan 1, 2019
xmlDecodeDrawing.go README updated Jan 1, 2019
xmlDrawing.go README updated Jan 1, 2019
xmlSharedStrings.go README updated Jan 1, 2019
xmlStyles.go Resolve #404, get sheet map by target rels. May 17, 2019
xmlTable.go README updated Jan 1, 2019
xmlTheme.go README updated Jan 1, 2019
xmlWorkbook.go Resolve #404, get sheet map by target rels. May 17, 2019
xmlWorksheet.go Fix structs fields definition errors and keep double quotes in data v… May 3, 2019

README.md

Excelize logo

Build Status Code Coverage Go Report Card GoDoc Licenses Donate

Excelize

Introduction

Excelize is a library written in pure Go providing a set of functions that allow you to write to and read from XLSX files. Supports reading and writing XLSX file generated by Microsoft Excel™ 2007 and later. Supports saving a file without losing original charts of XLSX. This library needs Go version 1.8 or later. The full API docs can be seen using go's built-in documentation tool, or online at godoc.org and docs reference.

Basic Usage

Installation

go get github.com/360EntSecGroup-Skylar/excelize/v2

Create XLSX file

Here is a minimal example usage that will create XLSX file.

package main

import (
    "fmt"

    "github.com/360EntSecGroup-Skylar/excelize/v2"
)

func main() {
    f := excelize.NewFile()
    // Create a new sheet.
    index := f.NewSheet("Sheet2")
    // Set value of a cell.
    f.SetCellValue("Sheet2", "A2", "Hello world.")
    f.SetCellValue("Sheet1", "B2", 100)
    // Set active sheet of the workbook.
    f.SetActiveSheet(index)
    // Save xlsx file by the given path.
    err := f.SaveAs("./Book1.xlsx")
    if err != nil {
        fmt.Println(err)
    }
}

Reading XLSX file

The following constitutes the bare to read a XLSX document.

package main

import (
    "fmt"

    "github.com/360EntSecGroup-Skylar/excelize/v2"
)

func main() {
    f, err := excelize.OpenFile("./Book1.xlsx")
    if err != nil {
        fmt.Println(err)
        return
    }
    // Get value from cell by given worksheet name and axis.
    cell, err := f.GetCellValue("Sheet1", "B2")
    if err != nil {
        fmt.Println(err)
        return
    }
    fmt.Println(cell)
    // Get all the rows in the Sheet1.
    rows, err := f.GetRows("Sheet1")
    for _, row := range rows {
        for _, colCell := range row {
            fmt.Print(colCell, "\t")
        }
        fmt.Println()
    }
}

Add chart to XLSX file

With Excelize chart generation and management is as easy as a few lines of code. You can build charts based off data in your worksheet or generate charts without any data in your worksheet at all.

Excelize

package main

import (
    "fmt"

    "github.com/360EntSecGroup-Skylar/excelize/v2"
)

func main() {
    categories := map[string]string{"A2": "Small", "A3": "Normal", "A4": "Large", "B1": "Apple", "C1": "Orange", "D1": "Pear"}
    values := map[string]int{"B2": 2, "C2": 3, "D2": 3, "B3": 5, "C3": 2, "D3": 4, "B4": 6, "C4": 7, "D4": 8}
    f := excelize.NewFile()
    for k, v := range categories {
        f.SetCellValue("Sheet1", k, v)
    }
    for k, v := range values {
        f.SetCellValue("Sheet1", k, v)
    }
    err := f.AddChart("Sheet1", "E1", `{"type":"col3DClustered","series":[{"name":"Sheet1!$A$2","categories":"Sheet1!$B$1:$D$1","values":"Sheet1!$B$2:$D$2"},{"name":"Sheet1!$A$3","categories":"Sheet1!$B$1:$D$1","values":"Sheet1!$B$3:$D$3"},{"name":"Sheet1!$A$4","categories":"Sheet1!$B$1:$D$1","values":"Sheet1!$B$4:$D$4"}],"title":{"name":"Fruit 3D Clustered Column Chart"}}`)
    if err != nil {
        fmt.Println(err)
        return
    }
    // Save xlsx file by the given path.
    err = f.SaveAs("./Book1.xlsx")
    if err != nil {
        fmt.Println(err)
    }
}

Add picture to XLSX file

package main

import (
    "fmt"
    _ "image/gif"
    _ "image/jpeg"
    _ "image/png"

    "github.com/360EntSecGroup-Skylar/excelize/v2"
)

func main() {
    f, err := excelize.OpenFile("./Book1.xlsx")
    if err != nil {
        fmt.Println(err)
        return
    }
    // Insert a picture.
    err = f.AddPicture("Sheet1", "A2", "./image1.png", "")
    if err != nil {
        fmt.Println(err)
    }
    // Insert a picture to worksheet with scaling.
    err = f.AddPicture("Sheet1", "D2", "./image2.jpg", `{"x_scale": 0.5, "y_scale": 0.5}`)
    if err != nil {
        fmt.Println(err)
    }
    // Insert a picture offset in the cell with printing support.
    err = f.AddPicture("Sheet1", "H2", "./image3.gif", `{"x_offset": 15, "y_offset": 10, "print_obj": true, "lock_aspect_ratio": false, "locked": false}`)
    if err != nil {
        fmt.Println(err)
    }
    // Save the xlsx file with the origin path.
    err = f.Save()
    if err != nil {
        fmt.Println(err)
    }
}

Contributing

Contributions are welcome! Open a pull request to fix a bug, or open an issue to discuss a new feature or change. XML is compliant with part 1 of the 5th edition of the ECMA-376 Standard for Office Open XML.

Licenses

This program is under the terms of the BSD 3-Clause License. See https://opensource.org/licenses/BSD-3-Clause.

The Excel logo is a trademark of Microsoft Corporation. This artwork is an adaptation.

Some struct of XML originally by tealeg/xlsx. Licensed under the BSD 3-Clause License.

gopher.{ai,svg,png} was created by Takuya Ueda. Licensed under the Creative Commons 3.0 Attributions license.

You can’t perform that action at this time.