Skip to content
Browse files

Initial import

  • Loading branch information...
0 parents commit 3facf5615e566778a5aad1e47ed13948c682d885 Ilia committed Aug 1, 2010
Showing with 18,006 additions and 0 deletions.
  1. 0 .deps
  2. +2 −0 CREDITS
  3. 0 EXPERIMENTAL
  4. +34 −0 config.m4
  5. +3,764 −0 excel.c
  6. +46 −0 php_excel.h
  7. +60 −0 tests/001.phpt
  8. +21 −0 tests/002.phpt
  9. +23 −0 tests/003.phpt
  10. +63 −0 tests/004.phpt
  11. +131 −0 tests/005.phpt
  12. +533 −0 tests/006.phpt
  13. +136 −0 tests/007.phpt
  14. +46 −0 tests/008.phpt
  15. +577 −0 tests/009.phpt
  16. +87 −0 tests/010.phpt
  17. +41 −0 tests/011.phpt
  18. +256 −0 tests/012.phpt
  19. +917 −0 tests/013.phpt
  20. +2,484 −0 tests/014.phpt
  21. +6,671 −0 tests/015.phpt
  22. +41 −0 tests/016.phpt
  23. +41 −0 tests/017.phpt
  24. +31 −0 tests/018.phpt
  25. +31 −0 tests/019.phpt
  26. +28 −0 tests/020.phpt
  27. +28 −0 tests/021.phpt
  28. +468 −0 tests/022.phpt
  29. +62 −0 tests/023.phpt
  30. +37 −0 tests/024.phpt
  31. +51 −0 tests/025.phpt
  32. +34 −0 tests/026.phpt
  33. +81 −0 tests/027.phpt
  34. +23 −0 tests/028.phpt
  35. +26 −0 tests/029.phpt
  36. +43 −0 tests/030.phpt
  37. +36 −0 tests/031.phpt
  38. +22 −0 tests/032.phpt
  39. +39 −0 tests/033.phpt
  40. +28 −0 tests/034.phpt
  41. +52 −0 tests/035.phpt
  42. +24 −0 tests/036.phpt
  43. +32 −0 tests/037.phpt
  44. +39 −0 tests/038.phpt
  45. +39 −0 tests/039.phpt
  46. +30 −0 tests/040.phpt
  47. +115 −0 tests/041.phpt
  48. +39 −0 tests/042.phpt
  49. +32 −0 tests/043.phpt
  50. +36 −0 tests/044.phpt
  51. +23 −0 tests/045.phpt
  52. +27 −0 tests/046.phpt
  53. +98 −0 tests/047.phpt
  54. +98 −0 tests/048.phpt
  55. +140 −0 tests/049.phpt
  56. +140 −0 tests/050.phpt
  57. BIN tests/phplogo.jpg
0 .deps
No changes.
2 CREDITS
@@ -0,0 +1,2 @@
+excel
+Ilia Alshanetsky
0 EXPERIMENTAL
No changes.
34 config.m4
@@ -0,0 +1,34 @@
+dnl $Id$
+dnl config.m4 for extension excel
+
+PHP_ARG_WITH(excel, for excel support,
+[ --with-excel Include excel support])
+
+if test "$PHP_EXCEL" != "no"; then
+ SEARCH_PATH="/usr/local /usr" # you might want to change this
+ SEARCH_FOR="/include/libxl.h" # you most likely want to change this
+ if test -r $PHP_EXCEL/$SEARCH_FOR; then # path given as parameter
+ EXCEL_DIR=$PHP_EXCEL
+ else # search default path list
+ AC_MSG_CHECKING([for excel files in default path])
+ for i in $SEARCH_PATH ; do
+ if test -r $i/$SEARCH_FOR; then
+ EXCEL_DIR=$i
+ AC_MSG_RESULT(found in $i)
+ fi
+ done
+ fi
+
+ if test -z "$EXCEL_DIR"; then
+ AC_MSG_RESULT([not found])
+ AC_MSG_ERROR([Please reinstall the excel distribution])
+ fi
+
+ PHP_ADD_INCLUDE($EXCEL_DIR/include)
+
+ AC_MSG_RESULT([$EXCEL_DIR/lib])
+ PHP_ADD_LIBRARY_WITH_PATH(xl, $EXCEL_DIR/lib, XL_SHARED_LIBADD)
+ PHP_ADD_INCLUDE($PHP_ZLIB_INCDIR)
+
+ PHP_NEW_EXTENSION(excel, excel.c, $ext_shared)
+fi
3,764 excel.c
3,764 additions, 0 deletions not shown because the diff is too large. Please use a local Git client to view these changes.
46 php_excel.h
@@ -0,0 +1,46 @@
+/*
+ +----------------------------------------------------------------------+
+ | PHP Version 5 |
+ +----------------------------------------------------------------------+
+ | Copyright (c) 1997-2010 The PHP Group |
+ +----------------------------------------------------------------------+
+ | This source file is subject to version 3.01 of the PHP license, |
+ | that is bundled with this package in the file LICENSE, and is |
+ | available through the world-wide-web at the following url: |
+ | http://www.php.net/license/3_01.txt |
+ | If you did not receive a copy of the PHP license and are unable to |
+ | obtain it through the world-wide-web, please send a note to |
+ | license@php.net so we can mail you a copy immediately. |
+ +----------------------------------------------------------------------+
+ | Author: Ilia Alshanetsky <ilia@ilia.ws> |
+ +----------------------------------------------------------------------+
+*/
+
+/* $Id: header 297205 2010-03-30 21:09:07Z johannes $ */
+
+#ifndef PHP_EXCEL_H
+#define PHP_EXCEL_H
+
+extern zend_module_entry excel_module_entry;
+#define phpext_excel_ptr &excel_module_entry
+
+#ifdef PHP_WIN32
+#define PHP_EXCEL_API __declspec(dllexport)
+#else
+#define PHP_EXCEL_API
+#endif
+
+#ifdef ZTS
+#include "TSRM.h"
+#endif
+
+#endif /* PHP_EXCEL_H */
+
+/*
+ * Local variables:
+ * tab-width: 4
+ * c-basic-offset: 4
+ * End:
+ * vim600: noet sw=4 ts=4 fdm=marker
+ * vim<600: noet sw=4 ts=4
+ */
60 tests/001.phpt
@@ -0,0 +1,60 @@
+--TEST--
+Excel font tests
+--SKIPIF--
+<?php if (!extension_loaded("excel")) print "skip"; ?>
+--FILE--
+<?php
+ $x = new ExcelBook();
+ $font = $x->addFont();
+
+ var_dump(
+ $font->name(),
+ $font->size(),
+ $font->underline(),
+ $font->mode(),
+ $font->color(),
+ $font->bold(),
+ $font->strike(),
+ $font->italics()
+ );
+
+ var_dump($font->name("Courier"));
+ var_dump($font->size(10));
+ var_dump($font->bold(true));
+ var_dump($font->strike(true));
+ var_dump($font->italics(true));
+ var_dump($font->mode(ExcelFont::SUBSCRIPT));
+ var_dump($font->mode(ExcelFont::SUPERSCRIPT) == ExcelFont::SUPERSCRIPT);
+
+ var_dump($font->underline(ExcelFont::UNDERLINE_NONE));
+ var_dump($font->underline(ExcelFont::UNDERLINE_SINGLE) == ExcelFont::UNDERLINE_SINGLE);
+ var_dump($font->underline(ExcelFont::UNDERLINE_DOUBLE));
+ var_dump($font->underline(ExcelFont::UNDERLINE_SINGLEACC) == ExcelFont::UNDERLINE_SINGLEACC);
+ var_dump($font->underline(ExcelFont::UNDERLINE_DOUBLEACC) == ExcelFont::UNDERLINE_DOUBLEACC);
+
+ var_dump($font->color(ExcelFormat::COLOR_PALEBLUE) == ExcelFormat::COLOR_PALEBLUE);
+ var_dump($font->color(ExcelFormat::COLOR_DARKRED) == ExcelFormat::COLOR_DARKRED);
+?>
+--EXPECT--
+string(5) "Arial"
+int(10)
+int(0)
+int(0)
+int(32767)
+bool(false)
+bool(false)
+bool(false)
+string(7) "Courier"
+int(10)
+bool(true)
+bool(true)
+bool(true)
+int(2)
+bool(true)
+int(0)
+bool(true)
+int(2)
+bool(true)
+bool(true)
+bool(true)
+bool(true)
21 tests/002.phpt
@@ -0,0 +1,21 @@
+--TEST--
+Excel date pack/unpack tests
+--SKIPIF--
+<?php if (!extension_loaded("excel")) print "skip"; ?>
+--FILE--
+<?php
+ $x = new ExcelBook();
+
+ $t = time();
+ for ($i = 0; $i < 1000; $i++) {
+ $tm = rand(10000000, $t);
+
+ $out = $x->unpackDate($x->packDate($tm));
+ if ($out != $tm) {
+ echo "source: {$tm} <> res: " . $out . " >> diff: ".($out - $tm)." packed: '".$x->packDate($tm)."'\n";
+ }
+ }
+ echo "OK\n";
+?>
+--EXPECT--
+OK
23 tests/003.phpt
@@ -0,0 +1,23 @@
+--TEST--
+Basic Type write tests
+--SKIPIF--
+<?php if (!extension_loaded("excel")) print "skip"; ?>
+--FILE--
+<?php
+ $x = new ExcelBook();
+
+ $data = array(true, 1.222, 434324, "fsdfasDF", NULL, "");
+
+ $s = $x->addSheet("Sheet 1");
+
+ foreach ($data as $k => $v) {
+ $s->write(($k + 1), 1, gettype($v));
+ $s->write(($k + 1), 2, $v);
+ }
+
+
+
+ echo "OK\n";
+?>
+--EXPECT--
+OK
63 tests/004.phpt
@@ -0,0 +1,63 @@
+--TEST--
+Complex Type write tests
+--INI--
+date.timezone=America/Toronto
+--SKIPIF--
+<?php if (!extension_loaded("excel")) print "skip"; ?>
+--FILE--
+<?php
+ $x = new ExcelBook();
+
+ $time = mktime(5,0,0,1,21,1980);
+
+ $format = $x->addFormat();
+ $format->numberFormat(ExcelFormat::NUMFORMAT_CUSTOM_D_MON_YY);
+
+ $format2 = $x->addFormat();
+ $format2->numberFormat(ExcelFormat::NUMFORMAT_CUSTOM_HMMSS);
+
+ $data = array(
+ "date" => array($time, ExcelFormat::AS_DATE, $format),
+ "formula" => array("SUM(B4:B4)", ExcelFormat::AS_FORMULA),
+ "numeric_textA" => array("32321", ExcelFormat::AS_NUMERIC_STRING),
+ "numeric_textB" => array("AV32321", ExcelFormat::AS_NUMERIC_STRING),
+ "time" => array($time, ExcelFormat::AS_DATE, $format2),
+ );
+
+ $s = $x->addSheet("Sheet 1");
+
+ $row = 1;
+ foreach ($data as $k => $v) {
+ var_dump($s->write($row, 0, $k));
+ var_dump($x->getError());
+ var_dump($s->write($row, 1, $v[0], (isset($v[2]) ? $v[2] : NULL), $v[1]));
+ var_dump($x->getError());
+ ++$row;
+ }
+
+
+
+ echo "OK\n";
+?>
+--EXPECT--
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+OK
131 tests/005.phpt
@@ -0,0 +1,131 @@
+--TEST--
+Date format tests
+--INI--
+date.timezone=America/Toronto
+--SKIPIF--
+<?ph p if (!extension_loaded("excel")) print "skip"; ?>
+--FILE--
+<?php
+ $x = new ExcelBook();
+
+ $time = mktime(5,43,11,1,21,1980);
+
+ $s = $x->addSheet("Sheet 1");
+
+ $row = 1;
+
+ $oClass = new ReflectionClass('ExcelFormat');
+
+ $date_constants = array(
+ "NUMFORMAT_DATE",
+ "NUMFORMAT_CUSTOM_D_MON_YY",
+ "NUMFORMAT_CUSTOM_D_MON",
+ "NUMFORMAT_CUSTOM_MON_YY",
+ "NUMFORMAT_CUSTOM_HMM_AM",
+ "NUMFORMAT_CUSTOM_HMMSS_AM",
+ "NUMFORMAT_CUSTOM_HMM",
+ "NUMFORMAT_CUSTOM_HMMSS",
+ "NUMFORMAT_CUSTOM_MDYYYY_HMM",
+ "NUMFORMAT_CUSTOM_MMSS",
+ "NUMFORMAT_CUSTOM_H0MMSS",
+ "NUMFORMAT_CUSTOM_MMSS0"
+ );
+
+ foreach ($oClass->getConstants() as $c => $val) {
+ if (!in_array($c, $date_constants)) {
+ continue;
+ }
+
+ $format = $x->addFormat();
+ $format->numberFormat($val);
+
+ var_dump($s->write($row, 0, $c));
+ var_dump($x->getError());
+ var_dump($s->write($row, 1, $time, $format, ExcelFormat::AS_DATE));
+ var_dump($x->getError());
+ ++$row;
+ }
+
+ for($i = 1; $i < $row; $i++) {
+ echo $s->read($i, 0) . " >> " . $s->read($i, 1) . "\n";
+ var_dump($x->getError());
+ }
+
+
+
+ echo "OK\n";
+?>
+--EXPECT--
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+NUMFORMAT_DATE >> 317299391
+bool(false)
+NUMFORMAT_CUSTOM_D_MON_YY >> 317299391
+bool(false)
+NUMFORMAT_CUSTOM_D_MON >> 317299391
+bool(false)
+NUMFORMAT_CUSTOM_MON_YY >> 317299391
+bool(false)
+NUMFORMAT_CUSTOM_HMM_AM >> 317299391
+bool(false)
+NUMFORMAT_CUSTOM_HMMSS_AM >> 317299391
+bool(false)
+NUMFORMAT_CUSTOM_HMM >> 317299391
+bool(false)
+NUMFORMAT_CUSTOM_HMMSS >> 317299391
+bool(false)
+NUMFORMAT_CUSTOM_MDYYYY_HMM >> 317299391
+bool(false)
+NUMFORMAT_CUSTOM_MMSS >> 317299391
+bool(false)
+NUMFORMAT_CUSTOM_H0MMSS >> 317299391
+bool(false)
+NUMFORMAT_CUSTOM_MMSS0 >> 317299391
+bool(false)
+OK
533 tests/006.phpt
@@ -0,0 +1,533 @@
+--TEST--
+Numeric Data format tests
+--INI--
+date.timezone=America/Toronto
+--SKIPIF--
+<?php if (!extension_loaded("excel")) print "skip"; ?>
+--FILE--
+<?php
+ $x = new ExcelBook();
+
+ $s = $x->addSheet("Sheet 1");
+
+ $row = 1;
+
+ $oClass = new ReflectionClass('ExcelFormat');
+
+ $constants = array(
+ "NUMFORMAT_GENERAL",
+ "NUMFORMAT_NUMBER",
+ "NUMFORMAT_NUMBER_D2",
+ "NUMFORMAT_NUMBER_SEP",
+ "NUMFORMAT_NUMBER_SEP_D2",
+ "NUMFORMAT_CURRENCY_NEGBRA",
+ "NUMFORMAT_CURRENCY_NEGBRARED",
+ "NUMFORMAT_CURRENCY_D2_NEGBRA",
+ "NUMFORMAT_CURRENCY_D2_NEGBRARED",
+ "NUMFORMAT_PERCENT",
+ "NUMFORMAT_PERCENT_D2",
+ "NUMFORMAT_SCIENTIFIC_D2",
+ "NUMFORMAT_FRACTION_ONEDIG",
+ "NUMFORMAT_FRACTION_TWODIG",
+ "NUMFORMAT_NUMBER_SEP_NEGBRA",
+ "NUMFORMAT_NUMBER_SEP_NEGBRARED",
+ "NUMFORMAT_NUMBER_D2_SEP_NEGBRA",
+ "NUMFORMAT_NUMBER_D2_SEP_NEGBRARED",
+ "NUMFORMAT_ACCOUNT",
+ "NUMFORMAT_ACCOUNTCUR",
+ "NUMFORMAT_ACCOUNT_D2",
+ "NUMFORMAT_ACCOUNT_D2_CUR",
+ "NUMFORMAT_CUSTOM_000P0E_PLUS0",
+ "NUMFORMAT_TEXT"
+ );
+
+ $numbers = array(100, -100, 100.99, -100.99, 0.99, -0.99, 242342343, -242342343);
+
+ foreach ($oClass->getConstants() as $c => $val) {
+ if (!in_array($c, $constants)) {
+ continue;
+ }
+
+ var_dump($s->write($row, 0, $c));
+ var_dump($x->getError());
+
+ foreach ($numbers as $k => $v) {
+ $format = $x->addFormat();
+ $format->numberFormat($val);
+ var_dump($s->write($row, ($k + 1), $v, $format));
+ var_dump($x->getError());
+ }
+ ++$row;
+ }
+
+ for($i = 1; $i < $row; $i++) {
+ echo $s->read($i, 0) . " >> ";
+ foreach ($numbers as $k => $v) {
+ $format = '';
+ echo "(" . $s->read($i, ($k + 1), $format) . " via " . $format->numberFormat() . " " . $x->getError() . " ) -- ";
+ }
+ echo "\n";
+ }
+
+
+
+ echo "OK\n";
+?>
+--EXPECT--
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+NUMFORMAT_GENERAL >> (100 via 0 ) -- (-100 via 0 ) -- (100.99 via 0 ) -- (-100.99 via 0 ) -- (0.99 via 0 ) -- (-0.99 via 0 ) -- (242342343 via 0 ) -- (-242342343 via 0 ) --
+NUMFORMAT_NUMBER >> (100 via 1 ) -- (-100 via 1 ) -- (100.99 via 1 ) -- (-100.99 via 1 ) -- (0.99 via 1 ) -- (-0.99 via 1 ) -- (242342343 via 1 ) -- (-242342343 via 1 ) --
+NUMFORMAT_NUMBER_D2 >> (100 via 2 ) -- (-100 via 2 ) -- (100.99 via 2 ) -- (-100.99 via 2 ) -- (0.99 via 2 ) -- (-0.99 via 2 ) -- (242342343 via 2 ) -- (-242342343 via 2 ) --
+NUMFORMAT_NUMBER_SEP >> (100 via 3 ) -- (-100 via 3 ) -- (100.99 via 3 ) -- (-100.99 via 3 ) -- (0.99 via 3 ) -- (-0.99 via 3 ) -- (242342343 via 3 ) -- (-242342343 via 3 ) --
+NUMFORMAT_NUMBER_SEP_D2 >> (100 via 4 ) -- (-100 via 4 ) -- (100.99 via 4 ) -- (-100.99 via 4 ) -- (0.99 via 4 ) -- (-0.99 via 4 ) -- (242342343 via 4 ) -- (-242342343 via 4 ) --
+NUMFORMAT_CURRENCY_NEGBRA >> (100 via 5 ) -- (-100 via 5 ) -- (100.99 via 5 ) -- (-100.99 via 5 ) -- (0.99 via 5 ) -- (-0.99 via 5 ) -- (242342343 via 5 ) -- (-242342343 via 5 ) --
+NUMFORMAT_CURRENCY_NEGBRARED >> (100 via 6 ) -- (-100 via 6 ) -- (100.99 via 6 ) -- (-100.99 via 6 ) -- (0.99 via 6 ) -- (-0.99 via 6 ) -- (242342343 via 6 ) -- (-242342343 via 6 ) --
+NUMFORMAT_CURRENCY_D2_NEGBRA >> (100 via 7 ) -- (-100 via 7 ) -- (100.99 via 7 ) -- (-100.99 via 7 ) -- (0.99 via 7 ) -- (-0.99 via 7 ) -- (242342343 via 7 ) -- (-242342343 via 7 ) --
+NUMFORMAT_CURRENCY_D2_NEGBRARED >> (100 via 8 ) -- (-100 via 8 ) -- (100.99 via 8 ) -- (-100.99 via 8 ) -- (0.99 via 8 ) -- (-0.99 via 8 ) -- (242342343 via 8 ) -- (-242342343 via 8 ) --
+NUMFORMAT_PERCENT >> (100 via 9 ) -- (-100 via 9 ) -- (100.99 via 9 ) -- (-100.99 via 9 ) -- (0.99 via 9 ) -- (-0.99 via 9 ) -- (242342343 via 9 ) -- (-242342343 via 9 ) --
+NUMFORMAT_PERCENT_D2 >> (100 via 10 ) -- (-100 via 10 ) -- (100.99 via 10 ) -- (-100.99 via 10 ) -- (0.99 via 10 ) -- (-0.99 via 10 ) -- (242342343 via 10 ) -- (-242342343 via 10 ) --
+NUMFORMAT_SCIENTIFIC_D2 >> (100 via 11 ) -- (-100 via 11 ) -- (100.99 via 11 ) -- (-100.99 via 11 ) -- (0.99 via 11 ) -- (-0.99 via 11 ) -- (242342343 via 11 ) -- (-242342343 via 11 ) --
+NUMFORMAT_FRACTION_ONEDIG >> (100 via 12 ) -- (-100 via 12 ) -- (100.99 via 12 ) -- (-100.99 via 12 ) -- (0.99 via 12 ) -- (-0.99 via 12 ) -- (242342343 via 12 ) -- (-242342343 via 12 ) --
+NUMFORMAT_FRACTION_TWODIG >> (100 via 13 ) -- (-100 via 13 ) -- (100.99 via 13 ) -- (-100.99 via 13 ) -- (0.99 via 13 ) -- (-0.99 via 13 ) -- (242342343 via 13 ) -- (-242342343 via 13 ) --
+NUMFORMAT_NUMBER_SEP_NEGBRA >> (100 via 37 ) -- (-100 via 37 ) -- (100.99 via 37 ) -- (-100.99 via 37 ) -- (0.99 via 37 ) -- (-0.99 via 37 ) -- (242342343 via 37 ) -- (-242342343 via 37 ) --
+NUMFORMAT_NUMBER_SEP_NEGBRARED >> (100 via 38 ) -- (-100 via 38 ) -- (100.99 via 38 ) -- (-100.99 via 38 ) -- (0.99 via 38 ) -- (-0.99 via 38 ) -- (242342343 via 38 ) -- (-242342343 via 38 ) --
+NUMFORMAT_NUMBER_D2_SEP_NEGBRA >> (100 via 39 ) -- (-100 via 39 ) -- (100.99 via 39 ) -- (-100.99 via 39 ) -- (0.99 via 39 ) -- (-0.99 via 39 ) -- (242342343 via 39 ) -- (-242342343 via 39 ) --
+NUMFORMAT_NUMBER_D2_SEP_NEGBRARED >> (100 via 40 ) -- (-100 via 40 ) -- (100.99 via 40 ) -- (-100.99 via 40 ) -- (0.99 via 40 ) -- (-0.99 via 40 ) -- (242342343 via 40 ) -- (-242342343 via 40 ) --
+NUMFORMAT_ACCOUNT >> (100 via 41 ) -- (-100 via 41 ) -- (100.99 via 41 ) -- (-100.99 via 41 ) -- (0.99 via 41 ) -- (-0.99 via 41 ) -- (242342343 via 41 ) -- (-242342343 via 41 ) --
+NUMFORMAT_ACCOUNTCUR >> (100 via 42 ) -- (-100 via 42 ) -- (100.99 via 42 ) -- (-100.99 via 42 ) -- (0.99 via 42 ) -- (-0.99 via 42 ) -- (242342343 via 42 ) -- (-242342343 via 42 ) --
+NUMFORMAT_ACCOUNT_D2 >> (100 via 43 ) -- (-100 via 43 ) -- (100.99 via 43 ) -- (-100.99 via 43 ) -- (0.99 via 43 ) -- (-0.99 via 43 ) -- (242342343 via 43 ) -- (-242342343 via 43 ) --
+NUMFORMAT_ACCOUNT_D2_CUR >> (100 via 44 ) -- (-100 via 44 ) -- (100.99 via 44 ) -- (-100.99 via 44 ) -- (0.99 via 44 ) -- (-0.99 via 44 ) -- (242342343 via 44 ) -- (-242342343 via 44 ) --
+NUMFORMAT_CUSTOM_000P0E_PLUS0 >> (100 via 48 ) -- (-100 via 48 ) -- (100.99 via 48 ) -- (-100.99 via 48 ) -- (0.99 via 48 ) -- (-0.99 via 48 ) -- (242342343 via 48 ) -- (-242342343 via 48 ) --
+NUMFORMAT_TEXT >> (100 via 49 ) -- (-100 via 49 ) -- (100.99 via 49 ) -- (-100.99 via 49 ) -- (0.99 via 49 ) -- (-0.99 via 49 ) -- (242342343 via 49 ) -- (-242342343 via 49 ) --
+OK
136 tests/007.phpt
@@ -0,0 +1,136 @@
+--TEST--
+Alignment Tests
+--INI--
+date.timezone=America/Toronto
+--SKIPIF--
+<?php if (!extension_loaded("excel")) print "skip"; ?>
+--FILE--
+<?php
+ $x = new ExcelBook();
+
+ $s = $x->addSheet("Sheet 1");
+
+ $row = 1;
+
+ $oClass = new ReflectionClass('ExcelFormat');
+
+ $data = "my test\ndata";
+
+ $s->setColWidth(1, 1, 55);
+ var_dump($x->getError());
+
+ foreach ($oClass->getConstants() as $c => $val) {
+ if (strpos($c, 'ALIGNH_') !== 0) {
+ continue;
+ }
+
+ var_dump($s->write($row, 0, $c));
+ var_dump($x->getError());
+
+ $format = $x->addFormat();
+ $format->horizontalAlign($val);
+
+ var_dump($s->write($row, 1, $data, $format));
+ var_dump($x->getError());
+
+ ++$row;
+ }
+
+ foreach ($oClass->getConstants() as $c => $val) {
+ if (strpos($c, 'ALIGNV_') !== 0) {
+ continue;
+ }
+
+ $s->setRowHeight($row, 50);
+
+ var_dump($s->write($row, 0, $c));
+ var_dump($x->getError());
+
+ $format = $x->addFormat();
+ $format->verticalAlign($val);
+
+ var_dump($s->write($row, 1, $data, $format));
+ var_dump($x->getError());
+
+ ++$row;
+ }
+
+ for($i = 1; $i < $row; $i++) {
+ echo $s->read($i, 0) . " >> ";
+ $format = '';
+ $s->read($i, 1, $format);
+ echo "h: " . $format->horizontalAlign() . " || v: " . $format->verticalAlign() . "\n";
+ }
+
+
+
+ echo "OK\n";
+?>
+--EXPECT--
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+ALIGNH_GENERAL >> h: 0 || v: 2
+ALIGNH_LEFT >> h: 1 || v: 2
+ALIGNH_CENTER >> h: 2 || v: 2
+ALIGNH_RIGHT >> h: 3 || v: 2
+ALIGNH_FILL >> h: 4 || v: 2
+ALIGNH_JUSTIFY >> h: 5 || v: 2
+ALIGNH_MERGE >> h: 6 || v: 2
+ALIGNH_DISTRIBUTED >> h: 7 || v: 2
+ALIGNV_TOP >> h: 0 || v: 0
+ALIGNV_CENTER >> h: 0 || v: 1
+ALIGNV_BOTTOM >> h: 0 || v: 2
+ALIGNV_JUSTIFY >> h: 0 || v: 3
+ALIGNV_DISTRIBUTED >> h: 0 || v: 4
+OK
46 tests/008.phpt
@@ -0,0 +1,46 @@
+--TEST--
+Text Wrap Test
+--INI--
+date.timezone=America/Toronto
+--SKIPIF--
+<?php if (!extension_loaded("excel")) print "skip"; ?>
+--FILE--
+<?php
+ $x = new ExcelBook();
+
+ $s = $x->addSheet("Sheet 1");
+
+ $oClass = new ReflectionClass('ExcelFormat');
+
+ $data = str_repeat("my test data", 10);;
+
+ $format = $x->addFormat();
+ $format->wrap(false);
+
+ var_dump($s->write(1, 0, $data, $format));
+ var_dump($x->getError());
+
+ $format = $x->addFormat();
+ $format->wrap(true);
+
+ var_dump($s->write(2, 0, $data, $format));
+ var_dump($x->getError());
+
+ for($i = 1; $i < 3; $i++) {
+ $format = '';
+ $s->read($i, 0, $format);
+ echo (int)$format->wrap() . "\n";
+ }
+
+
+
+ echo "OK\n";
+?>
+--EXPECT--
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+0
+1
+OK
577 tests/009.phpt
@@ -0,0 +1,577 @@
+--TEST--
+Text rotation test
+--INI--
+date.timezone=America/Toronto
+--SKIPIF--
+<?php if (!extension_loaded("excel")) print "skip"; ?>
+--FILE--
+<?php
+ $x = new ExcelBook();
+
+ $s = $x->addSheet("Sheet 1");
+
+ $data = "Test";
+
+ for ($i = 0; $i < 181; $i++) {
+ $format = $x->addFormat();
+ $format->rotate($i);
+
+ var_dump($s->write($i, 0, $data, $format));
+ var_dump($x->getError());
+ }
+
+ for($i = 0; $i < 181; $i++) {
+ $format = '';
+ $s->read($i, 0, $format);
+ echo (int)$format->rotate() . "\n";
+ }
+
+
+
+ echo "OK\n";
+?>
+--EXPECT--
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+0
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+OK
87 tests/010.phpt
@@ -0,0 +1,87 @@
+--TEST--
+Text indentation
+--INI--
+date.timezone=America/Toronto
+--SKIPIF--
+<?php if (!extension_loaded("excel")) print "skip"; ?>
+--FILE--
+<?php
+ $x = new ExcelBook();
+
+ $s = $x->addSheet("Sheet 1");
+
+ $data = "Test";
+
+ for ($i = 0; $i < 17; $i++) {
+ $format = $x->addFormat();
+ $format->indent($i);
+
+ var_dump($s->write($i, 0, $data, $format));
+ var_dump($x->getError());
+ }
+
+ for($i = 0; $i < 17; $i++) {
+ $format = '';
+ $s->read($i, 0, $format);
+ echo (int)$format->indent() . "\n";
+ }
+
+
+
+ echo "OK\n";
+?>
+--EXPECTF--
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+
+Warning: ExcelFormat::indent(): Text indentation level must be less than or equal to 15 in %s on line %d
+bool(true)
+bool(false)
+0
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+0
+OK
41 tests/011.phpt
@@ -0,0 +1,41 @@
+--TEST--
+Shrink to fit
+--INI--
+date.timezone=America/Toronto
+--SKIPIF--
+<?php if (!extension_loaded("excel")) print "skip"; ?>
+--FILE--
+<?php
+ $x = new ExcelBook();
+
+ $s = $x->addSheet("Sheet 1");
+
+ $data = "Test";
+
+ $format = $x->addFormat();
+ $format->shrinkToFit(true);
+
+ var_dump($s->write(1, 0, $data, $format));
+ var_dump($x->getError());
+
+ var_dump($s->write(2, 0, $data));
+ var_dump($x->getError());
+
+
+
+ for($i = 1; $i < 3; $i++) {
+ $format = '';
+ $s->read($i, 0, $format);
+ echo (int)$format->shrinkToFit() . "\n";
+ }
+
+ echo "OK\n";
+?>
+--EXPECT--
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+1
+0
+OK
256 tests/012.phpt
@@ -0,0 +1,256 @@
+--TEST--
+Border Styles
+--INI--
+date.timezone=America/Toronto
+--SKIPIF--
+<?php if (!extension_loaded("excel")) print "skip"; ?>
+--FILE--
+<?php
+ $x = new ExcelBook();
+
+ $s = $x->addSheet("Sheet 1");
+
+ $data = "Test";
+ $oClass = new ReflectionClass('ExcelFormat');
+
+ $row = $col = 0;
+
+ foreach (array('', 'Left','Right','Top','Bottom') as $b) {
+ foreach ($oClass->getConstants() as $c => $val) {
+ if (strpos($c, 'BORDERSTYLE_') !== 0) {
+ continue;
+ }
+
+ $f = 'border' . $b . 'Style';
+
+ $format = $x->addFormat();
+ $format->$f($val);
+
+ var_dump($s->write($row, $col, $data, $format));
+ var_dump($x->getError());
+
+ $fmt = null;
+ $s->read($row, $col, $fmt);
+ echo $fmt->$f() . "\n";
+
+ ++$row;
+ ++$col;
+ }
+ }
+
+
+
+ echo "OK\n";
+?>
+--EXPECT--
+bool(true)
+bool(false)
+1
+bool(true)
+bool(false)
+1
+bool(true)
+bool(false)
+1
+bool(true)
+bool(false)
+1
+bool(true)
+bool(false)
+1
+bool(true)
+bool(false)
+1
+bool(true)
+bool(false)
+1
+bool(true)
+bool(false)
+1
+bool(true)
+bool(false)
+1
+bool(true)
+bool(false)
+1
+bool(true)
+bool(false)
+1
+bool(true)
+bool(false)
+1
+bool(true)
+bool(false)
+1
+bool(true)
+bool(false)
+1
+bool(true)
+bool(false)
+0
+bool(true)
+bool(false)
+1
+bool(true)
+bool(false)
+2
+bool(true)
+bool(false)
+3
+bool(true)
+bool(false)
+4
+bool(true)
+bool(false)
+5
+bool(true)
+bool(false)
+6
+bool(true)
+bool(false)
+7
+bool(true)
+bool(false)
+8
+bool(true)
+bool(false)
+9
+bool(true)
+bool(false)
+10
+bool(true)
+bool(false)
+11
+bool(true)
+bool(false)
+12
+bool(true)
+bool(false)
+13
+bool(true)
+bool(false)
+0
+bool(true)
+bool(false)
+1
+bool(true)
+bool(false)
+2
+bool(true)
+bool(false)
+3
+bool(true)
+bool(false)
+4
+bool(true)
+bool(false)
+5
+bool(true)
+bool(false)
+6
+bool(true)
+bool(false)
+7
+bool(true)
+bool(false)
+8
+bool(true)
+bool(false)
+9
+bool(true)
+bool(false)
+10
+bool(true)
+bool(false)
+11
+bool(true)
+bool(false)
+12
+bool(true)
+bool(false)
+13
+bool(true)
+bool(false)
+0
+bool(true)
+bool(false)
+1
+bool(true)
+bool(false)
+2
+bool(true)
+bool(false)
+3
+bool(true)
+bool(false)
+4
+bool(true)
+bool(false)
+5
+bool(true)
+bool(false)
+6
+bool(true)
+bool(false)
+7
+bool(true)
+bool(false)
+8
+bool(true)
+bool(false)
+9
+bool(true)
+bool(false)
+10
+bool(true)
+bool(false)
+11
+bool(true)
+bool(false)
+12
+bool(true)
+bool(false)
+13
+bool(true)
+bool(false)
+0
+bool(true)
+bool(false)
+1
+bool(true)
+bool(false)
+2
+bool(true)
+bool(false)
+3
+bool(true)
+bool(false)
+4
+bool(true)
+bool(false)
+5
+bool(true)
+bool(false)
+6
+bool(true)
+bool(false)
+7
+bool(true)
+bool(false)
+8
+bool(true)
+bool(false)
+9
+bool(true)
+bool(false)
+10
+bool(true)
+bool(false)
+11
+bool(true)
+bool(false)
+12
+bool(true)
+bool(false)
+13
+OK
917 tests/013.phpt
@@ -0,0 +1,917 @@
+--TEST--
+Border Colors
+--INI--
+date.timezone=America/Toronto
+--SKIPIF--
+<?php if (!extension_loaded("excel")) print "skip"; ?>
+--FILE--
+<?php
+ $x = new ExcelBook();
+
+ $s = $x->addSheet("Sheet 1");
+
+ $data = "Test";
+ $oClass = new ReflectionClass('ExcelFormat');
+
+ $row = $col = 0;
+
+ foreach (array('', 'Left','Right','Top','Bottom') as $b) {
+ foreach ($oClass->getConstants() as $c => $val) {
+ if (strpos($c, 'COLOR_') !== 0) {
+ continue;
+ }
+
+ $f = 'border' . $b . 'Color';
+
+ $format = $x->addFormat();
+ $format->$f($val);
+ $format->borderStyle(ExcelFormat::BORDERSTYLE_THICK);
+
+ var_dump($s->write($row, 1, $data, $format));
+ var_dump($x->getError());
+
+ $fmt = null;
+ $s->read($row, 1, $fmt);
+ echo $fmt->$f() . "\n";
+
+ $row += 2;
+ }
+ }
+
+
+
+
+ echo "OK\n";
+?>
+--EXPECT--
+bool(true)
+bool(false)
+1
+bool(true)
+bool(false)
+1
+bool(true)
+bool(false)
+1
+bool(true)
+bool(false)
+1
+bool(true)
+bool(false)
+1
+bool(true)
+bool(false)
+1
+bool(true)
+bool(false)
+1
+bool(true)
+bool(false)
+1
+bool(true)
+bool(false)
+1
+bool(true)
+bool(false)
+1
+bool(true)
+bool(false)
+1
+bool(true)
+bool(false)
+1
+bool(true)
+bool(false)
+1
+bool(true)
+bool(false)
+1
+bool(true)
+bool(false)
+1
+bool(true)
+bool(false)
+1
+bool(true)
+bool(false)
+1
+bool(true)
+bool(false)
+1
+bool(true)
+bool(false)
+1
+bool(true)
+bool(false)
+1
+bool(true)
+bool(false)
+1
+bool(true)
+bool(false)
+1
+bool(true)
+bool(false)
+1
+bool(true)
+bool(false)
+1
+bool(true)
+bool(false)
+1
+bool(true)
+bool(false)
+1
+bool(true)
+bool(false)
+1
+bool(true)
+bool(false)
+1
+bool(true)
+bool(false)
+1
+bool(true)
+bool(false)
+1
+bool(true)
+bool(false)
+1
+bool(true)
+bool(false)
+1
+bool(true)
+bool(false)
+1
+bool(true)
+bool(false)
+1
+bool(true)
+bool(false)
+1
+bool(true)
+bool(false)
+1
+bool(true)
+bool(false)
+1
+bool(true)
+bool(false)
+1
+bool(true)
+bool(false)
+1
+bool(true)
+bool(false)
+1
+bool(true)
+bool(false)
+1
+bool(true)
+bool(false)
+1
+bool(true)
+bool(false)
+1
+bool(true)
+bool(false)
+1
+bool(true)
+bool(false)
+1
+bool(true)
+bool(false)
+1
+bool(true)
+bool(false)
+1
+bool(true)
+bool(false)
+1
+bool(true)
+bool(false)
+1
+bool(true)
+bool(false)
+1
+bool(true)
+bool(false)
+1
+bool(true)
+bool(false)
+1
+bool(true)
+bool(false)
+1
+bool(true)
+bool(false)
+1
+bool(true)
+bool(false)
+1
+bool(true)
+bool(false)
+1
+bool(true)
+bool(false)
+1
+bool(true)
+bool(false)
+1
+bool(true)
+bool(false)
+8
+bool(true)
+bool(false)
+9
+bool(true)
+bool(false)
+10
+bool(true)
+bool(false)
+11
+bool(true)
+bool(false)
+12
+bool(true)
+bool(false)
+13
+bool(true)
+bool(false)
+14
+bool(true)
+bool(false)
+15
+bool(true)
+bool(false)
+16
+bool(true)
+bool(false)
+17
+bool(true)
+bool(false)
+18
+bool(true)
+bool(false)
+19
+bool(true)
+bool(false)
+20
+bool(true)
+bool(false)
+21
+bool(true)
+bool(false)
+22
+bool(true)
+bool(false)
+23
+bool(true)
+bool(false)
+24
+bool(true)
+bool(false)
+25
+bool(true)
+bool(false)
+26
+bool(true)
+bool(false)
+27
+bool(true)
+bool(false)
+28
+bool(true)
+bool(false)
+29
+bool(true)
+bool(false)
+30
+bool(true)
+bool(false)
+31
+bool(true)
+bool(false)
+32
+bool(true)
+bool(false)
+33
+bool(true)
+bool(false)
+34
+bool(true)
+bool(false)
+35
+bool(true)
+bool(false)
+36
+bool(true)
+bool(false)
+37
+bool(true)
+bool(false)
+38
+bool(true)
+bool(false)
+39
+bool(true)
+bool(false)
+40
+bool(true)
+bool(false)
+41
+bool(true)
+bool(false)
+42
+bool(true)
+bool(false)
+43
+bool(true)
+bool(false)
+44
+bool(true)
+bool(false)
+45
+bool(true)
+bool(false)
+46
+bool(true)
+bool(false)
+47
+bool(true)
+bool(false)
+48
+bool(true)
+bool(false)
+49
+bool(true)
+bool(false)
+50
+bool(true)
+bool(false)
+51
+bool(true)
+bool(false)
+52
+bool(true)
+bool(false)
+53
+bool(true)
+bool(false)
+54
+bool(true)
+bool(false)
+55
+bool(true)
+bool(false)
+56
+bool(true)
+bool(false)
+57
+bool(true)
+bool(false)
+58
+bool(true)
+bool(false)
+59
+bool(true)
+bool(false)
+60
+bool(true)
+bool(false)
+61
+bool(true)
+bool(false)
+62
+bool(true)
+bool(false)
+63
+bool(true)
+bool(false)
+64
+bool(true)
+bool(false)
+65
+bool(true)
+bool(false)
+8
+bool(true)
+bool(false)
+9
+bool(true)
+bool(false)
+10
+bool(true)
+bool(false)
+11
+bool(true)
+bool(false)
+12
+bool(true)
+bool(false)
+13
+bool(true)
+bool(false)
+14
+bool(true)
+bool(false)
+15
+bool(true)
+bool(false)
+16
+bool(true)
+bool(false)
+17
+bool(true)
+bool(false)
+18
+bool(true)
+bool(false)
+19
+bool(true)
+bool(false)
+20
+bool(true)
+bool(false)
+21
+bool(true)
+bool(false)
+22
+bool(true)
+bool(false)
+23
+bool(true)
+bool(false)
+24
+bool(true)
+bool(false)
+25
+bool(true)
+bool(false)
+26
+bool(true)
+bool(false)
+27
+bool(true)
+bool(false)
+28
+bool(true)
+bool(false)
+29
+bool(true)
+bool(false)
+30
+bool(true)
+bool(false)
+31
+bool(true)
+bool(false)
+32
+bool(true)
+bool(false)
+33
+bool(true)
+bool(false)
+34
+bool(true)
+bool(false)
+35
+bool(true)
+bool(false)
+36
+bool(true)
+bool(false)
+37
+bool(true)
+bool(false)
+38
+bool(true)
+bool(false)
+39
+bool(true)
+bool(false)
+40
+bool(true)
+bool(false)
+41
+bool(true)
+bool(false)
+42
+bool(true)
+bool(false)
+43
+bool(true)
+bool(false)
+44
+bool(true)
+bool(false)
+45
+bool(true)
+bool(false)
+46
+bool(true)
+bool(false)
+47
+bool(true)
+bool(false)
+48
+bool(true)
+bool(false)
+49
+bool(true)
+bool(false)
+50
+bool(true)
+bool(false)
+51
+bool(true)
+bool(false)
+52
+bool(true)
+bool(false)
+53
+bool(true)
+bool(false)
+54
+bool(true)
+bool(false)
+55