1
0
mirror of https://github.com/shuchkin/simplexlsxgen.git synced 2023-08-10 21:12:59 +03:00

78 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
8 changed files with 1331 additions and 627 deletions

3
.gitignore vendored
View File

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

View File

@@ -1,19 +1,91 @@
# Changelog # Changelog
## 1.0.17 (2021-07-28) ## 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 * Fixed &quot; and &amp; in sheets names
## 1.0.16 (2021-07-01) ## 1.0.16 (2021-07-01)
* Fixed &quot;&amp;&quot; in hyperlinks * Fixed &quot;&amp;&quot; in hyperlinks
## 1.0.15 (2021-06-22) ## 1.0.15 (2021-06-22)
* Fixed *mailto* hyperlinks detection * Fixed *mailto* hyperlinks detection
## 1.0.14 (2021-06-08) ## 1.0.14 (2021-06-08)
* Added *mailto* hyperlinks support (thx Howard Martin) * Added *mailto* hyperlinks support (thx Howard Martin)
```php ```php
SimpleXLSXGen::fromArray([ SimpleXLSXGen::fromArray([
@@ -21,86 +93,65 @@ SimpleXLSXGen::fromArray([
])->saveAs('test.xlsx'); ])->saveAs('test.xlsx');
``` ```
## 1.0.13 (2021-05-29) ## 1.0.13 (2021-05-29)
* Fixed hyperlinks in several sheets * Fixed hyperlinks in several sheets
* Added [Opencollective donation link](https://opencollective.com/simplexlsx) * Added [Opencollective donation link](https://opencollective.com/simplexlsx)
## 1.0.12 (2021-05-19) ## 1.0.12 (2021-05-19)
* Fixed hyperlink regex * Fixed hyperlink regex
## 1.0.11 (2021-05-14) ## 1.0.11 (2021-05-14)
* Fixed 0.00% format, thx [marcrobledo](https://github.com/shuchkin/simplexlsxgen/pull/34), more examples in README.md * Fixed 0.00% format, thx [marcrobledo](https://github.com/shuchkin/simplexlsxgen/pull/34), more examples in README.md
## 1.0.10 (2021-05-03) ## 1.0.10 (2021-05-03)
Stable release Stable release
* Added hyperlinks and minimal formatting * Added hyperlinks and minimal formatting
## 0.9.25 (2021-02-26) ## 0.9.25 (2021-02-26)
* Added PHP Datetime object values in a cells * Added PHP Datetime object values in a cells
## 0.9.24 (2021-02-26) ## 0.9.24 (2021-02-26)
* Percent support * Percent support
## 0.9.23 (2021-01-25) ## 0.9.23 (2021-01-25)
* Fix local floats in XML * Fix local floats in XML
## 0.9.22 (2020-11-04) ## 0.9.22 (2020-11-04)
* Added multiple sheets support, thx [Savino59](https://github.com/Savino59), class ready for extend now * Added multiple sheets support, thx [Savino59](https://github.com/Savino59), class ready for extend now
## 0.9.21 (2020-10-17) ## 0.9.21 (2020-10-17)
* Updated images * Updated images
## 0.9.20 (2020-10-04) ## 0.9.20 (2020-10-04)
* Disable type detection if string started with chr(0) * Disable type detection if string started with chr(0)
## 0.9.19 (2020-08-23) ## 0.9.19 (2020-08-23)
* Numbers like SKU right aligned now * Numbers like SKU right aligned now
## 0.9.18 (2020-08-22) ## 0.9.18 (2020-08-22)
* Fixed fast shared strings index * Fixed fast shared strings index
## 0.9.17 (2020-08-21) ## 0.9.17 (2020-08-21)
* Fixed real numbers in 123.45 format detection, fast shared strings index (thx fredriksundin) * Fixed real numbers in 123.45 format detection, fast shared strings index (thx fredriksundin)
## 0.9.16 (2020-07-29) ## 0.9.16 (2020-07-29)
* Fixed time detection in HH:MM:SS format * Fixed time detection in HH:MM:SS format
## 0.9.15 (2020-07-14) ## 0.9.15 (2020-07-14)
* Escape of shared strings for special chars in cells [#1](https://github.com/shuchkin/simplexlsxgen/issues/1) * Escape of shared strings for special chars in cells [#1](https://github.com/shuchkin/simplexlsxgen/issues/1)
## 0.9.14 (2020-05-31) ## 0.9.14 (2020-05-31)
* Fixed num2name A-Z,AA-AZ column names, thx Ertan Yusufoglu * Fixed num2name A-Z,AA-AZ column names, thx Ertan Yusufoglu
## 0.9.13 (2020-05-21) ## 0.9.13 (2020-05-21)
* If string more 160 chars, save as inlineStr * If string more 160 chars, save as inlineStr
## 0.9.12 (2020-05-21) ## 0.9.12 (2020-05-21)
* Readme fixed * Readme fixed
## 0.9.11 (2020-05-21) ## 0.9.11 (2020-05-21)
* Removed XML unimportant attributes * Removed XML unimportant attributes
## 0.9.10 (2020-05-20) ## 0.9.10 (2020-05-20)
* Initial release * Initial release

162
README.md
View File

@@ -1,10 +1,12 @@
# SimpleXLSXGen # 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) [<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/> Export data to Excel XLSX file. PHP XLSX generator. No external tools and libraries.
(!) XLSX reader [here](https://github.com/shuchkin/simplexlsx). - 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-2021<br/> **Sergey Shuchkin** <sergey.shuchkin@gmail.com> 2020-2023<br/>
*Hey, bro, please ★ the package for my motivation :) and [donate](https://opencollective.com/simplexlsx) for more motivation!* *Hey, bro, please ★ the package for my motivation :) and [donate](https://opencollective.com/simplexlsx) for more motivation!*
@@ -15,7 +17,7 @@ $books = [
[618260307, 'The Hobbit', 'J. R. R. Tolkien', 'Houghton Mifflin', 'USA'], [618260307, 'The Hobbit', 'J. R. R. Tolkien', 'Houghton Mifflin', 'USA'],
[908606664, 'Slinky Malinki', 'Lynley Dodd', 'Mallinson Rendel', 'NZ'] [908606664, 'Slinky Malinki', 'Lynley Dodd', 'Mallinson Rendel', 'NZ']
]; ];
$xlsx = SimpleXLSXGen::fromArray( $books ); $xlsx = Shuchkin\SimpleXLSXGen::fromArray( $books );
$xlsx->saveAs('books.xlsx'); // or downloadAs('books.xlsx') or $xlsx_content = (string) $xlsx $xlsx->saveAs('books.xlsx'); // or downloadAs('books.xlsx') or $xlsx_content = (string) $xlsx
``` ```
![XLSX screenshot](books.png) ![XLSX screenshot](books.png)
@@ -31,22 +33,30 @@ $ composer require shuchkin/simplexlsxgen
or download class [here](https://github.com/shuchkin/simplexlsxgen/blob/master/src/SimpleXLSXGen.php) or download class [here](https://github.com/shuchkin/simplexlsxgen/blob/master/src/SimpleXLSXGen.php)
## Examples ## Examples
Use UTF-8 encoded strings.
### Data types ### Data types
```php ```php
$data = [ $data = [
['Integer', 123], ['Integer', 123],
['Float', 12.35], ['Float', 12.35],
['Percent', '12%'], ['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'], ['Datetime', '2020-05-20 02:38:00'],
['Date','2020-05-20'], ['Date', '2020-05-20'],
['Time','02:38:00'], ['Time', '02:38:00'],
['Datetime PHP', new DateTime('2021-02-06 21:07:00')], ['Datetime PHP', new DateTime('2021-02-06 21:07:00')],
['String', 'Long UTF-8 String in autoresized column'], ['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', 'https://github.com/shuchkin/simplexlsxgen'],
['Hyperlink + Anchor', '<a href="https://github.com/shuchkin/simplexlsxgen">SimpleXLSXGen</a>'], ['Hyperlink + Anchor', '<a href="https://github.com/shuchkin/simplexlsxgen">SimpleXLSXGen</a>'],
['RAW string', "\0".'2020-10-04 16:02:00'] ['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) ![XLSX screenshot](datatypes.png)
@@ -61,35 +71,150 @@ $data = [
['Bold + Italic', '<b><i>12345.67</i></b>'], ['Bold + Italic', '<b><i>12345.67</i></b>'],
['Hyperlink', 'https://github.com/shuchkin/simplexlsxgen'], ['Hyperlink', 'https://github.com/shuchkin/simplexlsxgen'],
['Italic + Hyperlink + Anchor', '<i><a href="https://github.com/shuchkin/simplexlsxgen">SimpleXLSXGen</a></i>'], ['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>'], ['Left', '<left>12345.67</left>'],
['Center', '<center>12345.67</center>'], ['Center', '<center>12345.67</center>'],
['Right', '<right>Right Text</right>'], ['Right', '<right>Right Text</right>'],
['Center + Bold', '<center><b>Name</b></center>'] ['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 ) SimpleXLSXGen::fromArray($data)
->setDefaultFont( 'Courier New' ) ->setDefaultFont('Courier New')
->setDefaultFontSize( 14 ) ->setDefaultFontSize(14)
->setColWidth(1, 35)
->mergeCells('A20:B20')
->saveAs('styles_and_tags.xlsx'); ->saveAs('styles_and_tags.xlsx');
``` ```
![XLSX screenshot](styles.png) ![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 ### More examples
```php ```php
// Fluid interface, output to browser for download // Fluid interface, output to browser for download
SimpleXLSXGen::fromArray( $books )->downloadAs('table.xlsx'); Shuchkin\SimpleXLSXGen::fromArray( $books )->downloadAs('table.xlsx');
// Fluid interface, multiple sheets // Fluid interface, multiple sheets
SimpleXLSXGen::fromArray( $books )->addSheet( $books2 )->download(); Shuchkin\SimpleXLSXGen::fromArray( $books )->addSheet( $books2 )->download();
// Alternative interface, sheet name, get xlsx content // Alternative interface, sheet name, get xlsx content
$xlsx_cache = (string) (new SimpleXLSXGen)->addSheet( $books, 'Modern style'); $xlsx_cache = (string) (new Shuchkin\SimpleXLSXGen)->addSheet( $books, 'Modern style');
// Classic interface // Classic interface
use Shuchkin\SimpleXLSXGen
$xlsx = new SimpleXLSXGen(); $xlsx = new SimpleXLSXGen();
$xlsx->addSheet( $books, 'Catalog 2021' ); $xlsx->addSheet( $books, 'Catalog 2021' );
$xlsx->addSheet( $books2, 'Stephen King catalog'); $xlsx->addSheet( $books2, 'Stephen King catalog');
$xlsx->downloadAs('books_2021.xlsx'); $xlsx->downloadAs('books_2021.xlsx');
exit(); 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 ## Debug
@@ -99,6 +224,7 @@ ini_set('display_errors', 1 );
$data = [ $data = [
['Debug', 123] ['Debug', 123]
] ];
SimpleXLSXGen::fromArray( $data )->saveAs('debug.xlsx');
Shuchkin\SimpleXLSXGen::fromArray( $data )->saveAs('debug.xlsx');
``` ```

View File

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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 45 KiB

After

Width:  |  Height:  |  Size: 14 KiB

View File

@@ -1,6 +1,6 @@
The MIT License (MIT) 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 Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal of this software and associated documentation files (the "Software"), to deal

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 46 KiB

After

Width:  |  Height:  |  Size: 190 KiB