{"id":13413429,"url":"https://github.com/unidoc/unioffice","last_synced_at":"2025-05-15T00:00:28.900Z","repository":{"id":37627791,"uuid":"101704343","full_name":"unidoc/unioffice","owner":"unidoc","description":"Pure go library for creating and processing Office Word (.docx), Excel (.xlsx) and Powerpoint (.pptx) documents","archived":false,"fork":false,"pushed_at":"2025-04-16T09:37:31.000Z","size":159600,"stargazers_count":4560,"open_issues_count":25,"forks_count":479,"subscribers_count":81,"default_branch":"master","last_synced_at":"2025-05-07T23:30:39.902Z","etag":null,"topics":["docx","ecma-376","excel","g","go","golang","ooxml","openoffice","powerpoint","pptx","spreadsheet","word","xlsx"],"latest_commit_sha":null,"homepage":"https://unidoc.io/unioffice/","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/unidoc.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2017-08-29T01:25:48.000Z","updated_at":"2025-05-07T16:00:42.000Z","dependencies_parsed_at":"2023-07-13T00:16:38.601Z","dependency_job_id":"802987b2-6965-4965-91d6-6287a6a73c75","html_url":"https://github.com/unidoc/unioffice","commit_stats":{"total_commits":454,"total_committers":22,"mean_commits":"20.636363636363637","dds":0.2665198237885462,"last_synced_commit":"e353c17f311d77117aec7a04a1a5dbadbe84cc61"},"previous_names":["unidoc/gooxml","baliance/gooxml"],"tags_count":65,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/unidoc%2Funioffice","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/unidoc%2Funioffice/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/unidoc%2Funioffice/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/unidoc%2Funioffice/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/unidoc","download_url":"https://codeload.github.com/unidoc/unioffice/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254249199,"owners_count":22039029,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["docx","ecma-376","excel","g","go","golang","ooxml","openoffice","powerpoint","pptx","spreadsheet","word","xlsx"],"created_at":"2024-07-30T20:01:40.184Z","updated_at":"2025-05-15T00:00:28.784Z","avatar_url":"https://github.com/unidoc.png","language":"Go","readme":"**unioffice** is a library for creation of Office Open XML documents (.docx, .xlsx\nand .pptx).  Its goal is to be the most compatible and highest performance Go\nlibrary for creation and editing of docx/xlsx/pptx files.\n\n[![Build Status](https://travis-ci.org/unidoc/unioffice.svg?branch=master)](https://travis-ci.org/unidoc/unioffice)\n[![GitHub (pre-)release](https://img.shields.io/github/release/unidoc/unioffice/all.svg)](https://github.com/unidoc/unioffice/releases)\n[![License: UniDoc EULA](https://img.shields.io/badge/license-UniDoc%20EULA-blue)](https://unidoc.io/eula/)\n[![ApiDocs](https://img.shields.io/badge/godoc-reference-blue.svg)](https://apidocs.unidoc.io/unioffice/latest/)\n\n\n![https://github.com/unidoc/unioffice/](./.github/preview.png \"unioffice\")\n\n## Status ##\n\n- Documents (docx) [Word]\n\t- Read/Write/Edit\n\t- Formatting\n\t- Images\n\t- Tables\n\t- Word to PDF (docx to pdf)\n- Spreadsheets (xlsx) [Excel]\n \t- Read/Write/Edit\n \t- Cell formatting including conditional formatting\n\t- Cell validation (drop down combobox, rules, etc.)\n    - Retrieve cell values as formatted by Excel (e.g. retrieve a date or number as displayed in Excel)\n \t- Formula Evaluation (100+ functions supported currently, more will be added as required)\n \t- Embedded Images\n \t- All chart types\n- PowerPoint (pptx) [PowerPoint]\n\t- Creation from templates\n\t- Textboxes/shapes\n\n\n## Performance ##\n\nThere has been a great deal of interest in performance numbers for spreadsheet\ncreation/reading lately, so here are unioffice numbers for this\n[benchmark](https://github.com/unidoc/unioffice-examples/tree/master/spreadsheet/lots-of-rows)\nwhich creates a sheet with 30k rows, each with 100 columns.\n\n    creating 30000 rows * 100 cells took 3.92506863s\n    saving took 89ns\n    reading took 9.522383048s\n\nCreation is fairly fast, saving is very quick due to no reflection usage, and\nreading is a bit slower. The downside is that the binary is large (33MB) as it\ncontains generated structs, serialization and deserialization code for all of\nDOCX/XLSX/PPTX.\n\n## Installation ##\n    \n    go get github.com/unidoc/unioffice/v2\n\n## License key\nThis software package (unioffice) is a commercial product and requires a license code to operate.\n\nTo Get a Metered License API Key in the Free Tier, sign up on https://cloud.unidoc.io\n\n## Document Examples ##\n\n- [Simple Text Formatting](https://github.com/unidoc/unioffice-examples/tree/master/document/simple) Text font colors, sizes, highlighting, etc.\n- [Auto Generated Table of Contents](https://github.com/unidoc/unioffice-examples/tree/master/document/toc) Creating document headings with an auto generated TOC based off of the headingds\n- [Floating Image](https://github.com/unidoc/unioffice-examples/tree/master/document/image) Placing an image somewhere on a page, absolutely positioned with different text wrapping.\n- [Header \u0026 Footer](https://github.com/unidoc/unioffice-examples/tree/master/document/header-footer) Creating headers and footers including page numbering.\n- [Multiple Headers \u0026 Footers](https://github.com/unidoc/unioffice-examples/tree/master/document/header-footer-multiple) Using different headers and footers depending on document section.\n- [Inline Tables](https://github.com/unidoc/unioffice-examples/tree/master/document/tables) Adding an table with and without borders.\n- [Using Existing Word Document as a Template](https://github.com/unidoc/unioffice-examples/tree/master/document/use-template) Opening a document as a template to re-use the styles created in the document.\n- [Filling out Form Fields](https://github.com/unidoc/unioffice-examples/tree/master/document/fill-out-form) Opening a document with embedded form fields, filling out the fields and saving the result as  a new filled form.\n- [Editing an existing document](https://github.com/unidoc/unioffice-examples/tree/master/document/edit-document) Open an existing document and replace/remove text without modifying formatting.\n\n## Spreadsheet Examples ##\n- [Simple](https://github.com/unidoc/unioffice-examples/tree/master/spreadsheet/simple) A simple sheet with a few cells\n- [Named Cells](https://github.com/unidoc/unioffice-examples/tree/master/spreadsheet/named-cells) Different ways of referencing rows and cells\n- [Cell Number/Date/Time Formats](https://github.com/unidoc/unioffice-examples/tree/master/spreadsheet/number-date-time-formats) Creating cells with various number/date/time formats\n- [Line Chart](https://github.com/unidoc/unioffice-examples/tree/master/spreadsheet/line-chart)/[Line Chart 3D](https://github.com/unidoc/unioffice-examples/tree/master/spreadsheet/line-chart-3d) Line Charts\n- [Bar Chart](https://github.com/unidoc/unioffice-examples/tree/master/spreadsheet/bar-chart) Bar Charts\n- [Mutiple Charts](https://github.com/unidoc/unioffice-examples/tree/master/spreadsheet/multiple-charts) Multiple charts on a single sheet\n- [Named Cell Ranges](https://github.com/unidoc/unioffice-examples/tree/master/spreadsheet/named-ranges) Naming cell ranges\n- [Merged Cells](https://github.com/unidoc/unioffice-examples/tree/master/spreadsheet/merged) Merge and unmerge cells\n- [Conditional Formatting](https://github.com/unidoc/unioffice-examples/tree/master/spreadsheet/conditional-formatting) Conditionally formatting cells, styling, gradients, icons, data bar\n- [Complex](https://github.com/unidoc/unioffice-examples/tree/master/spreadsheet/complex) Multiple charts, auto filtering and conditional formatting\n- [Borders](https://github.com/unidoc/unioffice-examples/tree/master/spreadsheet/borders) Individual cell borders and rectangular borders around a range of cells.\n- [Validation](https://github.com/unidoc/unioffice-examples/tree/master/spreadsheet/validation) Data validation including combo box dropdowns.\n- [Frozen Rows/Cols](https://github.com/unidoc/unioffice-examples/tree/master/spreadsheet/freeze-rows-cols) A sheet with a frozen header column and row\n\n## Presentation Examples ##\n\n- [Simple Text Boxes](https://github.com/unidoc/unioffice-examples/tree/master/presentation/simple) Simple text boxes and shapes\n- [Images](https://github.com/unidoc/unioffice-examples/tree/master/presentation/image) Simple image insertion\n- [Template](https://github.com/unidoc/unioffice-examples/tree/master/presentation/use-template/simple) Creating a presentation from a template\n\n## Raw Types ##\n\nThe OOXML specification is large and creating a friendly API to cover the entire\nspecification is a very time consuming endeavor.  This library attempts to\nprovide an easy to use API for common use cases in creating OOXML documents\nwhile allowing users to fall back to raw document manipulation should the\nlibrary's API not cover a specific use case.\n\nThe raw XML based types reside in the ```schema/``` directory. These types are\naccessible from the wrapper types via a ```X()``` method that returns the raw\ntype. \n\nFor example, the library currently doesn't have an API for setting a document\nbackground color. However it's easy to do manually via editing the\n```CT_Background``` element of the document.\n\n    doc := document.New()\n    doc.X().Background = wordprocessingml.NewCT_Background()\n\tdoc.X().Background.ColorAttr = \u0026wordprocessingml.ST_HexColor{}\n\tdoc.X().Background.ColorAttr.ST_HexColorRGB = color.RGB(50, 50, 50).AsRGBString()\n\n## Contribution guidelines ###\n\nIf you are interested in contributing, please contact us.\n\n## Development Notes\n\nThe bash script file `run_test.sh` could be used to run test and update the test result (if required). This script could receive the following parameter:\n- `-s`: Save a baseline, updates all the test result.\n- `-v`: Run the test in verbose mode.\n- `t` or `--testname` [test name]: Run a specific test name. For example `-t AddImage` would be running a `TestAddImage` test.\n\nTo run the script in dockerized environment, use the provided `Makefile` such as:\n\n```bash\nmake docker-test\n```\nor\n\n```bash\nmake docker-update-testdata\n```\n\n## Go Version Compatibility\n\nOfficially we support three latest Go versions, but internally we would test the build with up to five latest Go versions in our CI runner.\n\n## Support and consulting ##\n\nPlease email us at support@unidoc.io for any queries.\n\nIf you have any specific tasks that need to be done, we offer consulting in certain cases.\nPlease contact us with a brief summary of what you need and we will get back to you with a quote, if appropriate.\n\n## License agreement ##\n\nThe use of this software package is governed by the end-user license agreement \n(EULA) available at: https://unidoc.io/eula/\n\n","funding_links":[],"categories":["Microsoft Office","Misc","微软办公软件","Go","Programming Languages","Relational Databases","Repositories"],"sub_categories":["Search and Analytic Databases","检索及分析资料库","Go","Advanced Console UIs","SQL 查询语句构建库"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Funidoc%2Funioffice","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Funidoc%2Funioffice","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Funidoc%2Funioffice/lists"}