Commit Graph

188 Commits

Author SHA1 Message Date
Michael 0f9170a03b Resolve #382, rewrite prepareSheetXML to scale linearly (#383)
* Rewrite prepareSheetXML to scale linearly

We don't need to backfill columns into every row for most purposes
Provided makeContiguousColumns for setting styles where we do
need it for a specific region.

Added a benchmark to monitor progress. For 50,000 rows this went
from about 11 seconds to 1 second. The improvements are more
dramatic as the row/column count increases.

* Assigning that row value was redundant
2019-04-16 14:50:16 +08:00
xuri a88459d5f1
add unit tests to functions 2019-04-16 10:57:21 +08:00
xuri f2df344739
Resolve #369,#370
add error return value

exported functions:

GetMergeCells
ProtectSheet
UnprotectSheet
UpdateLinkedValue
GetMergeCells
SetSheetVisible

inner functions:

workSheetReader
copySheet
2019-04-15 11:22:57 +08:00
Aplulu 841ff4a03e Fix out of range panic when removing formula.
Fix file corruption issue when deleting a sheet containing a formula.
2019-04-09 23:31:12 +09:00
xuri 40ff5dc1a7
refactor: handler error instead of panic,
Exported functions:

SetCellStyle
InsertCol
RemoveCol
RemoveRow
InsertRow
DuplicateRow
DuplicateRowTo
SetRowHeight
GetRowHeight
GetCellValue
GetCellFormula
GetCellHyperLink
SetCellHyperLink
SetCellInt
SetCellBool
SetCellFloat
SetCellStr
SetCellDefault
GetCellStyle
SetCellValue
MergeCell
SetSheetRow
SetRowVisible
GetRowVisible
SetRowOutlineLevel
GetRowOutlineLevel
GetRows
Columns
SearchSheet
AddTable
GetPicture
AutoFilter
GetColVisible
SetColVisible
GetColOutlineLevel
SetColOutlineLevel
SetColWidth
GetColWidth

inner functions:

adjustHelper
adjustMergeCells
adjustAutoFilter
prepareCell
setDefaultTimeStyle
timeToExcelTime
addDrawingChart
addDrawingVML
addDrawingPicture
getTotalRowsCols
checkRow
addDrawingShape
addTable
2019-03-23 20:08:06 +08:00
Michael 2874d75555 Add benchmark for adding images to sheet (#367)
* Add benchmark for adding images to sheet

This should help track performance regressions in future changes.

* Only transform sheet name if necessary
2019-03-23 16:09:48 +08:00
xuri 40ea8eb014
resolve #360, fix axis parse issue when add / get pictures;
typo fixed and go test updated
2019-03-20 16:52:33 +08:00
Veniamin Albaev dc01264562 Huge refactorig for consistent col/row numbering (#356)
* Huge refactorig for consistent col/row numbering

Started from simply changing ToALphaString()/TitleToNumber() logic and related fixes.
But have to go deeper, do fixes, after do related fixes and again and again.

Major improvements:

1. Tests made stronger again (But still be weak).
2. "Empty" returns for incorrect input replaces with panic.
3. Check for correct col/row/cell naming & addressing by default.
4. Removed huge amount of duplicated code.
5. Removed ToALphaString(), TitleToNumber() and it helpers functions at all,
and replaced with SplitCellName(), JoinCellName(), ColumnNameToNumber(), ColumnNumberToName(), CellNameToCoordinates(), CoordinatesToCellName().
6. Minor fixes for internal variable naming for code readability (ex. col, row for input params, colIdx, rowIdx for slice indexes etc).

* Formatting fixes
2019-03-20 00:14:41 +08:00
xuri f66212da9b
Resolve #106, #294 performance optimization for add hyperlink 2019-02-26 14:21:44 +08:00
xuri 0072bb7310
resolve the issue corrupted xlsx after deleting formula of cell, reference #346 2019-02-22 22:17:38 +08:00
kkxkkxkkgh 81948d9e1e The function SetPageLayout support set paper size 2019-01-13 21:58:50 +08:00
zhangleijlu 034de7acd8 Resolve #318, add new functions and 2019-01-06 14:12:31 +08:00
xuri fabd9d013f
README updated 2019-01-01 13:20:14 +08:00
xuri 9a6f66a996
New feature: the function `SearchSheet` now support regular expression, relate pull request #316 2018-12-26 14:48:14 +08:00
r-uchino 9b8baf75ad Add RegSearchSheet (#316) 2018-12-26 13:30:59 +08:00
xuri e728ff1498
Fixes #308, refactor `NewSheet()`, `DeleteSheet()`, `SetActiveSheet()` and `GetActiveSheetIndex()` 2018-12-15 00:08:55 +08:00
xuri 81b43da7b6 Fix comments according to best practices by effective go 2018-12-11 15:05:15 +13:00
xuri b89f75c896
Add new logo for excelize 2018-12-05 00:27:19 +08:00
taomin597715379 1bb59f75ea resolve #297, fix GetSheetMap() failed
Change-Id: I585a4a017867b89bd39cb6e711467a46eaa757be
2018-11-24 21:27:29 +08:00
q523591 51857a217d New function `UnprotectSheet()` has been added 2018-11-04 23:14:43 +08:00
HcySunYang 4dbc78ce0a resolve #273 new feature: protect sheet support
new feature: protect sheet support, relate issue #273
2018-11-02 23:08:31 +08:00
peng e2e58a3a44 New function: `SearchSheet()`, relate issue #277 2018-10-27 14:19:54 +08:00
xuri 1c45425f12
resolve #276, add OfficeOpenXML-XMLSchema-Strict mode support 2018-10-17 00:28:31 +08:00
xuri 204139739a
Merge branch 'master' into master 2018-09-27 23:40:00 +08:00
xuri 3e004d900b
Comments style changed. 2018-09-14 00:58:48 +08:00
xuri 13a9769cc5
Comments style changed. 2018-09-14 00:44:23 +08:00
xuri 2f146c923c
Comments style changed. 2018-09-14 00:35:47 +08:00
xuri 6ced438f39
New function `AddPictureFromBytes()` has been added, this resolve #259 and close #271. 2018-09-14 00:24:49 +08:00
xuri b4a6e61ec3
Fix golint errors under confidence 0.1 2018-09-12 15:47:56 +08:00
xuri ec37b114c3
Fixes #256 and format document. 2018-08-06 10:21:24 +08:00
xuri a3571ee39b
Bugfix: create worksheet cause file issue. Relate issue #249. 2018-07-17 15:28:22 +08:00
Olivier Mengué 4a1b406456 CopySheet() using reflect instead of encoding/gob
Use github.com/mohae/deepcopy to deep copy worksheets instead of the
internal deepcopy function that was using encoding/gob serialization and
deserialization.

Rationale:
1/ using `encoding/gob` is much slower than
   [`mohae/deepcopy`](https://github.com/mohae/deepcopy/)
2/ When building an application this implementation of `deepcopy` drags
   the `encoding/gob` package into the binary. And this package is much
   bigger than `mohae/deepcopy` (which only depends on `time` and `reflect`).

```
$ LC_ALL=C stat -f "%6z %N" $(go env GOPATH)/pkg/$(go env GOOS)_$(go env GOARCH)/github.com/mohae/deepcopy.a $(go env GOROOT)/pkg/$(go env GOOS)_$(go env GOARCH)/encoding/gob.a
 10508 .../pkg/darwin_amd64/github.com/mohae/deepcopy.a
541818 .../pkg/darwin_amd64/encoding/gob.a
```
2018-06-14 17:54:31 +02:00
Sebastian Willing ccdefb3b16 Documentation:
* Add information about return value of NewSheet()
* Minor documentation language fixes
Samples:
* Added sample go file for dumping a XLSX file to the console
2018-06-11 17:25:28 +02:00
xuri 9e463b4614
- Add error return value for functions: `AddChart()`, `AddComment()`, `AddPicture()`, `AddShape()`, `AddTable()` and `SetConditionalFormat()`
- go test has been updated
2018-05-27 11:25:55 +08:00
xuri d96440edc4
- Performance optimization 20% faster, 14% memory savings on set cell values;
- Using the canonical syntax in issue template and contributing guide;
- go test has been updated
2018-05-15 21:00:56 +08:00
xuri 167554bfec
Improve unit testing, remove redundant code. 2018-05-14 10:12:46 +08:00
Lunny Xiao 38ad20efc1
save bytes on memory instead of string 2018-05-07 16:12:51 +08:00
Ri Xu 200437d778
Fix document typo. 2018-05-03 10:01:41 +08:00
Ri Xu a9c7d6637c
- Support to set the positioning of a picture, relate issue #214;
- go test and godoc has been updated
2018-04-26 11:41:13 +08:00
Ri Xu d65b30055d
- Update the function `NewSheet()` to handle when already exists a worksheet of the same name, relate pull request #196;
- go test and godoc has been updated
2018-03-16 20:54:07 +08:00
Ri Xu 06e54bf1c6
Readme and godoc has been updated. 2018-03-06 10:36:12 +08:00
Ri Xu 749d12eece
- Fix `DeleteSheet()` make broken file, relate issue #165;
- godoc updated
2017-12-04 23:54:32 +08:00
Ri Xu f10ee929d0
- Bugfix: use sheet name in func `AddPicture`, relate issue #142;
- godoc updated
2017-10-31 16:33:36 +08:00
Ri Xu ebafbdde73
Bugfix: use sheet name in func `AddChat`, relate issue #138
Signed-off-by: Ri Xu <xuri.me@gmail.com>
2017-10-20 14:40:57 +08:00
Ri Xu 905be463ed
Improve code readability. 2017-09-30 17:07:59 +08:00
Ri Xu b7b937a8a3
godoc updated. 2017-09-13 22:17:40 +08:00
Ri Xu f05f799f8d
- API changed, use worksheet name instead of "sheet" + index, related issue #25, #43, #47, #51, #89, #101, #116 and #120.
- go test updated
2017-09-13 22:00:33 +08:00
Ri Xu 1ec2661dda
Bugfix: deep copy issue with function `CopySheet()`, relate PR #108. 2017-08-19 13:37:15 +08:00
Takayuki Usui 02728de4d2 Conut and trim sheet name in UTF-8 2017-08-13 13:19:53 +09:00
Ri Xu 6626a26f7b
Simplify code and update unit tests. 2017-08-01 16:35:18 +08:00
Ri Xu 308776e350
Optimize code, go test and godoc updated. 2017-07-30 15:46:04 +08:00
Ri Xu bbed2f6dc9
- Init create or remove panes support;
- go test updated
2017-07-30 12:40:59 +08:00
Ri Xu 3b2c80ddc3
Trim blank cells which created by `completeCol()`, relate issue #81 2017-07-16 13:03:45 +08:00
Mark Stenglein 4a17c14399 SHEET.GO: Fix small typo
Adds a '{' to the example for sheet.GetSheetMap()

Signed-off-by: Mark Stenglein <mark@stengle.in>
2017-07-05 21:59:19 -04:00
Ri Xu 555e2ba9a8
- Make function `TitleToNumber()` exportable, note that function `ToAlphaString()` return value calculation changes, get more info from go doc. Relate issue #63;
- Readme and go doc updated
2017-06-27 17:53:06 +08:00
Ri Xu a9f671d98f - New functions: `GetSheetVisible()` and `GetRowVisible()` added, relate issue #61;
- go test updated
2017-06-14 15:01:49 +08:00
Ri Xu c89d842352 Init auto filter support, relate issue #59. 2017-06-08 11:11:11 +08:00
Ri Xu dea57dd0ae Code optimize. 2017-05-24 14:17:35 +08:00
Ri Xu d93a156355 Initialize comments support & go test updated. 2017-05-13 13:28:21 +08:00
Ri Xu 7f30a6c943 - Initialize shape support: new function `AddShape()` added. Relate issue #38;
- Drawing `nvPicPr` element ID property calculation changed;
- go test updated
2017-04-30 20:03:43 +08:00
Ri Xu 2868bd3ec9 - New function `HideSheet()` and `UnhideSheet()` added;
- go test updated
2017-04-26 11:43:39 +08:00
Ri Xu c7e277a07a - New function `CopySheet()` added, relate issue #33;
- Typo fixed;
- go test updated
2017-04-04 19:12:35 +08:00
Ri Xu b4ed9cc40f New function `GetSheetIndex()` added, relate issue #25;
Fix return index error in function `GetSheetMap()`;
Fix return worksheet name error in function `GetSheetName()`;
go test updated
2017-04-01 21:02:25 +08:00
Ri Xu 8fd061b98f - Fix SheetCount count error;
- Optimize deserialization operations;
- README updated, add go version required notice
2017-04-01 13:56:39 +08:00
Ri Xu 02b81b7efe - Get an images in a cell supported, new function `GetPicture` added;
- go test updated
2017-03-28 21:18:06 +08:00
Ri Xu 0d3452fbe2 - Delete sheet from workbook support, related issue #30;
- go test updated
2017-03-22 18:51:18 +08:00
Ri Xu de6e075713 Performance improvement 2017-03-12 20:38:26 +08:00
Ri Xu bd5b033b02 Support set work sheet background image. 2017-01-24 18:29:02 +08:00
Ri Xu 81146218c7 Update README, godoc and fix typo. 2017-01-22 19:20:33 +08:00
Ri Xu 4a9b39afc6 - Add hyperlink and set formula support for cell support;
- Character limits for cells added;
- Update go test and fix typo
2017-01-19 14:05:32 +08:00
Ri Xu 52796f6e58 Format commants, break comments after 80 characters. 2017-01-18 16:05:01 +08:00
Ri Xu f05df2a018 - New function `SetSheetName` and `SetColWidth` added, support rename sheet and set column width;
- Add escape characters of sheet name;
- Update go test and fix typo
2017-01-18 14:47:23 +08:00
Ri Xu 9e8d36ce59 - Performance improvement, remove `replaceRelationshipsID` and `workBookCompatibility` functions;
- New functions `GetActiveSheetIndex`, `GetSheetName` and `GetSheetMap` added.
2016-12-31 23:47:30 +08:00
Ri Xu f958f05a3b - Fix issue: sheet protection and conditional formatting proprietary missing after save;
- Update workbook and sheet relationships and self-close tag replacement hack functions
2016-12-26 23:55:59 +08:00
Ri Xu c5cc500b88 - Fix issue: pivot cache and extending spreadsheetML missing;
- Compatibility improved: relationship namespace in `workbook.xml` has been changed (`xmlns:mc`, `xmlns:x15` and `mc:Ignorable` added)
2016-12-26 18:06:12 +08:00
Ri Xu b84bfa7eab - Update maximum 31 characters allowed in sheet title;
- Fix issue XML tag `headerFooter` and `sheetPr` element self-close errors cause file corruption;
- Fix issue `Section` and `Pane` element order make file corruption in some case;
- Change sheet `rId` calculation method in `/xl/workbook.xml`, fix makes file corruption in some case;
- Compatibility improved: add `xlsxTabColor` struct and some XML element for worksheet
2016-12-23 17:47:25 +08:00
Ri Xu a08c8eb1ae - Fix issue comments missing after save;
- Update import PKG syntax in struct;
- Update test XLSX file (include table, charts, functions, comments and hyperlink on Sheet1)
2016-12-22 10:10:40 +08:00
Ri Xu ddeed48fc1 - Fix issue background image and table missing after save;
- Update test template for this fix
2016-12-20 20:46:19 +08:00
Ri Xu 6e1475a242 Fix hyperlink missing after save issue and update completion row element logic to enhance compatibility. 2016-12-20 14:40:36 +08:00
Ri Xu 6185cd577d Update go test. 2016-10-23 16:46:46 +08:00
Ri Xu 75abc628fe Update godoc of package. 2016-10-19 20:39:44 +08:00
Ri Xu 2e8fa2d39c Use conjunction with strings.Map to split Axis and update godoc. 2016-09-12 17:37:06 +08:00
Ri Xu 50863294f9 Fix issue #2 change project to object-oriented style and update readme file. 2016-09-05 16:37:15 +08:00
Ri Xu 956a4627d1 Fix issue #4 use builtin `map` instead of home-built. 2016-09-05 10:44:32 +08:00
Ri Xu 9c3a24d5c3 xml marshal without indent and use buffer in string concatenation. 2016-09-04 19:25:31 +08:00
Ri Xu 192af02a40 Format code with golint rules 2016-09-02 11:54:52 +08:00
Ri Xu 3c4ad28db7 - Get cell value support
- Optimisation code use fmt package
- Update README
- Remove useless function
2016-08-30 21:54:28 +08:00
Ri Xu a9d3ee2869 Init commit. 2016-08-30 11:51:31 +08:00