Compare commits

...

122 Commits

Author SHA1 Message Date
Sergey Shuchkin 306aa7dad9
Merge pull request #113 from DevOlegKosarev/patch-1
Update README.md
2023-04-20 02:03:56 +06:00
Oleg Kosarev dc974d2ef9
Update README.md
Add in example Currency Float (other)
2023-04-19 14:11:53 -05:00
Sergey Shuchkin c78750ffe7 1.3.15 2023-04-19 14:27:21 +06:00
Sergey Shuchkin 9cdb08ee98
Merge pull request #110 from DevOlegKosarev/master
add set meta data file
2023-04-19 14:19:46 +06:00
Oleg Kosarev 32276c4486 Merge branch 'master' of https://github.com/DevOlegKosarev/simplexlsxgen 2023-04-19 02:38:24 -05:00
Oleg Kosarev 3646e702ae * escape strings
* use fluid interface and '
+ Add LastModifiedBy
+ author, company, manager, LastModifiedBy set email
2023-04-19 02:38:08 -05:00
Oleg Kosarev 81120e6f72 * escape strings
* use fluid interface and '
+ Add LastModifiedBy
+ author, company, manager, LastModifiedBy set email
2023-04-19 02:31:58 -05:00
Oleg Kosarev c449813bb1 Update SimpleXLSXGen.php
Fix 345 line $this->application
2023-04-19 01:57:19 -05:00
Oleg Kosarev 4f4ac11dae add set meta data file 2023-04-19 01:00:22 -05:00
Sergey Shuchkin 1fa442f667 1.3.14 2023-04-18 22:54:48 +06:00
Sergey Shuchkin 1ee4e5eb50 1.3.13 RTL 2023-04-12 15:24:17 +06:00
Sergey Shuchkin e02d764d0d 1.3.13 RTL 2023-04-11 03:18:46 +06:00
Sergey Shuchkin f65e57c735
Merge pull request #105 from xaviermdq/master
frozen panes correction and other formatting minimal corrections
2023-04-03 11:35:31 +06:00
Javier 4f3d09925c Update SimpleXLSXGen.php 2023-04-02 19:48:51 -03:00
Javier 95da6b5c05 Update SimpleXLSXGen.php 2023-04-02 19:03:38 -03:00
Sergey Shuchkin b3060667f2 1.3.12 font size 2023-03-31 17:22:19 +06:00
Sergey Shuchkin cb19defa37 1.3.12 font size 2023-03-31 17:16:07 +06:00
Sergey Shuchkin 5a154b24f9 1.3.12 font size 2023-03-31 17:15:07 +06:00
Sergey Shuchkin b46f63fce7
Merge pull request #104 from mrjemson/master
Added Font-Size
2023-03-31 16:28:13 +06:00
Andrew Robinson bb09c0d38c
Updated Readme 2023-03-31 17:05:44 +11:00
Andrew Robinson 91ca3f6fff
Added Font-Size Ability 2023-03-31 17:04:03 +11:00
Sergey Shuchkin 59cdc277ee 1.3.11 2023-03-28 16:25:39 +06:00
Sergey Shuchkin 343e549ca1 1.3.11 2023-03-28 16:21:08 +06:00
Sergey Shuchkin 61e55d6277
Merge pull request #101 from xaviermdq/master
Frozen rows/cols support
2023-03-28 13:07:07 +06:00
Javier 9b52ff6ac7
Update SimpleXLSXGen.php 2023-03-27 20:18:39 -03:00
Javier 317fb0982e
Frozen rows/cols support
Added setFrozen method to freeze rows and columns from top-left corner up to, but not including, the row and column of the passed parameter.
For example:
$xlsx->setFrozen('B3');
freezes first column (A) and first and second rows (1 and 2)
2023-03-27 11:17:11 -03:00
Sergey Shuchkin 765001ae96 1.3.10 2023-02-25 19:09:48 +06:00
Sergey Shuchkin c2f3077812 1.3.10 2023-02-25 17:14:53 +06:00
Sergey Shuchkin af53c754c3 1.3.10 2023-01-09 11:51:48 +06:00
Sergey Shuchkin 6d7608f8ca 1.3.10 2022-12-15 00:13:39 +06:00
Sergey Shuchkin 80091bb9be 1.3.10 2022-12-15 00:04:53 +06:00
Sergey Shuchkin 21b1d9a4b8 1.3.10 2022-12-14 23:47:14 +06:00
Sergey Shuchkin c1434378bc 1.3.10 2022-12-14 21:30:23 +06:00
Sergey Shuchkin 75252a4a0c
Merge pull request #79 from 2advance/patch-1
Update SimpleXLSXGen.php
2022-10-28 22:06:12 +06:00
Robin f9d5480bb3
Update SimpleXLSXGen.php
Fix: Column width not working on Mac
2022-10-28 17:47:54 +02:00
Sergey Shuchkin aff0fa243d 1.2.16 2022-08-12 18:57:41 +06:00
Sergey Shuchkin 82b0db1f8e 1.2.16 2022-08-06 23:13:06 +06:00
Sergey Shuchkin aef6ee4935 1.2.15 2022-07-28 18:26:11 +06:00
Sergey Shuchkin 053574d1e1 1.2.15 2022-07-05 11:29:18 +06:00
Sergey Shuchkin f74163d311 1.2.15 2022-07-05 11:19:42 +06:00
Sergey Shuchkin 0bf38275d7 1.2.14 2022-06-10 12:11:00 +06:00
Sergey Shuchkin 459b1666e9 1.2.13 2022-06-10 12:07:39 +06:00
Sergey Shuchkin b63c66f8e9 1.2.13 2022-06-01 12:58:01 +06:00
Sergey Shuchkin 1b5701a07f 1.2.13 2022-06-01 12:54:28 +06:00
Sergey Shuchkin 199e5691e7 1.2.12 2022-05-17 12:10:24 +06:00
Sergey Shuchkin c54b314328 1.2.12 2022-05-17 12:06:30 +06:00
Sergey Shuchkin 6db113f753 1.2.11 2022-05-17 12:03:35 +06:00
Sergey Shuchkin ff3f016358 1.2.11 2022-04-30 14:08:40 +06:00
Sergey Shuchkin bcd3586731 1.2.10 2022-04-30 14:04:13 +06:00
Sergey Shuchkin 402c6b9417 1.2.10 2022-04-24 14:59:15 +06:00
Sergey Shuchkin 5840fd5285
Merge pull request #58 from mrjemson/master
Added Font Color and Background Color Capabilities
2022-04-23 13:07:03 +06:00
Andrew Robinson 4543922330
Updated examples 2022-04-23 11:34:13 +10:00
Andrew Robinson d49f8996df
Switched to style tags 2022-04-23 11:33:17 +10:00
mrjemson 5309e6a002
Removed duplicate line 2022-04-22 23:21:40 +10:00
mrjemson ab28bc319d
Added missing line break 2022-04-22 23:19:38 +10:00
mrjemson e145bd5777
Updated examples to include background fill 2022-04-22 23:16:28 +10:00
mrjemson 2ee7237016
Updated class to include background fill options 2022-04-22 23:15:35 +10:00
mrjemson a0a932e2f5
Updated Styles Image for Background Fill 2022-04-22 23:14:42 +10:00
mrjemson fc884044ac
Color Code Clean Up 2022-04-22 18:03:17 +10:00
mrjemson d84c842d38
Corrected const C_NORMAL value 2022-04-22 17:59:30 +10:00
mrjemson 0dafc8bf9e
Fixes for color updates 2022-04-22 17:58:25 +10:00
mrjemson 82f19a9f35
Updated styles.png 2022-04-22 17:54:51 +10:00
mrjemson 139602c340
Update README.md 2022-04-22 17:51:35 +10:00
mrjemson ac34d8f527
Added Font Color 2022-04-22 16:43:26 +10:00
Sergey Shuchkin c55d77c63e 1.1.12 2022-03-15 21:49:14 +06:00
Sergey Shuchkin c3d10db967 1.1.12 2022-03-15 21:47:33 +06:00
Sergey Shuchkin 1c206d06bc 1.1.11 2022-02-12 03:25:59 +06:00
Sergey Shuchkin f0cbc32af9 1.1.11 2022-02-12 03:04:46 +06:00
Sergey Shuchkin 121f1222c2 1.1.10 2022-02-05 18:32:10 +06:00
Sergey Shuchkin 40eb704eb2 1.0.23 2022-02-01 02:50:32 +06:00
Sergey Shuchkin 4005e8cbd1
Merge pull request #48 from appel/patch-1
added a ; in the Debug section.
2021-11-28 20:43:00 +06:00
appel 9d82a43fe6
added a ; in the Debug section. 2021-11-28 08:48:15 -05:00
Sergey Shuchkin 9a555eef9b 1.0.22 2021-10-29 03:37:04 +06:00
Sergey Shuchkin 79ffbb5e30 1.0.21 2021-09-20 00:51:25 +06:00
Sergey Shuchkin 868cf8edc0 1.0.21 2021-09-03 22:12:48 +06:00
Sergey Shuchkin 7f5c584772 1.0.20 2021-07-29 12:16:10 +06:00
Sergey Shuchkin 5b58103e3b 1.0.19 2021-07-28 22:01:02 +06:00
Sergey Shuchkin 6d49a90fe7 1.0.18 2021-07-28 05:06:23 +06:00
Sergey Shuchkin c8a94d552a 1.0.17 2021-07-28 01:45:25 +06:00
Sergey Shuchkin c9fa7da689 1.0.16 2021-07-01 03:03:57 +06:00
Sergey Shuchkin 0d059fdf6e 1.0.16 2021-07-01 03:01:35 +06:00
Sergey Shuchkin dcb5f8ad65 1.0.15 2021-06-22 00:57:29 +06:00
Sergey Shuchkin f970452779 1.0.14 2021-06-08 09:59:42 +06:00
Sergey Shuchkin 6abd0286bb 1.0.14 2021-06-08 09:51:10 +06:00
Sergey Shuchkin 8bfbe078db 1.0.13 2021-05-29 23:21:45 +06:00
Sergey Shuchkin 6ece83f9ce 1.0.12 2021-05-19 10:21:09 +06:00
Sergey Shuchkin 4f375a4c30 1.0.11 2021-05-14 16:52:30 +06:00
Sergey Shuchkin 41c6e7ca51
Merge pull request #34 from marcrobledo/marcrobledo-fix-percentage
fix percentage with decimals
2021-05-14 16:37:33 +06:00
Marc Robledo ef7b0fff02
fix percentage with decimals
make sign optional for percentage values with decimals
2021-05-14 10:55:07 +02:00
Sergey Shuchkin 860da7f493 1.0.10 2021-05-03 03:22:26 +06:00
Sergey Shuchkin eeec88dbf0 1.0.10 2021-05-03 03:19:14 +06:00
Sergey Shuchkin 1e866f82bf 1.0.10 2021-05-03 03:17:24 +06:00
Sergey Shuchkin 17098b57ef 1.0.10 2021-05-03 03:08:41 +06:00
Sergey Shuchkin ab49ffadd7 example $xlsx_content = (string) $xlsx 2021-03-01 00:09:42 +06:00
Sergey Shuchkin 99c6be2fb4 Added PHP Datetime object values in a cells 2021-02-26 21:45:38 +06:00
Sergey Shuchkin d1ccfc6f17 Added PHP Datetime object values in a cells 2021-02-26 21:39:13 +06:00
Sergey Shuchkin 21db9eca96 * percent 2021-02-26 12:55:41 +06:00
Sergey Shuchkin 8b6d0505b5 Fix local floats in XML 2021-01-25 22:43:37 +06:00
Sergey Shuchkin 205396b998 Fix local floats in XML 2021-01-25 22:19:37 +06:00
Sergey Shuchkin 42558401ef Multiple sheets support and class ready for extends now 2020-11-04 01:42:52 +06:00
Sergey Shuchkin 07d3e91c28
Merge pull request #14 from Savino59/master
added multisheet support (keeping it compatible to the original version)
2020-11-03 20:14:34 +06:00
Savino Rapillo 3abb47b9b4 added multisheet support (keeping it compatible to the original version) 2020-11-02 17:34:19 +01:00
Sergey Shuchkin 0fc338d802 update images 2020-10-17 01:13:17 +06:00
Sergey Shuchkin a8093b9d8e Merge remote-tracking branch 'origin/master' 2020-10-04 16:08:32 +06:00
Sergey Shuchkin a9219575df disable type detection 2020-10-04 16:08:12 +06:00
Sergey Shuchkin 476e083f29
Merge pull request #8 from jturbide/master
Fix invalid content
2020-08-28 00:26:29 +06:00
Julien Turbide db598d4ee4
Update SimpleXLSXGen.php 2020-08-26 17:15:14 -04:00
Sergey Shuchkin a551f6485b Long Numbers format 2020-08-23 15:07:29 +06:00
Sergey Shuchkin aafe6abd5b fixed fast shared strings index 2020-08-22 13:54:34 +06:00
Sergey Shuchkin 9b2c9d3e1c Fixed real numbers in 123.45 format detection, fast shared strings index 2020-08-21 21:57:02 +06:00
Sergey Shuchkin 9824e5b25d
Merge pull request #4 from fredriksundin/performance
Replace array_search to optimize large arrays
2020-08-21 21:40:15 +06:00
Fredrik Sundin c3d64d13ef Fix strict compare bug 2020-08-19 23:09:33 +00:00
Fredrik Sundin 22cbd84f3c Add strict compare 2020-08-19 22:48:12 +00:00
Fredrik Sundin 291b508143 Replace array_search to optimize large arrays 2020-08-19 22:41:08 +00:00
Sergey Shuchkin 5a4c04025a fixed time detection 2020-07-29 21:50:38 +06:00
Sergey Shuchkin 982de475c9
Merge pull request #2 from boryn/patch-1
Extension '.xlsx' outside of gmdate()
2020-07-16 13:38:30 +06:00
Michal Borychowski e92d3a5284
Extension '.xlsx' outside of gmdate() 2020-07-15 23:16:48 +02:00
Sergey Shuchkin ca5da99160 debug example 2020-07-14 17:24:11 +06:00
Sergey Shuchkin 8a38813b12 debug example 2020-07-14 17:19:58 +06:00
Sergey Shuchkin 72b9f420d7 debug example 2020-07-14 15:24:51 +06:00
Sergey Shuchkin 08e2ae6892 0.9.14 fixed num2name A-Z,AA-AZ 2020-05-31 08:35:35 +06:00
Sergey Shuchkin 6a098dd7e4 0.9.13 if string more 160 chars, save as inlineStr 2020-05-20 23:36:47 +06:00
9 changed files with 1468 additions and 336 deletions

6
.gitignore vendored
View File

@ -1 +1,5 @@
vendor*
/vendor*
/books.fw.png
/datatypes.fw.png
/styles.fw.png
/.gitignore

157
CHANGELOG.md Normal file
View File

@ -0,0 +1,157 @@
# Changelog
## 1.3.15 (2023-04-19)
* added meta: setTitle, setSubject, setAuthor, setCompany, setManager, setKeywords, setDescription, setCategory, setApplication, setLastModifiedBy. Thx [Oleg Kosarev](https://github.com/DevOlegKosarev)
## 1.3.14 (2023-04-18)
* fixed "This action doesn't work on multiple selection" error
## 1.3.13 (2023-04-11)
* ```$xlsx->rightToLeft()``` - RTL mode. Column A is on the far right, Column B is one column left of Column A, and so on. Also, information in cells is displayed in the Right to Left format.
## 1.3.12 (2023-03-31)
* ```<style font-size="32">Big Text</style>``` - font size in cells, thx [Andrew Robinson](https://github.com/mrjemson)
## 1.3.11 (2023-03-28)
* freezePanes( corner_cell ) - freezePanes to keep an area of a worksheet visible while you scroll, corner_cell is not included, thx [Javier](https://github.com/xaviermdq)
## 1.3.10 (2022-12-14)
* added borders ```<style border="medium">Black Border</style>``` see colored [examples](https://github.com/shuchkin/simplexlsxgen#formatting)
* added formulas ```<f v="100">SUM(B1:B10)</f>``` see [examples](https://github.com/shuchkin/simplexlsxgen#data-types)
* added internal links ```<a href="sheet2!A1">Go to page 2</a>```
* added custom number formats ```<style nf="&quot;£&quot;#,##0.00">500</style>```
* added 3 currencies ```$data = [ ['$100.23', '2000.00 €', '1200.30 ₽'] ];```
## 1.2.16 (2022-08-12)
* added `autoFilter( $range )`
```php
$xlsx->autoFilter('A2:B10');
```
* fixed `0%` bug
## 1.2.15 (2022-07-05)
* added wrap words in long strings `<wraptext>long long line</wraptext>`
## 1.2.14 (2022-06-10)
* added example [JS array to Excel (AJAX)](https://github.com/shuchkin/simplexlsxgen#js-array-to-excel-ajax)
## 1.2.13 (2022-06-01)
* setColWidth(num_col_started_1, size_in_chars) - set column width
## 1.2.12 (2022-05-17)
* Vertical align (tags top,middle,bottom) `<bottom>12345</bottom>`
## 1.2.11 (2022-05-01)
* Row height `<style height="50">Custom row height 50</style>`
## 1.2.10 (2022-04-24)
* Added colors `<style color="#FFFF00" bgcolor="#00FF00">Yellow text on blue background</style>`, thx [mrjemson](https://github.com/mrjemson)
## 1.1.12 (2022-03-15)
* Added `$xlsx->mergeCells('A1:C1')`
## 1.1.11 (2022-02-05)
* sheet name maximum length is 31 chars, mb_substr used now
* license fixed
## 1.1.10 (2022-02-05)
* namespace added, use Shuchkin\SimpleXLSXGen
## 1.0.23 (2022-02-01)
* fixed dates if year < 1900 and time only cells, thx [fapth](https://github.com/shuchkin/simplexlsxgen/issues/51)
## 1.0.22 (2021-10-29)
* Escape \x00 and \x0B (vertical tab)
## 1.0.21 (2021-09-03)
* Fixed saveAs / downloadAs / etc methods more than once
## 1.0.20 (2021-07-29)
* Fixed sheet names duplicates (Page, Page (1), Page (2)...)
## 1.0.19 (2021-07-28)
* Fixed sheet names duplicates
## 1.0.18 (2021-07-28)
* Fixed email regex
## 1.0.17 (2021-07-28)
* Fixed &quot; and &amp; in sheets names
## 1.0.16 (2021-07-01)
* Fixed &quot;&amp;&quot; in hyperlinks
## 1.0.15 (2021-06-22)
* Fixed *mailto* hyperlinks detection
## 1.0.14 (2021-06-08)
* Added *mailto* hyperlinks support (thx Howard Martin)
```php
SimpleXLSXGen::fromArray([
['Mailto hyperlink', '<a href="mailto:sergey.shuchkin@gmail.com">Please email me</a>']
])->saveAs('test.xlsx');
```
## 1.0.13 (2021-05-29)
* Fixed hyperlinks in several sheets
* Added [Opencollective donation link](https://opencollective.com/simplexlsx)
## 1.0.12 (2021-05-19)
* Fixed hyperlink regex
## 1.0.11 (2021-05-14)
* Fixed 0.00% format, thx [marcrobledo](https://github.com/shuchkin/simplexlsxgen/pull/34), more examples in README.md
## 1.0.10 (2021-05-03)
Stable release
* Added hyperlinks and minimal formatting
## 0.9.25 (2021-02-26)
* Added PHP Datetime object values in a cells
## 0.9.24 (2021-02-26)
* Percent support
## 0.9.23 (2021-01-25)
* Fix local floats in XML
## 0.9.22 (2020-11-04)
* Added multiple sheets support, thx [Savino59](https://github.com/Savino59), class ready for extend now
## 0.9.21 (2020-10-17)
* Updated images
## 0.9.20 (2020-10-04)
* Disable type detection if string started with chr(0)
## 0.9.19 (2020-08-23)
* Numbers like SKU right aligned now
## 0.9.18 (2020-08-22)
* Fixed fast shared strings index
## 0.9.17 (2020-08-21)
* Fixed real numbers in 123.45 format detection, fast shared strings index (thx fredriksundin)
## 0.9.16 (2020-07-29)
* Fixed time detection in HH:MM:SS format
## 0.9.15 (2020-07-14)
* Escape of shared strings for special chars in cells [#1](https://github.com/shuchkin/simplexlsxgen/issues/1)
## 0.9.14 (2020-05-31)
* Fixed num2name A-Z,AA-AZ column names, thx Ertan Yusufoglu
## 0.9.13 (2020-05-21)
* If string more 160 chars, save as inlineStr
## 0.9.12 (2020-05-21)
* Readme fixed
## 0.9.11 (2020-05-21)
* Removed XML unimportant attributes
## 0.9.10 (2020-05-20)
* Initial release

214
README.md
View File

@ -1,12 +1,14 @@
# SimpleXLSXGen class 0.9.12 (Official)
[<img src="https://img.shields.io/endpoint.svg?url=https%3A%2F%2Fshieldsio-patreon.herokuapp.com%2Fshuchkin" />](https://www.patreon.com/shuchkin) [<img src="https://img.shields.io/github/license/shuchkin/simplexlsxgen" />](https://github.com/shuchkin/simplexlsxgen/blob/master/license.md) [<img src="https://img.shields.io/github/stars/shuchkin/simplexlsxgen" />](https://github.com/shuchkin/simplexlsxgen/stargazers) [<img src="https://img.shields.io/github/forks/shuchkin/simplexlsxgen" />](https://github.com/shuchkin/simplexlsxgen/network) [<img src="https://img.shields.io/github/issues/shuchkin/simplexlsxgen" />](https://github.com/shuchkin/simplexlsxgen/issues)
# SimpleXLSXGen
[<img src="https://img.shields.io/github/license/shuchkin/simplexlsxgen" />](https://github.com/shuchkin/simplexlsxgen/blob/master/license.md) [<img src="https://img.shields.io/github/stars/shuchkin/simplexlsxgen" />](https://github.com/shuchkin/simplexlsxgen/stargazers) [<img src="https://img.shields.io/github/forks/shuchkin/simplexlsxgen" />](https://github.com/shuchkin/simplexlsxgen/network) [<img src="https://img.shields.io/github/issues/shuchkin/simplexlsxgen" />](https://github.com/shuchkin/simplexlsxgen/issues)
Export data to Excel XLSX file. PHP XLSX generator. No external tools and libraries.<br/>
(!) XLSX reader [here](https://github.com/shuchkin/simplexlsx).
Export data to Excel XLSX file. PHP XLSX generator. No external tools and libraries.
- XLSX reader [here](https://github.com/shuchkin/simplexlsx)
- XLS reader [here](https://github.com/shuchkin/simplexls)
- CSV reader/writer [here](https://github.com/shuchkin/simplecsv)
**Sergey Shuchkin** <sergey.shuchkin@gmail.com> 2020<br/>
**Sergey Shuchkin** <sergey.shuchkin@gmail.com> 2020-2023<br/>
*Hey, bro, please ★ the package for my motivation :)*
*Hey, bro, please ★ the package for my motivation :) and [donate](https://opencollective.com/simplexlsx) for more motivation!*
## Basic Usage
```php
@ -15,13 +17,10 @@ $books = [
[618260307, 'The Hobbit', 'J. R. R. Tolkien', 'Houghton Mifflin', 'USA'],
[908606664, 'Slinky Malinki', 'Lynley Dodd', 'Mallinson Rendel', 'NZ']
];
$xlsx = SimpleXLSXGen::fromArray( $books );
$xlsx->saveAs('books.xlsx');
$xlsx = Shuchkin\SimpleXLSXGen::fromArray( $books );
$xlsx->saveAs('books.xlsx'); // or downloadAs('books.xlsx') or $xlsx_content = (string) $xlsx
```
![XLSX screenshot](books.png)
```
// SimpleXLSXGen::download() or SimpleXSLSXGen::downloadAs('table.xlsx');
```
## Installation
The recommended way to install this library is [through Composer](https://getcomposer.org).
@ -34,21 +33,198 @@ $ composer require shuchkin/simplexlsxgen
or download class [here](https://github.com/shuchkin/simplexlsxgen/blob/master/src/SimpleXLSXGen.php)
## Examples
Use UTF-8 encoded strings.
### Data types
```php
$data = [
['Integer', 123],
['Float', 12.35],
['Procent', '12%'],
['Date','2020-05-20'],
['Percent', '12%'],
['Currency $', '$500.67'],
['Currency €', '200 €'],
['Currency ₽', '1200.30 ₽'],
['Currency (other)', '<style nf="&quot;£&quot;#,##0.00">500</style>'],
['Currency Float (other)', '<style nf="#,##0.00\ [$£-1];[Red]#,##0.00\ [$£-1]">500.250</style>'],
['Datetime', '2020-05-20 02:38:00'],
['String', 'See SimpleXLSXGen column autosize feature']
['Date', '2020-05-20'],
['Time', '02:38:00'],
['Datetime PHP', new DateTime('2021-02-06 21:07:00')],
['String', 'Very long UTF-8 string in autoresized column'],
['Formula', '<f v="135.35">SUM(B1:B2)</f>'],
['Hyperlink', 'https://github.com/shuchkin/simplexlsxgen'],
['Hyperlink + Anchor', '<a href="https://github.com/shuchkin/simplexlsxgen">SimpleXLSXGen</a>'],
['Internal link', '<a href="sheet2!A1">Go to second page</a>'],
['RAW string', "\0" . '2020-10-04 16:02:00']
];
SimpleXLSXGen::fromArray( $data )->saveAs('datatypes.xlsx');
SimpleXLSXGen::fromArray($data)->saveAs('datatypes.xlsx');
```
![XLSX screenshot](datatypes.png)
## History
v0.9.12 (2020-05-21) readme fixed<br/>
v0.9.11 (2020-05-21) removed XML unimportant attributes<br/>
v0.9.10 (2020-05-20) initial release
### Formatting
```php
$data = [
['Normal', '12345.67'],
['Bold', '<b>12345.67</b>'],
['Italic', '<i>12345.67</i>'],
['Underline', '<u>12345.67</u>'],
['Strike', '<s>12345.67</s>'],
['Bold + Italic', '<b><i>12345.67</i></b>'],
['Hyperlink', 'https://github.com/shuchkin/simplexlsxgen'],
['Italic + Hyperlink + Anchor', '<i><a href="https://github.com/shuchkin/simplexlsxgen">SimpleXLSXGen</a></i>'],
['Green', '<style color="#00FF00">12345.67</style>'],
['Bold Red Text', '<b><style color="#FF0000">12345.67</style></b>'],
['Size 32 Font', '<style font-size="32">Big Text</style>'],
['Blue Text and Yellow Fill', '<style bgcolor="#FFFF00" color="#0000FF">12345.67</style>'],
['Border color', '<style border="#000000">Black Thin Border</style>'],
['<top>Border style</top>','<style border="medium"><wraptext>none, thin, medium, dashed, dotted, thick, double, hair, mediumDashed, dashDot,mediumDashDot, dashDotDot, mediumDashDotDot, slantDashDot</wraptext></style>'],
['Border sides', '<style border="none dotted#0000FF medium#FF0000 double">Top No + Right Dotted + Bottom medium + Left double</style>'],
['Left', '<left>12345.67</left>'],
['Center', '<center>12345.67</center>'],
['Right', '<right>Right Text</right>'],
['Center + Bold', '<center><b>Name</b></center>'],
['Row height', '<style height="50">Row Height = 50</style>'],
['Top', '<style height="50"><top>Top</top></style>'],
['Middle + Center', '<style height="50"><middle><center>Middle + Center</center></middle></style>'],
['Bottom + Right', '<style height="50"><bottom><right>Bottom + Right</right></bottom></style>'],
['<center>MERGE CELLS MERGE CELLS MERGE CELLS MERGE CELLS MERGE CELLS</center>', null],
['<top>Word wrap</top>', "<wraptext>Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book</wraptext>"],
];
SimpleXLSXGen::fromArray($data)
->setDefaultFont('Courier New')
->setDefaultFontSize(14)
->setColWidth(1, 35)
->mergeCells('A20:B20')
->saveAs('styles_and_tags.xlsx');
```
![XLSX screenshot](styles.png)
### RAW Strings
Prefix #0 cell value (use double quotes).
```php
$PushkinDOB = '1799-07-06';
$data = [
['Datetime as raw string', "\0".'2023-01-09 11:16:34'],
['Date as raw string', "\0".$PushkinDOB],
['Disable type detection', "\0".'+12345'],
['Insert greater/less them simbols', "\0".'20- short term: <6 month'],
];
SimpleXLSXGen::fromArray($data)
->saveAs('test_rawstrings.xlsx');
```
### More examples
```php
// Fluid interface, output to browser for download
Shuchkin\SimpleXLSXGen::fromArray( $books )->downloadAs('table.xlsx');
// Fluid interface, multiple sheets
Shuchkin\SimpleXLSXGen::fromArray( $books )->addSheet( $books2 )->download();
// Alternative interface, sheet name, get xlsx content
$xlsx_cache = (string) (new Shuchkin\SimpleXLSXGen)->addSheet( $books, 'Modern style');
// Classic interface
use Shuchkin\SimpleXLSXGen
$xlsx = new SimpleXLSXGen();
$xlsx->addSheet( $books, 'Catalog 2021' );
$xlsx->addSheet( $books2, 'Stephen King catalog');
$xlsx->downloadAs('books_2021.xlsx');
exit();
// Autofilter
$xlsx->autoFilter('A1:B10');
// Freeze rows and columns from top-left corner up to, but not including,
// the row and column of the indicated cell
$xlsx->freezePanes('C3');
// RTL mode
// Column A is on the far right, Column B is one column left of Column A, and so on. Also, information in cells is displayed in the Right to Left format.
$xlsx->rightToLeft();
// Set Meta Data Files
// this data in propertis Files and Info file in Office
$xlsx->setAuthor('Sergey Shuchkin <sergey.shuchkin@gmail.com>')
->setCompany('Microsoft <info@microsoft.com>')
->setManager('Bill Gates <bill.gates@microsoft.com>')
->setLastModifiedBy("Sergey Shuchkin <sergey.shuchkin@gmail.com>")
->setTitle('This is Title')
->setSubject('This is Subject')
->setKeywords('Keywords1, Keywords2, Keywords3, KeywordsN')
->setDescription('This is Description')
->setCategory('This is Сategory')
->setApplication('Shuchkin\SimpleXLSXGen')
```
### JS array to Excel (AJAX)
```php
<?php // array2excel.php
if (isset($_POST['array2excel'])) {
require __DIR__.'/simplexlsxgen/src/SimpleXLSXGen.php';
$data = json_decode($_POST['array2excel'], false);
\Shuchkin\SimpleXLSXGen::fromArray($data)->downloadAs('file.xlsx');
return;
}
?>
<html lang="en">
<head>
<title>JS array to Excel</title>
</head>
<script>
function array2excel() {
var books = [
["ISBN", "title", "author", "publisher", "ctry"],
[618260307, "The Hobbit", "J. R. R. Tolkien", "Houghton Mifflin", "USA"],
[908606664, "Slinky Malinki", "Lynley Dodd", "Mallinson Rendel", "NZ"]
];
var json = JSON.stringify(books);
var request = new XMLHttpRequest();
request.onload = function () {
if (this.status === 200) {
var file = new Blob([this.response], {type: this.getResponseHeader('Content-Type')});
var fileURL = URL.createObjectURL(file);
var filename = "", m;
var disposition = this.getResponseHeader('Content-Disposition');
if (disposition && (m = /"([^"]+)"/.exec(disposition)) !== null) {
filename = m[1];
}
var a = document.createElement("a");
if (typeof a.download === 'undefined') {
window.location = fileURL;
} else {
a.href = fileURL;
a.download = filename;
document.body.appendChild(a);
a.click();
}
} else {
alert("Error: " + this.status + " " + this.statusText);
}
}
request.open('POST', "array2excel.php");
request.responseType = "blob";
request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
request.send("array2excel=" + encodeURIComponent(json));
}
</script>
<body>
<input type="button" onclick="array2excel()" value="array2excel" />
</body>
</html>
```
## Debug
```php
ini_set('error_reporting', E_ALL );
ini_set('display_errors', 1 );
$data = [
['Debug', 123]
];
Shuchkin\SimpleXLSXGen::fromArray( $data )->saveAs('debug.xlsx');
```

BIN
books.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 89 KiB

After

Width:  |  Height:  |  Size: 22 KiB

View File

@ -1,7 +1,7 @@
{
"name": "shuchkin/simplexlsxgen",
"description": "Export data to Excel XLSx file. PHP XLSX generator.",
"keywords": ["php", "excel", "xlsx", "generator", "creator", "backend"],
"keywords": ["php", "excel", "xlsx", "generator", "writer", "creator", "backend"],
"homepage": "https://github.com/shuchkin/simplexlsxgen",
"license": "MIT",
"authors": [
@ -17,6 +17,7 @@
]
},
"require": {
"php": ">=5.4",
"ext-mbstring": "*",
"ext-zlib": "*"
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 87 KiB

After

Width:  |  Height:  |  Size: 14 KiB

View File

@ -1,6 +1,6 @@
The MIT License (MIT)
Copyright (c) 2014 Lukas Martinelli
Copyright (c) 2020-2022 Sergey Shuchkin sergey.shuchkin@gmail.com
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal

File diff suppressed because it is too large Load Diff

BIN
styles.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 190 KiB