Git
Threads by month
- ----- 2025 -----
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
September 2010
- 5 participants
- 126 discussions
[Phpmyadmin-git] [SCM] Planet phpMyAdmin branch, master, updated. 9e1b690719088cf93e038ddb4f64407f2e36cacf
by Michal Čihař 14 Sep '10
by Michal Čihař 14 Sep '10
14 Sep '10
The branch, master has been updated
via 9e1b690719088cf93e038ddb4f64407f2e36cacf (commit)
from 028d3dccec71a8d249cb8d53c00da6b13cb371e4 (commit)
- Log -----------------------------------------------------------------
commit 9e1b690719088cf93e038ddb4f64407f2e36cacf
Author: Michal Čihař <mcihar(a)novell.com>
Date: Mon Aug 23 15:38:24 2010 +0200
Include all phpmyadmin related tweets.
-----------------------------------------------------------------------
Summary of changes:
theme/index.html.tmpl | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/theme/index.html.tmpl b/theme/index.html.tmpl
index 8afdecd..b8858c4 100644
--- a/theme/index.html.tmpl
+++ b/theme/index.html.tmpl
@@ -125,7 +125,7 @@ http://www.imblog.info
new TWTR.Widget({
version: 2,
type: 'search',
- search: 'pma-gsoc',
+ search: 'phpMyAdmin',
interval: 6000,
title: 'Developers at phpMyAdmin',
subject: 'PMA GSOC',
hooks/post-receive
--
Planet phpMyAdmin
1
0
[Phpmyadmin-git] [SCM] phpMyAdmin branch, master, updated. RELEASE_3_3_7-10113-g9187f5a
by Marc Delisle 13 Sep '10
by Marc Delisle 13 Sep '10
13 Sep '10
The branch, master has been updated
via 9187f5abe2dec8161ad420f165b307988dceab6a (commit)
from 13b7e75428c88e9c0b43ec613445243124d81662 (commit)
- Log -----------------------------------------------------------------
commit 9187f5abe2dec8161ad420f165b307988dceab6a
Author: Marc Delisle <marc(a)infomarc.info>
Date: Mon Sep 13 13:03:45 2010 -0400
jquery components should be under js/jquery
-----------------------------------------------------------------------
Summary of changes:
js/{ => jquery}/jquery.qtip-1.0.0.min.js | 0
libraries/header_scripts.inc.php | 2 +-
2 files changed, 1 insertions(+), 1 deletions(-)
rename js/{ => jquery}/jquery.qtip-1.0.0.min.js (100%)
diff --git a/js/jquery.qtip-1.0.0.min.js b/js/jquery/jquery.qtip-1.0.0.min.js
similarity index 100%
rename from js/jquery.qtip-1.0.0.min.js
rename to js/jquery/jquery.qtip-1.0.0.min.js
diff --git a/libraries/header_scripts.inc.php b/libraries/header_scripts.inc.php
index 8126dd3..76b0852 100644
--- a/libraries/header_scripts.inc.php
+++ b/libraries/header_scripts.inc.php
@@ -31,7 +31,7 @@ $title = PMA_expandUserString(
$is_superuser = function_exists('PMA_isSuperuser') && PMA_isSuperuser();
$GLOBALS['js_include'][] = 'functions.js';
-$GLOBALS['js_include'][] = 'jquery.qtip-1.0.0.min.js';
+$GLOBALS['js_include'][] = 'jquery/jquery.qtip-1.0.0.min.js';
$params = array('lang' => $GLOBALS['lang']);
if (isset($GLOBALS['db'])) {
$params['db'] = $GLOBALS['db'];
hooks/post-receive
--
phpMyAdmin
1
0
[Phpmyadmin-git] [SCM] phpMyAdmin branch, master, updated. RELEASE_3_3_7-10112-g13b7e75
by Marc Delisle 13 Sep '10
by Marc Delisle 13 Sep '10
13 Sep '10
The branch, master has been updated
via 13b7e75428c88e9c0b43ec613445243124d81662 (commit)
from a4bb5d3e32f24396e7c1e7f6df1125e7c0423bfc (commit)
- Log -----------------------------------------------------------------
commit 13b7e75428c88e9c0b43ec613445243124d81662
Author: Marc Delisle <marc(a)infomarc.info>
Date: Mon Sep 13 12:48:05 2010 -0400
bug #3064963 tabindex wrong for generated inserted rows
-----------------------------------------------------------------------
Summary of changes:
js/tbl_change.js | 14 ++++++++++++++
tbl_change.php | 8 ++++----
2 files changed, 18 insertions(+), 4 deletions(-)
diff --git a/js/tbl_change.js b/js/tbl_change.js
index 52d8432..f9c2d43 100644
--- a/js/tbl_change.js
+++ b/js/tbl_change.js
@@ -424,6 +424,20 @@ $(document).ready(function() {
}
curr_rows++;
}
+ // recompute tabindex for text fields and other controls at footer;
+ // IMO it's not really important to handle the tabindex for
+ // function and Null
+ var tabindex = 0;
+ $('.textfield')
+ .each(function() {
+ tabindex++;
+ $(this).attr('tabindex', tabindex);
+ });
+ $('.control_at_footer')
+ .each(function() {
+ tabindex++;
+ $(this).attr('tabindex', tabindex);
+ });
}
else if( curr_rows > target_rows) {
while(curr_rows > target_rows) {
diff --git a/tbl_change.php b/tbl_change.php
index 3e4d814..54e0d7f 100644
--- a/tbl_change.php
+++ b/tbl_change.php
@@ -497,7 +497,7 @@ foreach ($rows as $row_id => $vrow) {
}
$idindex = ($o_rows * $fields_cnt) + $i + 1;
- $tabindex = (($idindex - 1) * 3) + 1;
+ $tabindex = $idindex;
// The function column
// -------------------
@@ -1019,7 +1019,7 @@ $(function() {
<table border="0" cellpadding="5" cellspacing="0">
<tr>
<td valign="middle" nowrap="nowrap">
- <select name="submit_type" tabindex="<?php echo ($tabindex + $tabindex_for_value + 1); ?>">
+ <select name="submit_type" class="control_at_footer" tabindex="<?php echo ($tabindex + $tabindex_for_value + 1); ?>">
<?php
if (isset($where_clause)) {
?>
@@ -1071,8 +1071,8 @@ if (isset($where_clause)) {
<?php echo PMA_showHint(__('Use TAB key to move from value to value, or CTRL+arrows to move anywhere')); ?>
</td>
<td colspan="3" align="right" valign="middle">
- <input type="submit" value="<?php echo __('Go'); ?>" tabindex="<?php echo ($tabindex + $tabindex_for_value + 6); ?>" id="buttonYes" />
- <input type="reset" value="<?php echo __('Reset'); ?>" tabindex="<?php echo ($tabindex + $tabindex_for_value + 7); ?>" />
+ <input type="submit" class="control_at_footer" value="<?php echo __('Go'); ?>" tabindex="<?php echo ($tabindex + $tabindex_for_value + 6); ?>" id="buttonYes" />
+ <input type="reset" class="control_at_footer" value="<?php echo __('Reset'); ?>" tabindex="<?php echo ($tabindex + $tabindex_for_value + 7); ?>" />
</td>
</tr>
</table>
hooks/post-receive
--
phpMyAdmin
1
0
[Phpmyadmin-git] [SCM] phpMyAdmin branch, master, updated. RELEASE_3_3_7-10111-ga4bb5d3
by Michal Čihař 13 Sep '10
by Michal Čihař 13 Sep '10
13 Sep '10
The branch, master has been updated
via a4bb5d3e32f24396e7c1e7f6df1125e7c0423bfc (commit)
from cbc35644b267ec6c6a086187ee978358fca3f6ef (commit)
- Log -----------------------------------------------------------------
commit a4bb5d3e32f24396e7c1e7f6df1125e7c0423bfc
Author: Michal Čihař <mcihar(a)novell.com>
Date: Mon Sep 13 14:13:01 2010 +0200
Czech translation update.
-----------------------------------------------------------------------
Summary of changes:
po/cs.po | 52 +++++++++++++++++++++++++++++-----------------------
1 files changed, 29 insertions(+), 23 deletions(-)
diff --git a/po/cs.po b/po/cs.po
index fc8ad1a..6a9e283 100644
--- a/po/cs.po
+++ b/po/cs.po
@@ -7,7 +7,7 @@ msgstr ""
"Project-Id-Version: phpMyAdmin 3.4.0-dev\n"
"Report-Msgid-Bugs-To: phpmyadmin-devel(a)lists.sourceforge.net\n"
"POT-Creation-Date: 2010-09-10 12:46-0400\n"
-"PO-Revision-Date: 2010-09-07 10:55+0200\n"
+"PO-Revision-Date: 2010-09-13 14:12+0200\n"
"Last-Translator: Michal Čihař <michal(a)cihar.com>\n"
"Language-Team: czech <cs(a)li.org>\n"
"MIME-Version: 1.0\n"
@@ -646,8 +646,8 @@ msgstr "Sledování není zapnuté."
#: db_structure.php:404 libraries/display_tbl.lib.php:1945
#, php-format
msgid ""
-"This view has at least this number of rows. Please refer to %sdocumentation%"
-"s."
+"This view has at least this number of rows. Please refer to %sdocumentation"
+"%s."
msgstr ""
"Tento pohled má alespoň tolik řádek. Podrobnosti naleznete v %sdokumentaci%s."
@@ -854,8 +854,8 @@ msgstr "Výpis byl uložen do souboru %s."
#: import.php:58
#, php-format
msgid ""
-"You probably tried to upload too large file. Please refer to %sdocumentation%"
-"s for ways to workaround this limit."
+"You probably tried to upload too large file. Please refer to %sdocumentation"
+"%s for ways to workaround this limit."
msgstr ""
"Pravděpodobně jste se pokusili nahrát příliš velký soubor. Přečtěte si "
"prosím %sdokumentaci%s, jak toto omezení obejít."
@@ -1637,8 +1637,8 @@ msgstr "Vítejte v %s"
#: libraries/auth/config.auth.lib.php:106
#, php-format
msgid ""
-"You probably did not create a configuration file. You might want to use the %"
-"1$ssetup script%2$s to create one."
+"You probably did not create a configuration file. You might want to use the "
+"%1$ssetup script%2$s to create one."
msgstr ""
"Pravděpodobná příčina je, že nemáte vytvořený konfigurační soubor. Pro jeho "
"vytvoření by se vám mohl hodit %1$snastavovací skript%2$s."
@@ -4499,8 +4499,8 @@ msgstr ", @TABLE@ bude nahrazen jménem tabulky"
#, php-format
msgid ""
"This value is interpreted using %1$sstrftime%2$s, so you can use time "
-"formatting strings. Additionally the following transformations will happen: %"
-"3$s. Other text will be kept as is. See the %4$sFAQ%5$s for details."
+"formatting strings. Additionally the following transformations will happen: "
+"%3$s. Other text will be kept as is. See the %4$sFAQ%5$s for details."
msgstr ""
"Tato hodnota je interpretována pomocí %1$sstrftime%2$s, takže můžete použít "
"libovolné řetězce pro formátování data a času. Dále budou provedena "
@@ -5340,6 +5340,7 @@ msgid ""
"Include a timestamp of when databases were created, last updated, and last "
"checked"
msgstr ""
+"Vložit čas vytvoření, poslední aktualizace a poslední kontroly databáze"
#: libraries/export/sql.php:65
msgid ""
@@ -5381,11 +5382,11 @@ msgstr "příkazy <code>INSERT IGNORE</code>"
#: libraries/export/sql.php:147
msgid "Function to use when dumping data:"
-msgstr ""
+msgstr "Jakou funkci použít pro vypisování dat:"
#: libraries/export/sql.php:151
msgid "Syntax to use when inserting data:"
-msgstr ""
+msgstr "Jakou syntaxi použít pro vkládání dat:"
#: libraries/export/sql.php:154
msgid ""
@@ -5560,6 +5561,8 @@ msgid ""
"Invalid column (%s) specified! Ensure that columns names are spelled "
"correctly, separated by commas, and not enclosed in quotes."
msgstr ""
+"Zadán chybný název pole (%s)! Ujistěte se, že jsou jména polí zapsána "
+"správně, oddělena čárkami a nejsou uzavřena v uvozovkách."
#: libraries/import/csv.php:179 libraries/import/csv.php:426
#, php-format
@@ -6416,8 +6419,8 @@ msgid ""
"For a list of available transformation options and their MIME type "
"transformations, click on %stransformation descriptions%s"
msgstr ""
-"Pro seznam dostupných parametrů transformací a jejich MIME typů klikněte na %"
-"spopisy transformací%s"
+"Pro seznam dostupných parametrů transformací a jejich MIME typů klikněte na "
+"%spopisy transformací%s"
#: libraries/tbl_properties.inc.php:143
msgid "Transformation options"
@@ -6458,8 +6461,8 @@ msgid ""
"No description is available for this transformation.<br />Please ask the "
"author what %s does."
msgstr ""
-"Pro tuto transformaci není dostupný žádný popis.<br />Zeptejte se autora co %"
-"s dělá."
+"Pro tuto transformaci není dostupný žádný popis.<br />Zeptejte se autora co "
+"%s dělá."
#: libraries/tbl_properties.inc.php:729 server_engines.php:56
#: tbl_operations.php:352
@@ -6984,8 +6987,8 @@ msgid ""
"You can set more settings by modifying config.inc.php, eg. by using %sSetup "
"script%s."
msgstr ""
-"Více věcí můžete nastavit úpravou config.inc.php, např. použitím %"
-"sNastavovacího skriptu%s."
+"Více věcí můžete nastavit úpravou config.inc.php, např. použitím "
+"%sNastavovacího skriptu%s."
#: prefs_manage.php:302
msgid "Save to browser's storage"
@@ -7454,8 +7457,8 @@ msgstr "Odstranit databáze se stejnými jmény jako uživatelé."
msgid ""
"Note: phpMyAdmin gets the users' privileges directly from MySQL's privilege "
"tables. The content of these tables may differ from the privileges the "
-"server uses, if they have been changed manually. In this case, you should %"
-"sreload the privileges%s before you continue."
+"server uses, if they have been changed manually. In this case, you should "
+"%sreload the privileges%s before you continue."
msgstr ""
"Poznámka: phpMyAdmin získává oprávnění přímo z tabulek MySQL. Obsah těchto "
"tabulek se může lišit od oprávnění, která server právě používá, pokud byly "
@@ -8939,8 +8942,9 @@ msgstr ""
"Nastavil jste typ přihlašování [kbd]config[/kbd] a zadal jste uživatelské "
"jméno a heslo pro automatické přihlášení, což není doporučená volba pro "
"produkční servery. Kdokoli kdo zná URL phpMyAdminu může přímo přistoupit k "
-"Vašemu phpMyAdmin panelu. Nastavte [a@?page=servers&mode=edit&id=%1"
-"$d#tab_Server]typ přihlašování[/a] na [kbd]cookie[/kbd] nebo [kbd]http[/kbd]."
+"Vašemu phpMyAdmin panelu. Nastavte [a@?page=servers&mode=edit&id="
+"%1$d#tab_Server]typ přihlašování[/a] na [kbd]cookie[/kbd] nebo [kbd]http[/"
+"kbd]."
#: setup/lib/index.lib.php:259
#, php-format
@@ -9076,10 +9080,10 @@ msgstr ""
"směry"
#: tbl_change.php:1106
-#, fuzzy, php-format
+#, php-format
#| msgid "Restart insertion with %s rows"
msgid "Continue insertion with %s rows"
-msgstr "Začít znovu vkládání s %s řádky"
+msgstr "Pokračovat ve vkládání s %s řádky"
#: tbl_chart.php:56
msgid "Chart generated successfully."
@@ -9158,6 +9162,8 @@ msgid ""
"For compatibility reasons the chart image is segmented by default, select "
"this to draw the whole chart in one image."
msgstr ""
+"Z důvodů kompatibility, je obrázek s grafem rozdělen do několika částí. "
+"Zvolte tento přepínač pro jeho vykreslení v jediném obrázku."
#: tbl_chart.php:166
msgid ""
hooks/post-receive
--
phpMyAdmin
1
0
[Phpmyadmin-git] [SCM] phpMyAdmin branch, master, updated. RELEASE_3_3_7-10110-gcbc3564
by Michal Čihař 13 Sep '10
by Michal Čihař 13 Sep '10
13 Sep '10
The branch, master has been updated
via cbc35644b267ec6c6a086187ee978358fca3f6ef (commit)
via 4e3f255433d67edf4194e272605100d006f737ef (commit)
via 7da0c80608a6596247664c5ec261f94f2e993216 (commit)
via c2236819babc1d41f5d9a29691d0b9b9ab612d0c (commit)
via fab347c3265f14daa29235f3363d5410395c8987 (commit)
via 9aa2cbd50584c50f847cb2d3d5fe87a7a0548ab3 (commit)
via 0cdb3ee3977afb56a1bfde38422f73d5ab1c9b0c (commit)
via cac1b6cf5199691eb6f30c18eed4007e2954b0f1 (commit)
via 702aabad5d7ecce3a867b94c7f27e13ce8b3a304 (commit)
via ff2ad83bd35e5870875bd064533420cec3c78b98 (commit)
via f60079e46c3e2a6c21ff63e0836732ccd94e6457 (commit)
via 74a098f779a2e98b0229e10ad80fe3c1663ae2ba (commit)
via 49307409f972901abc2e08aa6435ce23cf27bf84 (commit)
via b8ed9f004ad22c3ed124c4000a03d532c8afe6a5 (commit)
via 962e4a2bc1a192044c1fabbd374aff016edaf270 (commit)
via c02fa5a0d48d3edf6bf99a6851d0e84d67935c4e (commit)
via 624a1778ded50c90b52b96e16a1723f9317f1a79 (commit)
from 8c5f758e4ad5c2708eabdeae4f1dd81efaddf591 (commit)
- Log -----------------------------------------------------------------
commit cbc35644b267ec6c6a086187ee978358fca3f6ef
Merge: 4e3f255433d67edf4194e272605100d006f737ef 8c5f758e4ad5c2708eabdeae4f1dd81efaddf591
Author: Pootle server <pootle(a)cihar.com>
Date: Mon Sep 13 02:40:32 2010 +0200
Merge remote branch 'origin/master'
commit 4e3f255433d67edf4194e272605100d006f737ef
Author: Burak Yavuz <hitowerdigit(a)hotmail.com>
Date: Sun Sep 12 16:04:58 2010 +0200
Translation update done using Pootle.
commit 7da0c80608a6596247664c5ec261f94f2e993216
Author: Burak Yavuz <hitowerdigit(a)hotmail.com>
Date: Sun Sep 12 16:04:09 2010 +0200
Translation update done using Pootle.
commit c2236819babc1d41f5d9a29691d0b9b9ab612d0c
Author: Burak Yavuz <hitowerdigit(a)hotmail.com>
Date: Sun Sep 12 16:04:01 2010 +0200
Translation update done using Pootle.
commit fab347c3265f14daa29235f3363d5410395c8987
Author: Burak Yavuz <hitowerdigit(a)hotmail.com>
Date: Sun Sep 12 16:03:24 2010 +0200
Translation update done using Pootle.
commit 9aa2cbd50584c50f847cb2d3d5fe87a7a0548ab3
Author: Burak Yavuz <hitowerdigit(a)hotmail.com>
Date: Sun Sep 12 16:02:48 2010 +0200
Translation update done using Pootle.
commit 0cdb3ee3977afb56a1bfde38422f73d5ab1c9b0c
Author: Burak Yavuz <hitowerdigit(a)hotmail.com>
Date: Sun Sep 12 15:38:49 2010 +0200
Translation update done using Pootle.
commit cac1b6cf5199691eb6f30c18eed4007e2954b0f1
Author: Robert Readman <robert_readman(a)hotmail.com>
Date: Sun Sep 12 03:14:22 2010 +0200
Translation update done using Pootle.
commit 702aabad5d7ecce3a867b94c7f27e13ce8b3a304
Merge: ff2ad83bd35e5870875bd064533420cec3c78b98 ae04356ed298c86901fb4948596b8c0c7fe1f449
Author: Pootle server <pootle(a)cihar.com>
Date: Sat Sep 11 18:40:11 2010 +0200
Merge remote branch 'origin/master'
commit ff2ad83bd35e5870875bd064533420cec3c78b98
Author: Domen <dbc334(a)gmail.com>
Date: Sat Sep 11 15:50:53 2010 +0200
Translation update done using Pootle.
commit f60079e46c3e2a6c21ff63e0836732ccd94e6457
Merge: 74a098f779a2e98b0229e10ad80fe3c1663ae2ba e539a03ef938fb5df7950603bc196d2506c2c9b4
Author: Pootle server <pootle(a)cihar.com>
Date: Sat Sep 11 12:40:25 2010 +0200
Merge remote branch 'origin/master'
commit 74a098f779a2e98b0229e10ad80fe3c1663ae2ba
Author: Burak Yavuz <hitowerdigit(a)hotmail.com>
Date: Sat Sep 11 12:36:29 2010 +0200
Translation update done using Pootle.
commit 49307409f972901abc2e08aa6435ce23cf27bf84
Author: Burak Yavuz <hitowerdigit(a)hotmail.com>
Date: Sat Sep 11 12:13:53 2010 +0200
Translation update done using Pootle.
commit b8ed9f004ad22c3ed124c4000a03d532c8afe6a5
Author: Burak Yavuz <hitowerdigit(a)hotmail.com>
Date: Sat Sep 11 12:07:10 2010 +0200
Translation update done using Pootle.
commit 962e4a2bc1a192044c1fabbd374aff016edaf270
Author: Burak Yavuz <hitowerdigit(a)hotmail.com>
Date: Sat Sep 11 11:40:25 2010 +0200
Translation update done using Pootle.
commit c02fa5a0d48d3edf6bf99a6851d0e84d67935c4e
Author: Burak Yavuz <hitowerdigit(a)hotmail.com>
Date: Sat Sep 11 11:38:40 2010 +0200
Translation update done using Pootle.
commit 624a1778ded50c90b52b96e16a1723f9317f1a79
Author: Burak Yavuz <hitowerdigit(a)hotmail.com>
Date: Sat Sep 11 10:59:23 2010 +0200
Translation update done using Pootle.
-----------------------------------------------------------------------
Summary of changes:
po/en_GB.po | 8 ++++----
po/sl.po | 12 ++++++------
po/tr.po | 29 +++++++++++++++--------------
3 files changed, 25 insertions(+), 24 deletions(-)
diff --git a/po/en_GB.po b/po/en_GB.po
index 0c6da42..83ade51 100644
--- a/po/en_GB.po
+++ b/po/en_GB.po
@@ -4,13 +4,13 @@ msgstr ""
"Project-Id-Version: phpMyAdmin 3.4.0-dev\n"
"Report-Msgid-Bugs-To: phpmyadmin-devel(a)lists.sourceforge.net\n"
"POT-Creation-Date: 2010-09-10 12:46-0400\n"
-"PO-Revision-Date: 2010-09-07 19:46+0200\n"
+"PO-Revision-Date: 2010-09-12 03:14+0200\n"
"Last-Translator: Robert Readman <robert_readman(a)hotmail.com>\n"
"Language-Team: english-gb <en_GB(a)li.org>\n"
+"Language: en_GB\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Language: en_GB\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Pootle 2.0.5\n"
@@ -9103,10 +9103,10 @@ msgstr ""
"Use TAB key to move from value to value, or CTRL+arrows to move anywhere"
#: tbl_change.php:1106
-#, fuzzy, php-format
+#, php-format
#| msgid "Restart insertion with %s rows"
msgid "Continue insertion with %s rows"
-msgstr "Restart insertion with %s rows"
+msgstr "Continue insertion with %s rows"
#: tbl_chart.php:56
msgid "Chart generated successfully."
diff --git a/po/sl.po b/po/sl.po
index c435087..76a7432 100644
--- a/po/sl.po
+++ b/po/sl.po
@@ -4,15 +4,15 @@ msgstr ""
"Project-Id-Version: phpMyAdmin 3.4.0-dev\n"
"Report-Msgid-Bugs-To: phpmyadmin-devel(a)lists.sourceforge.net\n"
"POT-Creation-Date: 2010-09-10 12:46-0400\n"
-"PO-Revision-Date: 2010-09-07 18:44+0200\n"
+"PO-Revision-Date: 2010-09-11 15:50+0200\n"
"Last-Translator: Domen <dbc334(a)gmail.com>\n"
"Language-Team: slovenian <sl(a)li.org>\n"
+"Language: sl\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Language: sl\n"
-"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n"
-"%100==4 ? 2 : 3);\n"
+"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || "
+"n%100==4 ? 2 : 3);\n"
"X-Generator: Pootle 2.0.5\n"
#: browse_foreigners.php:36 browse_foreigners.php:57
@@ -9163,10 +9163,10 @@ msgstr ""
"premik kamor koli"
#: tbl_change.php:1106
-#, fuzzy, php-format
+#, php-format
#| msgid "Restart insertion with %s rows"
msgid "Continue insertion with %s rows"
-msgstr "Ponovno začni vstavljanje z %s vrsticami"
+msgstr "Nadaljuj vstavljanje z %s vrsticami"
#: tbl_chart.php:56
msgid "Chart generated successfully."
diff --git a/po/tr.po b/po/tr.po
index 4cd20df..e07dba6 100644
--- a/po/tr.po
+++ b/po/tr.po
@@ -4,13 +4,13 @@ msgstr ""
"Project-Id-Version: phpMyAdmin 3.4.0-dev\n"
"Report-Msgid-Bugs-To: phpmyadmin-devel(a)lists.sourceforge.net\n"
"POT-Creation-Date: 2010-09-10 12:46-0400\n"
-"PO-Revision-Date: 2010-09-08 22:43+0200\n"
+"PO-Revision-Date: 2010-09-12 16:04+0200\n"
"Last-Translator: Burak Yavuz <hitowerdigit(a)hotmail.com>\n"
"Language-Team: turkish <tr(a)li.org>\n"
+"Language: tr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Language: tr\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Pootle 2.0.5\n"
@@ -943,7 +943,7 @@ msgstr "\"DROP DATABASE\" ifadesi etkisizleştirildi."
#: js/messages.php:30 libraries/mult_submits.inc.php:256 sql.php:254
msgid "Do you really want to "
-msgstr "Bunu uygulamak istiyor musunuz: "
+msgstr "Şu komut uygulansın "
#: js/messages.php:31 libraries/mult_submits.inc.php:256 sql.php:239
msgid "You are about to DESTROY a complete database!"
@@ -4409,7 +4409,7 @@ msgstr "Yeniden gir"
#: libraries/display_change_password.lib.php:51
msgid "Password Hashing"
-msgstr "Parola Hesaplanıyor"
+msgstr "Parola Adreslemesi"
#: libraries/display_change_password.lib.php:65
msgid "MySQL 4.0 compatible"
@@ -5925,7 +5925,7 @@ msgstr "Etkin"
#: libraries/relation.lib.php:105
msgid "Display Features"
-msgstr "Özellikleri Göster"
+msgstr "Özellikleri göster"
#: libraries/relation.lib.php:111
msgid "Creation of PDFs"
@@ -5956,16 +5956,16 @@ msgstr "Kullanıcı tercihleri"
#: libraries/relation.lib.php:145
msgid "Quick steps to setup advanced features:"
-msgstr "Gelişmiş özellikleri kurmak için hızlı adımlar:"
+msgstr "Gelişmiş özellikleri ayarlamak için hızlı adımlar:"
#: libraries/relation.lib.php:147
msgid ""
"Create the needed tables with the <code>script/create_tables.sql</code>."
-msgstr "Gerekli tabloları <code>script/create_tables.sql</code> ile oluştur."
+msgstr "Gerekli tabloları <code>script/create_tables.sql</code> ile oluşturun."
#: libraries/relation.lib.php:148
msgid "Create a pma user and give access to these tables."
-msgstr "Pma kullanıcısı oluştur ve bu tablolara erişim ver."
+msgstr "Pma kullanıcısı oluştur ve bu tablolara erişim verin."
#: libraries/relation.lib.php:149
msgid ""
@@ -5973,7 +5973,8 @@ msgid ""
"code>), for example by starting from <code>config.sample.inc.php</code>."
msgstr ""
"(<code>config.inc.php</code>) yapılandırma dosyasında gelişmiş özellikler "
-"etkin, örneğin <code>config.sample.inc.php</code> dosyasından başlayarak."
+"etkinleştirin, örneğin <code>config.sample.inc.php</code> dosyasından "
+"başlayarak."
#: libraries/relation.lib.php:150
msgid "Re-login to phpMyAdmin to load the updated configuration file."
@@ -8744,7 +8745,7 @@ msgid ""
"database will remain unchanged."
msgstr ""
"Hedef veritabanı kaynak veritabanı ile tamamen eşitlenecektir. Kaynak "
-"veritabanı değitirelemeyecektir."
+"veritabanı değiştirilmeden aynen kalacaktır."
#: server_variables.php:34
msgid "Server variables and settings"
@@ -9171,10 +9172,10 @@ msgstr ""
"CTRL+OK TUŞLARI'nı kullanın"
#: tbl_change.php:1106
-#, fuzzy, php-format
+#, php-format
#| msgid "Restart insertion with %s rows"
msgid "Continue insertion with %s rows"
-msgstr "%s satırlı eklemeyi yeniden başlat"
+msgstr "%s satırla eklemeye devam et"
#: tbl_chart.php:56
msgid "Chart generated successfully."
@@ -9586,7 +9587,7 @@ msgstr "Tablonun Başına"
#: tbl_structure.php:645
#, php-format
msgid "After %s"
-msgstr "%s tablosundan sonra"
+msgstr "%s sonrasına"
#: tbl_structure.php:684
#, php-format
@@ -9716,7 +9717,7 @@ msgstr "Hemen aktif et"
#: tbl_tracking.php:662
#, php-format
msgid "Create version %s of %s.%s"
-msgstr "%s.%s için %s sürümü oluştur"
+msgstr "%s sürümünü, %s.%s için oluştur"
#: tbl_tracking.php:666
msgid "Track these data definition statements:"
hooks/post-receive
--
phpMyAdmin
1
0
[Phpmyadmin-git] [SCM] phpMyAdmin localized documentation branch, master, updated. 233bbeda8f86355455d70eb9170731f83ef45165
by Michal Čihař 13 Sep '10
by Michal Čihař 13 Sep '10
13 Sep '10
The branch, master has been updated
via 233bbeda8f86355455d70eb9170731f83ef45165 (commit)
via fbc6e3beae2e43a6950719015cbe5144b0c39c4f (commit)
via ddcb3ba24b5e5ca6709d8375bb7aa60da6ba5e79 (commit)
via 72890f37fad1ff9b86c0cf1eeb41225c06c25f1f (commit)
via 0bc24887d034743330662e4799d03b7370542039 (commit)
via a65c7ef84547f9ef7d2be2c485c5905be76ca42b (commit)
via 6e8bde34ebc8f7c2833dd1a1c7b815e94db29c77 (commit)
via 39639646a53e974a0ae965dd0724a639d0a38f7c (commit)
via b9d57f166d093776b1b9a1cd3cd8f98998a6e3ad (commit)
via ea70e04959765956c0099aaba720099cbaef2dea (commit)
via d0322b6a01ba3258938d47096fbfdadfe1e12ed5 (commit)
via ca921b3795653e58da9550238c839dc404364584 (commit)
via 4f0005bdfa3417406f80af1d0b90de39ecd2d967 (commit)
via 43c5fa0383ae7d0a6d297ec340fc89bec98689fd (commit)
via 998d4af46be17d9ac4cbd8334baaca6e54f10107 (commit)
via 72c19cbf0f81f94f8406a703995f1bfa3fb7cac9 (commit)
via b1c9e2d035ea09f4f0593d69103d7be48a5819be (commit)
via 8591c025ab1c80922bc8d9fe58679b0d113e4999 (commit)
via 3029aa954e654ed268e104e7f33a899f6bc23ee8 (commit)
via f8d79443f3330db91eb15a71aa870f8be54de666 (commit)
via 3542699cb1eddd87b5236724b038ee8637b15591 (commit)
via e9b1e133300fe0d4fbee8b56ef03d9d46160d977 (commit)
via 795d19d6ebb027abbcaa14a72b5a69bf4acefc9c (commit)
via 0fe8f663934db85ce7a47f8000039724caf77af3 (commit)
via 6f7a26a1275cee7ce2e091f60a2ea74859b72197 (commit)
via 1b720a9512aa59beb224c10f30a92089bce9e891 (commit)
via 614fbc11828575d2195d56198a6697d8591e0d50 (commit)
via 9974ac2823e19e3bb4b9afb876e3cb49278eebbd (commit)
via faa3c2908e67f56442aa9c4bede0610e1e4d8d2e (commit)
via a2e1dbb563c29f50681366bd1a0301961331196a (commit)
via 61696a86b593569612dc5b746ecd67b3226fd8ca (commit)
via 3c863b7fb4aa66d91b5a82e91053db81efcf79ec (commit)
via ae76643ab40a8a6fd48f07abb8b4aaab1bc8d7ec (commit)
via ecddfbd616319434b517e38d38309daaf6206560 (commit)
from 2f9c367a74b99ad6a77af141f523a973e473b600 (commit)
- Log -----------------------------------------------------------------
commit 233bbeda8f86355455d70eb9170731f83ef45165
Author: Michal Čihař <mcihar(a)novell.com>
Date: Mon Sep 13 14:05:49 2010 +0200
Regenerate translated docs.
commit fbc6e3beae2e43a6950719015cbe5144b0c39c4f
Author: Domen <dbc334(a)gmail.com>
Date: Sat Sep 11 16:21:10 2010 +0200
Translation update done using Pootle.
commit ddcb3ba24b5e5ca6709d8375bb7aa60da6ba5e79
Author: Domen <dbc334(a)gmail.com>
Date: Sat Sep 11 16:20:52 2010 +0200
Translation update done using Pootle.
commit 72890f37fad1ff9b86c0cf1eeb41225c06c25f1f
Author: Domen <dbc334(a)gmail.com>
Date: Sat Sep 11 16:20:04 2010 +0200
Translation update done using Pootle.
commit 0bc24887d034743330662e4799d03b7370542039
Author: Domen <dbc334(a)gmail.com>
Date: Sat Sep 11 16:17:11 2010 +0200
Translation update done using Pootle.
commit a65c7ef84547f9ef7d2be2c485c5905be76ca42b
Author: Domen <dbc334(a)gmail.com>
Date: Sat Sep 11 16:15:19 2010 +0200
Translation update done using Pootle.
commit 6e8bde34ebc8f7c2833dd1a1c7b815e94db29c77
Author: Domen <dbc334(a)gmail.com>
Date: Sat Sep 11 16:15:07 2010 +0200
Translation update done using Pootle.
commit 39639646a53e974a0ae965dd0724a639d0a38f7c
Author: Domen <dbc334(a)gmail.com>
Date: Sat Sep 11 16:14:51 2010 +0200
Translation update done using Pootle.
commit b9d57f166d093776b1b9a1cd3cd8f98998a6e3ad
Author: Domen <dbc334(a)gmail.com>
Date: Sat Sep 11 16:14:27 2010 +0200
Translation update done using Pootle.
commit ea70e04959765956c0099aaba720099cbaef2dea
Author: Domen <dbc334(a)gmail.com>
Date: Sat Sep 11 16:14:17 2010 +0200
Translation update done using Pootle.
commit d0322b6a01ba3258938d47096fbfdadfe1e12ed5
Author: Domen <dbc334(a)gmail.com>
Date: Sat Sep 11 16:14:07 2010 +0200
Translation update done using Pootle.
commit ca921b3795653e58da9550238c839dc404364584
Author: Domen <dbc334(a)gmail.com>
Date: Sat Sep 11 16:13:51 2010 +0200
Translation update done using Pootle.
commit 4f0005bdfa3417406f80af1d0b90de39ecd2d967
Author: Domen <dbc334(a)gmail.com>
Date: Sat Sep 11 16:13:44 2010 +0200
Translation update done using Pootle.
commit 43c5fa0383ae7d0a6d297ec340fc89bec98689fd
Author: Domen <dbc334(a)gmail.com>
Date: Sat Sep 11 16:13:38 2010 +0200
Translation update done using Pootle.
commit 998d4af46be17d9ac4cbd8334baaca6e54f10107
Author: Domen <dbc334(a)gmail.com>
Date: Sat Sep 11 16:13:32 2010 +0200
Translation update done using Pootle.
commit 72c19cbf0f81f94f8406a703995f1bfa3fb7cac9
Author: Domen <dbc334(a)gmail.com>
Date: Sat Sep 11 16:13:09 2010 +0200
Translation update done using Pootle.
commit b1c9e2d035ea09f4f0593d69103d7be48a5819be
Author: Domen <dbc334(a)gmail.com>
Date: Sat Sep 11 16:13:01 2010 +0200
Translation update done using Pootle.
commit 8591c025ab1c80922bc8d9fe58679b0d113e4999
Author: Domen <dbc334(a)gmail.com>
Date: Sat Sep 11 16:12:52 2010 +0200
Translation update done using Pootle.
commit 3029aa954e654ed268e104e7f33a899f6bc23ee8
Author: Domen <dbc334(a)gmail.com>
Date: Sat Sep 11 16:12:42 2010 +0200
Translation update done using Pootle.
commit f8d79443f3330db91eb15a71aa870f8be54de666
Author: Domen <dbc334(a)gmail.com>
Date: Sat Sep 11 16:08:35 2010 +0200
Translation update done using Pootle.
commit 3542699cb1eddd87b5236724b038ee8637b15591
Author: Domen <dbc334(a)gmail.com>
Date: Sat Sep 11 16:08:06 2010 +0200
Translation update done using Pootle.
commit e9b1e133300fe0d4fbee8b56ef03d9d46160d977
Author: Domen <dbc334(a)gmail.com>
Date: Sat Sep 11 16:07:54 2010 +0200
Translation update done using Pootle.
commit 795d19d6ebb027abbcaa14a72b5a69bf4acefc9c
Author: Domen <dbc334(a)gmail.com>
Date: Sat Sep 11 16:05:05 2010 +0200
Translation update done using Pootle.
commit 0fe8f663934db85ce7a47f8000039724caf77af3
Author: Domen <dbc334(a)gmail.com>
Date: Sat Sep 11 16:03:05 2010 +0200
Translation update done using Pootle.
commit 6f7a26a1275cee7ce2e091f60a2ea74859b72197
Author: Domen <dbc334(a)gmail.com>
Date: Sat Sep 11 16:01:53 2010 +0200
Translation update done using Pootle.
commit 1b720a9512aa59beb224c10f30a92089bce9e891
Author: Domen <dbc334(a)gmail.com>
Date: Sat Sep 11 16:01:26 2010 +0200
Translation update done using Pootle.
commit 614fbc11828575d2195d56198a6697d8591e0d50
Author: Domen <dbc334(a)gmail.com>
Date: Sat Sep 11 16:00:50 2010 +0200
Translation update done using Pootle.
commit 9974ac2823e19e3bb4b9afb876e3cb49278eebbd
Author: Domen <dbc334(a)gmail.com>
Date: Sat Sep 11 16:00:37 2010 +0200
Translation update done using Pootle.
commit faa3c2908e67f56442aa9c4bede0610e1e4d8d2e
Author: Domen <dbc334(a)gmail.com>
Date: Sat Sep 11 16:00:29 2010 +0200
Translation update done using Pootle.
commit a2e1dbb563c29f50681366bd1a0301961331196a
Author: Domen <dbc334(a)gmail.com>
Date: Sat Sep 11 15:58:41 2010 +0200
Translation update done using Pootle.
commit 61696a86b593569612dc5b746ecd67b3226fd8ca
Author: Domen <dbc334(a)gmail.com>
Date: Sat Sep 11 15:58:05 2010 +0200
Translation update done using Pootle.
commit 3c863b7fb4aa66d91b5a82e91053db81efcf79ec
Author: Domen <dbc334(a)gmail.com>
Date: Sat Sep 11 15:55:54 2010 +0200
Translation update done using Pootle.
commit ae76643ab40a8a6fd48f07abb8b4aaab1bc8d7ec
Author: Domen <dbc334(a)gmail.com>
Date: Sat Sep 11 15:55:11 2010 +0200
Translation update done using Pootle.
commit ecddfbd616319434b517e38d38309daaf6206560
Author: Domen <dbc334(a)gmail.com>
Date: Sat Sep 11 15:53:22 2010 +0200
Translation update done using Pootle.
-----------------------------------------------------------------------
Summary of changes:
output/{en_GB => sl}/INSTALL | 4 +-
output/{en_GB => sl}/README | 54 +++++++++++-----------
output/{it => sl}/TODO | 4 +-
output/sl/index.html | 3 +
po/sl.po | 100 +++++++++++++++++++++++++++---------------
5 files changed, 98 insertions(+), 67 deletions(-)
copy output/{en_GB => sl}/INSTALL (60%)
copy output/{en_GB => sl}/README (64%)
copy output/{it => sl}/TODO (73%)
diff --git a/output/en_GB/INSTALL b/output/sl/INSTALL
similarity index 60%
copy from output/en_GB/INSTALL
copy to output/sl/INSTALL
index 56c8948..fbc6613 100644
--- a/output/en_GB/INSTALL
+++ b/output/sl/INSTALL
@@ -1,5 +1,5 @@
-phpMyAdmin - Installation
--------------------------
+phpMyAdmin - Namestitev
+-----------------------
Please have a look to the Documentation.txt or
Documentation.html files.
diff --git a/output/en_GB/README b/output/sl/README
similarity index 64%
copy from output/en_GB/README
copy to output/sl/README
index 62569da..a9bcaab 100644
--- a/output/en_GB/README
+++ b/output/sl/README
@@ -1,5 +1,5 @@
-phpMyAdmin - Readme
-===================
+phpMyAdmin - Beri me
+====================
A set of PHP-scripts to manage MySQL over the web.
@@ -34,46 +34,46 @@ You should have received a copy of the GNU General Public License along with
this program; if not, write to the Free Software Foundation, Inc., 51
Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-Requirements
-~~~~~~~~~~~~
+Zahteve
+~~~~~~~
-* PHP 5.2 or later
-* MySQL 5.0 or later
-* a web-browser (doh!)
+* PHP 5.2 ali novejši
+* MySQL 5.0 ali novejši
+* spletni brskalnik (očitno!)
-Summary
-~~~~~~~
+Povzetek
+~~~~~~~~
phpMyAdmin is intended to handle the administration of MySQL over the web.
For a summary of features, please see the Documentation.txt/.html file.
-Download
-~~~~~~~~
+Prenesi
+~~~~~~~
-You can get the newest version at http://www.phpmyadmin.net/.
+Najnovejšo različico lahko dobite na http://www.phpmyadmin.net/.
-More Information
-~~~~~~~~~~~~~~~~
+Več informacij
+~~~~~~~~~~~~~~~
-Please see the Documentation.txt/.html file.
+Prosimo, oglejte si datoteko Documentation.txt/.html.
-Support
+Podpora
~~~~~~~
-See reference about support forums under http://www.phpmyadmin.net/
+Oglejte si sklice o podpornih forumih na http://www.phpmyadmin.net/
-Enjoy!
-~~~~~~
+Uživajte!
+~~~~~~~~~~
-The phpMyAdmin Devel team
+Skupina razvijalcev phpMyAdmin
-PS:
- Please, don't send us e-mails with question like "How do I compile
- PHP with MySQL-support". We just don't have the time to be your
- free helpdesk.
- Please send your questions to the appropriate mailing-lists / forums.
- Before contacting us, please read the Documentation.html (esp. the
- FAQ part).
+Pripis:
+ Prosimo, ne pošiljajte nam e-pošt z vprašanji, kot je "Kako prevedem
+ PHP s podporo MySQL". Preprosto nimamo časa, da bi bili vaša
+ brezplačna pomoč uporabnikom.
+ Prosimo, naslovite vaša vprašanja na primerne poštne sezname / forume.
+ Preden stopite v stik z nami, prosimo, preberite Documentation.html
+ (še posebej del FAQ).
diff --git a/output/it/TODO b/output/sl/TODO
similarity index 73%
copy from output/it/TODO
copy to output/sl/TODO
index 7e96527..81f156b 100644
--- a/output/it/TODO
+++ b/output/sl/TODO
@@ -1,5 +1,5 @@
-phpMyAdmin - Todo
-=================
+phpMyAdmin - Seznam opravil
+===========================
We are currently using the Sourceforge Tracker as Todo list:
diff --git a/output/sl/index.html b/output/sl/index.html
index d711032..690dbf9 100644
--- a/output/sl/index.html
+++ b/output/sl/index.html
@@ -10,6 +10,9 @@
<h1>phpMyAdmin Slovenian Documentation</h1>
<p>Documents translated to Slovenian:</p>
<ul>
+<li><a href="INSTALL">INSTALL</a></li>
+<li><a href="README">README</a></li>
+<li><a href="TODO">TODO</a></li>
<li><a href="translators.html">Prevajalci</a></li>
</ul>
</body>
diff --git a/po/sl.po b/po/sl.po
index 0b26b9a..cd1dfba 100644
--- a/po/sl.po
+++ b/po/sl.po
@@ -8,15 +8,15 @@ msgstr ""
"Project-Id-Version: phpMyAdmin documentation VERSION\n"
"Report-Msgid-Bugs-To: phpmyadmin-devel(a)lists.sourceforge.net\n"
"POT-Creation-Date: 2010-09-08 13:44+0300\n"
-"PO-Revision-Date: 2010-08-29 12:09+0200\n"
+"PO-Revision-Date: 2010-09-11 16:21+0200\n"
"Last-Translator: Domen <dbc334(a)gmail.com>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
"Language: sl\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n"
-"%100==4 ? 2 : 3);\n"
+"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || "
+"n%100==4 ? 2 : 3);\n"
"X-Generator: Pootle 2.0.5\n"
#. type: Content of: <html><head><title>
@@ -180,6 +180,8 @@ msgid ""
"You need GD2 support in PHP to display inline thumbnails of JPEGs (""
"image/jpeg: inline") with their original aspect ratio"
msgstr ""
+"Za prikaz sličic JPEG v vrstici ("image/jpeg: inline") z njihovim "
+"izvirnim razmerjem potrebujete v PHP podporo GD2."
#. type: Content of: <html><body><div><ul><li><ul><li>
#: ../phpmyadmin/Documentation.html:74
@@ -190,6 +192,11 @@ msgid ""
"<b>required</b> for 64–bit machines. Not using mcrypt will cause "
"phpMyAdmin to load pages significantly slower."
msgstr ""
+"Ko uporabljate <a href=\"#authentication_modes\">način overitve</a> "
+""cookie", je razširitev <a "
+"href=\"http://www.php.net/mcrypt\"><tt>mcrypt</tt></a> močno proporočljiva za "
+"večino uporabnikov in <b>potrebna</b> za 64–bitne naprave. Brez "
+"uporabe mcrypt bo phpMyAdmin nalagal strani občutno počasneje."
#. type: Content of: <html><body><div><ul><li><ul><li>
#: ../phpmyadmin/Documentation.html:81
@@ -197,6 +204,8 @@ msgid ""
"To support upload progress bars, see <a href=\"#faq2_9\"> <abbr title="
"\"Frequently Asked Questions\">FAQ</abbr> 2.9</a>."
msgstr ""
+"Za podporo vrstice napredka pri nalaganju si oglejte <a href=\"#faq2_9\"> "
+"<abbr title=\"Frequently Asked Questions\">FAQ</abbr> 2.9</a>."
#. type: Content of: <html><body><div><ul><li><ul><li>
#: ../phpmyadmin/Documentation.html:83
@@ -230,6 +239,11 @@ msgid ""
"MySQL user who can read/write only the desired database. It's up to you to "
"look up the appropriate part in the MySQL manual."
msgstr ""
+"phpMyAdmin lahko upravlja s celotnim strežnikom MySQL (potrebuje super-"
+"uporabnika), kakor tudi s posamezno zbirko podatkov. Za izvedbo slednjega "
+"potrebujete ustrezno nastavljenega uporabnika MySQL, ki lahko bere/piše samo "
+"v želeno zbirko podatkov. Na vas je, da poiščete ustrezni del v priročniku "
+"MySQL."
#. type: Content of: <html><body><div><h3>
#: ../phpmyadmin/Documentation.html:101
@@ -391,7 +405,7 @@ msgstr ""
#. type: Content of: <html><body><div><h4>
#: ../phpmyadmin/Documentation.html:149
msgid "A word about users:"
-msgstr ""
+msgstr "Beseda o uporabnikih:"
#. type: Content of: <html><body><div><p>
#: ../phpmyadmin/Documentation.html:150
@@ -412,36 +426,41 @@ msgid ""
"support (<tt>--with-bz2</tt>). Proper support may also need changes in "
"<tt>php.ini</tt>."
msgstr ""
+"<sup>1)</sup> phpMyAdmin lahko stisne (v formate Zip, GZip -RFC 1952- ali "
+"Bzip2) izpise in izvoze <abbr title=\"comma separated values\">CSV</abbr>, če "
+"uporabljate PHP s podporo Zlib (<tt>--with-zlib</tt>) in/ali podporo Bzip2 "
+"(<tt>--with-bz2</tt>). Primerna podpora morda zahteva tudi spremembe v "
+"<tt>php.ini</tt>."
#. type: Content of: <html><body><div><h2>
#: ../phpmyadmin/Documentation.html:165
msgid "Installation"
-msgstr ""
+msgstr "Namestitev"
#. type: Content of: <html><body><div><ol><li>
#: ../phpmyadmin/Documentation.html:167
msgid "<a href=\"#quick_install\">Quick Install</a>"
-msgstr ""
+msgstr "<a href=\"#quick_install\">Hitra namestitev</a>"
#. type: Content of: <html><body><div><ol><li>
#: ../phpmyadmin/Documentation.html:168
msgid "<a href=\"#setup_script\">Setup script usage</a>"
-msgstr ""
+msgstr "<a href=\"#setup_script\">Uporaba namestitvenega skripta</a>"
#. type: Content of: <html><body><div><ol><li>
#: ../phpmyadmin/Documentation.html:169
msgid "<a href=\"#linked-tables\">phpMyAdmin configuration storage</a>"
-msgstr ""
+msgstr "<a href=\"#linked-tables\">Hramba konfiguracije phpMyAdmin</a>"
#. type: Content of: <html><body><div><ol><li>
#: ../phpmyadmin/Documentation.html:170
msgid "<a href=\"#upgrading\">Upgrading from an older version</a>"
-msgstr ""
+msgstr "<a href=\"#upgrading\">Nadgrajevanje starejše različice</a>"
#. type: Content of: <html><body><div><ol><li>
#: ../phpmyadmin/Documentation.html:171
msgid "<a href=\"#authentication_modes\">Using authentication modes</a>"
-msgstr ""
+msgstr "<a href=\"#authentication_modes\">Uporaba načinov overitve</a>"
#. type: Content of: <html><body><div><p>
#: ../phpmyadmin/Documentation.html:175
@@ -451,11 +470,15 @@ msgid ""
"the MySQL databases properly. phpMyAdmin's "Privileges" page can "
"be used for this."
msgstr ""
+"phpMyAdmin ne uporablja posebnih varnostnih metod na strežniku zbirke "
+"podatkov MySQL. Še vedno ostaja delo sistemskega administratorja, da "
+"pravilno dodeli dovoljenja zbirkam podatkov MySQL. Za to se lahko uporabi "
+"tudi stran "Privilegiji" v phpMyAdminu."
#. type: Content of: <html><body><div><p>
#: ../phpmyadmin/Documentation.html:182
msgid "Warning for <acronym title=\"Apple Macintosh\">Mac</acronym> users:"
-msgstr ""
+msgstr "Opozorilo za uporabnike <acronym title=\"Apple Macintosh\">Mac</acronym>:"
#. type: Content of: <html><body><div><p>
#: ../phpmyadmin/Documentation.html:183
@@ -478,7 +501,7 @@ msgstr ""
#. type: Content of: <html><body><div><h3>
#: ../phpmyadmin/Documentation.html:192
msgid "Quick Install"
-msgstr ""
+msgstr "Hitra namestitev"
#. type: Content of: <html><body><div><ol><li>
#: ../phpmyadmin/Documentation.html:193
@@ -11564,9 +11587,9 @@ msgstr "-->"
#. type: Title -
#: ../phpmyadmin/INSTALL:2
-#, fuzzy, no-wrap
+#, no-wrap
msgid "phpMyAdmin - Installation\n"
-msgstr "Dokumentacija phpMyAdmin"
+msgstr "phpMyAdmin - Namestitev\n"
#. type: Plain text
#: ../phpmyadmin/INSTALL:6
@@ -11578,9 +11601,9 @@ msgstr ""
#. type: Title =
#: ../phpmyadmin/TODO:2
-#, fuzzy, no-wrap
+#, no-wrap
msgid "phpMyAdmin - Todo\n"
-msgstr "Domača stran phpMyAdmin"
+msgstr "phpMyAdmin - Seznam opravil\n"
#. type: Plain text
#: ../phpmyadmin/TODO:5
@@ -11600,9 +11623,9 @@ msgstr ""
#. type: Title =
#: ../phpmyadmin/README:2
-#, fuzzy, no-wrap
+#, no-wrap
msgid "phpMyAdmin - Readme\n"
-msgstr "Domača stran phpMyAdmin"
+msgstr "phpMyAdmin - Beri me\n"
#. type: Plain text
#: ../phpmyadmin/README:5
@@ -11640,31 +11663,30 @@ msgstr ""
#. type: Title ~
#: ../phpmyadmin/README:38
-#, fuzzy, no-wrap
+#, no-wrap
msgid "Requirements\n"
-msgstr "Zahteve"
+msgstr "Zahteve\n"
#. type: Plain text
#: ../phpmyadmin/README:41
msgid "PHP 5.2 or later"
-msgstr ""
+msgstr "PHP 5.2 ali novejši"
#. type: Plain text
#: ../phpmyadmin/README:42
-#, fuzzy
msgid "MySQL 5.0 or later"
-msgstr "Združljivo z MySQL 4.0"
+msgstr "MySQL 5.0 ali novejši"
#. type: Plain text
#: ../phpmyadmin/README:43
msgid "a web-browser (doh!)"
-msgstr ""
+msgstr "spletni brskalnik (očitno!)"
#. type: Title ~
#: ../phpmyadmin/README:45
#, no-wrap
msgid "Summary\n"
-msgstr ""
+msgstr "Povzetek\n"
#. type: Plain text
#: ../phpmyadmin/README:49
@@ -11675,48 +11697,47 @@ msgstr ""
#. type: Title ~
#: ../phpmyadmin/README:51
-#, fuzzy, no-wrap
+#, no-wrap
msgid "Download\n"
-msgstr "Prenesi"
+msgstr "Prenesi\n"
#. type: Plain text
#: ../phpmyadmin/README:54
msgid "You can get the newest version at http://www.phpmyadmin.net/."
-msgstr ""
+msgstr "Najnovejšo različico lahko dobite na http://www.phpmyadmin.net/."
#. type: Title ~
#: ../phpmyadmin/README:56
-#, fuzzy, no-wrap
+#, no-wrap
msgid "More Information\n"
-msgstr "Podatki"
+msgstr "Več informacij\n"
#. type: Plain text
#: ../phpmyadmin/README:59
msgid "Please see the Documentation.txt/.html file."
-msgstr ""
+msgstr "Prosimo, oglejte si datoteko Documentation.txt/.html."
#. type: Title ~
#: ../phpmyadmin/README:61
#, no-wrap
msgid "Support\n"
-msgstr ""
+msgstr "Podpora\n"
#. type: Plain text
#: ../phpmyadmin/README:64
msgid "See reference about support forums under http://www.phpmyadmin.net/"
-msgstr ""
+msgstr "Oglejte si sklice o podpornih forumih na http://www.phpmyadmin.net/"
#. type: Title ~
#: ../phpmyadmin/README:67
#, no-wrap
msgid "Enjoy!\n"
-msgstr ""
+msgstr "Uživajte!\n"
#. type: Plain text
#: ../phpmyadmin/README:70
-#, fuzzy
msgid "The phpMyAdmin Devel team"
-msgstr "Nastavitve za razvijalce phpMyAdmin"
+msgstr "Skupina razvijalcev phpMyAdmin"
#. type: Plain text
#: ../phpmyadmin/README:79
@@ -11730,6 +11751,13 @@ msgid ""
" Before contacting us, please read the Documentation.html (esp. the\n"
" FAQ part).\n"
msgstr ""
+"Pripis: \n"
+" Prosimo, ne pošiljajte nam e-pošt z vprašanji, kot je \"Kako prevedem\n"
+" PHP s podporo MySQL\". Preprosto nimamo časa, da bi bili vaša\n"
+" brezplačna pomoč uporabnikom.\n"
+" Prosimo, naslovite vaša vprašanja na primerne poštne sezname / forume.\n"
+" Preden stopite v stik z nami, prosimo, preberite Documentation.html\n"
+" (še posebej del FAQ).\n"
#~ msgid "Documentation version:"
#~ msgstr "Različica dokumentacije:"
hooks/post-receive
--
phpMyAdmin localized documentation
1
0
[Phpmyadmin-git] [SCM] phpMyAdmin branch, master, updated. RELEASE_3_3_7-10093-g8c5f758
by Marc Delisle 12 Sep '10
by Marc Delisle 12 Sep '10
12 Sep '10
The branch, master has been updated
via 8c5f758e4ad5c2708eabdeae4f1dd81efaddf591 (commit)
from ae04356ed298c86901fb4948596b8c0c7fe1f449 (commit)
- Log -----------------------------------------------------------------
commit 8c5f758e4ad5c2708eabdeae4f1dd81efaddf591
Author: Marc Delisle <marc(a)infomarc.info>
Date: Sun Sep 12 18:58:38 2010 -0400
bug #3057481 Unchecking ignore does not work for duplicated insert rows
-----------------------------------------------------------------------
Summary of changes:
js/tbl_change.js | 47 ++++++++++++++++++++++++++++++++++++++++++-----
tbl_change.php | 29 ++++++++++++++++-------------
2 files changed, 58 insertions(+), 18 deletions(-)
diff --git a/js/tbl_change.js b/js/tbl_change.js
index 4a4e444..52d8432 100644
--- a/js/tbl_change.js
+++ b/js/tbl_change.js
@@ -222,8 +222,6 @@ function Validator(urlField, multi_edit,theType){
}
}
}
-
- dt.className="";
}
/* End of datetime validation*/
@@ -261,6 +259,20 @@ function unNullify(urlField, multi_edit)
$(document).ready(function() {
/**
+ * Handles all current checkboxes for Null
+ *
+ */
+ $('.checkbox_null').bind('click', function(e) {
+ nullify(
+ // use hidden fields populated by tbl_change.php
+ $(this).siblings('.nullify_code').val(),
+ $(this).closest('tr').find('input:hidden').first().val(),
+ $(this).siblings('.hashed_field').val(),
+ $(this).siblings('.multi_edit').val()
+ );
+ });
+
+ /**
* Submission of data to be inserted into table
*
* @uses PMA_ajaxShowMessage()
@@ -302,7 +314,7 @@ $(document).ready(function() {
}) // end submission of data to be inserted into table
/**
- * Restart Insertion form
+ * Continue Insertion form
*/
$("#insert_rows").live('change', function(event) {
event.preventDefault();
@@ -352,8 +364,33 @@ $(document).ready(function() {
/** generate the new name i.e. funcs[multi_edit][11][foobarbaz] */
var new_name = name_parts[0] + '[' + new_row_index + ']' + name_parts[1];
+ var hashed_field = name_parts[1].match(/\[(.+)\]/)[1];
$(this).attr('name', new_name);
- $(this).attr('value', '');
+
+ $(this).filter('.textfield')
+ .attr('value', '')
+ .unbind('change')
+ .attr('onchange', null)
+ .bind('change', function(e) {
+ Validator(
+ hashed_field,
+ new_row_index,
+ $(this).closest('tr').find('span.column_type').html()
+ );
+ })
+ .end();
+
+ $(this).filter('.checkbox_null')
+ .bind('click', function(e) {
+ nullify(
+ $(this).siblings('.nullify_code').val(),
+ $(this).closest('tr').find('input:hidden').first().val(),
+ hashed_field,
+ '[multi_edit][' + new_row_index + ']'
+ );
+ })
+ .end();
+
});
//Insert/Clone the ignore checkboxes
@@ -378,7 +415,7 @@ $(document).ready(function() {
$(last_checkbox)
.clone()
- .attr({'id':new_name, 'name': new_name})
+ .attr({'id':new_name, 'name': new_name, 'checked': true})
.add('label[for^=insert_ignore]:last')
.clone()
.attr('for', new_name)
diff --git a/tbl_change.php b/tbl_change.php
index 6d2e957..3e4d814 100644
--- a/tbl_change.php
+++ b/tbl_change.php
@@ -431,8 +431,8 @@ foreach ($rows as $row_id => $vrow) {
<input type="hidden" name="fields_name<?php echo $field_name_appendix; ?>" value="<?php echo $field['Field_html']; ?>"/>
</td>
<?php if ($cfg['ShowFieldTypesInDataEditView']) { ?>
- <td align="center"<?php echo $field['wrap']; ?>>
- <?php echo $field['pma_type']; ?>
+ <td align="center"<?php echo $field['wrap']; ?>><span class="column_type">
+ <?php echo $field['pma_type']; ?></span>
</td>
<?php } //End if
@@ -614,32 +614,35 @@ foreach ($rows as $row_id => $vrow) {
}
echo ' />' . "\n";
- echo ' <input type="checkbox" tabindex="' . ($tabindex + $tabindex_for_null) . '"'
+ echo ' <input type="checkbox" class="checkbox_null" tabindex="' . ($tabindex + $tabindex_for_null) . '"'
. ' name="fields_null' . $field_name_appendix . '"';
if ($real_null_value && !$field['first_timestamp']) {
echo ' checked="checked"';
}
- echo ' id="field_' . ($idindex) . '_2"';
- $onclick = ' onclick="if (this.checked) {nullify(';
+ echo ' id="field_' . ($idindex) . '_2" />';
+
+ // nullify_code is needed by the js nullify() function
if (strstr($field['True_Type'], 'enum')) {
if (strlen($field['Type']) > 20) {
- $onclick .= '1, ';
+ $nullify_code = '1';
} else {
- $onclick .= '2, ';
+ $nullify_code = '2';
}
} elseif (strstr($field['True_Type'], 'set')) {
- $onclick .= '3, ';
+ $nullify_code = '3';
} elseif ($foreigners && isset($foreigners[$field['Field']]) && $foreignData['foreign_link'] == false) {
// foreign key in a drop-down
- $onclick .= '4, ';
+ $nullify_code = '4';
} elseif ($foreigners && isset($foreigners[$field['Field']]) && $foreignData['foreign_link'] == true) {
// foreign key with a browsing icon
- $onclick .= '6, ';
+ $nullify_code = '6';
} else {
- $onclick .= '5, ';
+ $nullify_code = '5';
}
- $onclick .= '\'' . PMA_escapeJsString($field['Field_html']) . '\', \'' . $field['Field_md5'] . '\', \'' . PMA_escapeJsString($vkey) . '\'); this.checked = true}; return true" />' . "\n";
- echo $onclick;
+ // to be able to generate calls to nullify() in jQuery
+ echo '<input type="hidden" class="nullify_code" name="nullify_code' . $field_name_appendix . '" value="' . $nullify_code . '" />';
+ echo '<input type="hidden" class="hashed_field" name="hashed_field' . $field_name_appendix . '" value="' . $field['Field_md5'] . '" />';
+ echo '<input type="hidden" class="multi_edit" name="multi_edit' . $field_name_appendix . '" value="' . PMA_escapeJsString($vkey) . '" />';
}
echo ' </td>' . "\n";
hooks/post-receive
--
phpMyAdmin
1
0
[Phpmyadmin-git] [SCM] phpMyAdmin branch, master, updated. RELEASE_3_3_7-10092-gae04356
by Dieter Adriaenssens 11 Sep '10
by Dieter Adriaenssens 11 Sep '10
11 Sep '10
The branch, master has been updated
via ae04356ed298c86901fb4948596b8c0c7fe1f449 (commit)
via adaa35a87feeaf079d4178bb471073e0e19a75b6 (commit)
from e539a03ef938fb5df7950603bc196d2506c2c9b4 (commit)
- Log -----------------------------------------------------------------
commit ae04356ed298c86901fb4948596b8c0c7fe1f449
Merge: e539a03ef938fb5df7950603bc196d2506c2c9b4 adaa35a87feeaf079d4178bb471073e0e19a75b6
Author: Dieter Adriaenssens <ruleant(a)users.sourceforge.net>
Date: Sat Sep 11 16:34:16 2010 +0200
Merge branch 'QA_3_3'
-----------------------------------------------------------------------
Summary of changes:
ChangeLog | 1 +
libraries/PHPExcel/PHPExcel.php | 4 +-
libraries/PHPExcel/PHPExcel/Autoloader.php | 2 +-
.../PHPExcel/PHPExcel/CachedObjectStorage/APC.php | 45 +++-
.../PHPExcel/CachedObjectStorage/CacheBase.php | 35 ++-
.../PHPExcel/CachedObjectStorage/DiscISAM.php | 28 ++-
.../PHPExcel/CachedObjectStorage/ICache.php | 9 +-
.../PHPExcel/CachedObjectStorage/Memcache.php | 53 +++-
.../PHPExcel/CachedObjectStorage/Memory.php | 2 +-
.../PHPExcel/CachedObjectStorage/MemoryGZip.php | 2 +-
.../CachedObjectStorage/MemorySerialized.php | 2 +-
.../PHPExcel/CachedObjectStorage/PHPTemp.php | 26 ++-
.../PHPExcel/CachedObjectStorage/Wincache.php | 58 +++-
libraries/PHPExcel/PHPExcel/Calculation.php | 105 +++++--
.../PHPExcel/PHPExcel/Calculation/Exception.php | 2 +-
.../PHPExcel/Calculation/ExceptionHandler.php | 2 +-
.../PHPExcel/Calculation/FormulaParser.php | 2 +-
.../PHPExcel/PHPExcel/Calculation/FormulaToken.php | 2 +-
.../PHPExcel/PHPExcel/Calculation/Function.php | 2 +-
.../PHPExcel/PHPExcel/Calculation/Functions.php | 175 ++++++-------
libraries/PHPExcel/PHPExcel/Cell.php | 296 ++++++++++----------
.../PHPExcel/PHPExcel/Cell/AdvancedValueBinder.php | 2 +-
libraries/PHPExcel/PHPExcel/Cell/DataType.php | 2 +-
.../PHPExcel/PHPExcel/Cell/DataValidation.php | 2 +-
.../PHPExcel/PHPExcel/Cell/DefaultValueBinder.php | 2 +-
libraries/PHPExcel/PHPExcel/Cell/Hyperlink.php | 2 +-
libraries/PHPExcel/PHPExcel/Cell/IValueBinder.php | 2 +-
libraries/PHPExcel/PHPExcel/Comment.php | 2 +-
libraries/PHPExcel/PHPExcel/DocumentProperties.php | 93 ++++---
libraries/PHPExcel/PHPExcel/DocumentSecurity.php | 2 +-
libraries/PHPExcel/PHPExcel/HashTable.php | 2 +-
libraries/PHPExcel/PHPExcel/IComparable.php | 2 +-
libraries/PHPExcel/PHPExcel/IOFactory.php | 2 +-
libraries/PHPExcel/PHPExcel/NamedRange.php | 2 +-
libraries/PHPExcel/PHPExcel/Reader/CSV.php | 2 +-
.../PHPExcel/PHPExcel/Reader/DefaultReadFilter.php | 2 +-
.../PHPExcel/PHPExcel/Reader/Excel2003XML.php | 7 +-
libraries/PHPExcel/PHPExcel/Reader/Excel2007.php | 55 +++-
libraries/PHPExcel/PHPExcel/Reader/Excel5.php | 77 +++---
.../PHPExcel/PHPExcel/Reader/Excel5/Escher.php | 2 +-
libraries/PHPExcel/PHPExcel/Reader/IReadFilter.php | 2 +-
libraries/PHPExcel/PHPExcel/Reader/IReader.php | 2 +-
libraries/PHPExcel/PHPExcel/Reader/OOCalc.php | 15 +-
libraries/PHPExcel/PHPExcel/Reader/SYLK.php | 2 +-
libraries/PHPExcel/PHPExcel/Reader/Serialized.php | 2 +-
libraries/PHPExcel/PHPExcel/ReferenceHelper.php | 161 ++++++++---
libraries/PHPExcel/PHPExcel/RichText.php | 2 +-
.../PHPExcel/PHPExcel/RichText/ITextElement.php | 2 +-
libraries/PHPExcel/PHPExcel/RichText/Run.php | 2 +-
.../PHPExcel/PHPExcel/RichText/TextElement.php | 2 +-
libraries/PHPExcel/PHPExcel/Settings.php | 2 +-
libraries/PHPExcel/PHPExcel/Shared/CodePage.php | 2 +-
libraries/PHPExcel/PHPExcel/Shared/Date.php | 2 +-
libraries/PHPExcel/PHPExcel/Shared/Drawing.php | 2 +-
libraries/PHPExcel/PHPExcel/Shared/Escher.php | 2 +-
.../PHPExcel/Shared/Escher/DgContainer.php | 2 +-
.../Shared/Escher/DgContainer/SpgrContainer.php | 2 +-
.../DgContainer/SpgrContainer/SpContainer.php | 2 +-
.../PHPExcel/Shared/Escher/DggContainer.php | 28 ++-
.../Shared/Escher/DggContainer/BstoreContainer.php | 2 +-
.../Escher/DggContainer/BstoreContainer/BSE.php | 2 +-
.../DggContainer/BstoreContainer/BSE/Blip.php | 2 +-
libraries/PHPExcel/PHPExcel/Shared/Excel5.php | 2 +-
libraries/PHPExcel/PHPExcel/Shared/File.php | 21 +-
libraries/PHPExcel/PHPExcel/Shared/Font.php | 2 +-
.../PHPExcel/Shared/OLE/ChainedBlockStream.php | 2 +-
libraries/PHPExcel/PHPExcel/Shared/OLERead.php | 2 +-
.../PHPExcel/PHPExcel/Shared/PasswordHasher.php | 2 +-
libraries/PHPExcel/PHPExcel/Shared/String.php | 4 +-
libraries/PHPExcel/PHPExcel/Shared/XMLWriter.php | 11 +-
.../PHPExcel/PHPExcel/Shared/ZipStreamWrapper.php | 2 +-
.../PHPExcel/Shared/trend/bestFitClass.php | 2 +-
.../Shared/trend/exponentialBestFitClass.php | 2 +-
.../PHPExcel/Shared/trend/linearBestFitClass.php | 2 +-
.../Shared/trend/logarithmicBestFitClass.php | 2 +-
.../Shared/trend/polynomialBestFitClass.php | 2 +-
.../PHPExcel/Shared/trend/powerBestFitClass.php | 2 +-
libraries/PHPExcel/PHPExcel/Style.php | 4 +-
libraries/PHPExcel/PHPExcel/Style/Alignment.php | 4 +-
libraries/PHPExcel/PHPExcel/Style/Border.php | 4 +-
libraries/PHPExcel/PHPExcel/Style/Borders.php | 4 +-
libraries/PHPExcel/PHPExcel/Style/Color.php | 4 +-
libraries/PHPExcel/PHPExcel/Style/Conditional.php | 2 +-
libraries/PHPExcel/PHPExcel/Style/Fill.php | 4 +-
libraries/PHPExcel/PHPExcel/Style/Font.php | 4 +-
libraries/PHPExcel/PHPExcel/Style/NumberFormat.php | 4 +-
libraries/PHPExcel/PHPExcel/Style/Protection.php | 2 +-
libraries/PHPExcel/PHPExcel/Worksheet.php | 15 +-
.../PHPExcel/PHPExcel/Worksheet/BaseDrawing.php | 2 +-
.../PHPExcel/PHPExcel/Worksheet/CellIterator.php | 2 +-
.../PHPExcel/Worksheet/ColumnDimension.php | 2 +-
libraries/PHPExcel/PHPExcel/Worksheet/Drawing.php | 2 +-
.../PHPExcel/PHPExcel/Worksheet/Drawing/Shadow.php | 2 +-
.../PHPExcel/PHPExcel/Worksheet/HeaderFooter.php | 2 +-
.../PHPExcel/Worksheet/HeaderFooterDrawing.php | 2 +-
.../PHPExcel/PHPExcel/Worksheet/MemoryDrawing.php | 2 +-
.../PHPExcel/PHPExcel/Worksheet/PageMargins.php | 2 +-
.../PHPExcel/PHPExcel/Worksheet/PageSetup.php | 213 ++++++++++++---
.../PHPExcel/PHPExcel/Worksheet/Protection.php | 2 +-
libraries/PHPExcel/PHPExcel/Worksheet/Row.php | 2 +-
.../PHPExcel/PHPExcel/Worksheet/RowDimension.php | 2 +-
.../PHPExcel/PHPExcel/Worksheet/RowIterator.php | 2 +-
.../PHPExcel/PHPExcel/Worksheet/SheetView.php | 2 +-
libraries/PHPExcel/PHPExcel/WorksheetIterator.php | 2 +-
libraries/PHPExcel/PHPExcel/Writer/CSV.php | 5 +-
libraries/PHPExcel/PHPExcel/Writer/Excel2007.php | 5 +-
.../PHPExcel/Writer/Excel2007/Comments.php | 2 +-
.../PHPExcel/Writer/Excel2007/ContentTypes.php | 2 +-
.../PHPExcel/Writer/Excel2007/DocProps.php | 2 +-
.../PHPExcel/PHPExcel/Writer/Excel2007/Drawing.php | 2 +-
.../PHPExcel/PHPExcel/Writer/Excel2007/Rels.php | 2 +-
.../PHPExcel/Writer/Excel2007/StringTable.php | 2 +-
.../PHPExcel/PHPExcel/Writer/Excel2007/Style.php | 2 +-
.../PHPExcel/PHPExcel/Writer/Excel2007/Theme.php | 2 +-
.../PHPExcel/Writer/Excel2007/Workbook.php | 2 +-
.../PHPExcel/Writer/Excel2007/Worksheet.php | 15 +-
.../PHPExcel/Writer/Excel2007/WriterPart.php | 2 +-
libraries/PHPExcel/PHPExcel/Writer/Excel5.php | 285 ++++++++++++++++++-
.../PHPExcel/PHPExcel/Writer/Excel5/BIFFwriter.php | 2 +-
.../PHPExcel/PHPExcel/Writer/Excel5/Escher.php | 9 +-
libraries/PHPExcel/PHPExcel/Writer/Excel5/Font.php | 2 +-
.../PHPExcel/PHPExcel/Writer/Excel5/Parser.php | 20 ++-
.../PHPExcel/PHPExcel/Writer/Excel5/Workbook.php | 172 +++---------
.../PHPExcel/PHPExcel/Writer/Excel5/Worksheet.php | 211 ++++++---------
libraries/PHPExcel/PHPExcel/Writer/Excel5/Xf.php | 2 +-
libraries/PHPExcel/PHPExcel/Writer/HTML.php | 11 +-
libraries/PHPExcel/PHPExcel/Writer/IWriter.php | 2 +-
libraries/PHPExcel/PHPExcel/Writer/PDF.php | 2 +-
libraries/PHPExcel/PHPExcel/Writer/Serialized.php | 6 +-
129 files changed, 1563 insertions(+), 917 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index d15366e..f31420a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -115,6 +115,7 @@
3.3.8.0 (not yet released)
- bug #3059311 [import] BIGINT field type added to table analysis
+- [core] Update library PHPExcel to version 1.7.4
3.3.7.0 (2010-09-07)
- patch #3050492 [PDF scratchboard] Cannot drag table box to the edge after
diff --git a/libraries/PHPExcel/PHPExcel.php b/libraries/PHPExcel/PHPExcel.php
index 8b9c71f..c54d421 100644
--- a/libraries/PHPExcel/PHPExcel.php
+++ b/libraries/PHPExcel/PHPExcel.php
@@ -22,7 +22,7 @@
* @package PHPExcel
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
@@ -434,7 +434,7 @@ class PHPExcel
// update the cellXfs
foreach ($pSheet->getCellCollection(false) as $cellID) {
- $cell = $sheet->getCell($cellID);
+ $cell = $pSheet->getCell($cellID);
$cell->setXfIndex( $cell->getXfIndex() + $countCellXfs );
}
diff --git a/libraries/PHPExcel/PHPExcel/Autoloader.php b/libraries/PHPExcel/PHPExcel/Autoloader.php
index 3821d74..e66ce60 100644
--- a/libraries/PHPExcel/PHPExcel/Autoloader.php
+++ b/libraries/PHPExcel/PHPExcel/Autoloader.php
@@ -22,7 +22,7 @@
* @package PHPExcel
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
class PHPExcel_Autoloader
diff --git a/libraries/PHPExcel/PHPExcel/CachedObjectStorage/APC.php b/libraries/PHPExcel/PHPExcel/CachedObjectStorage/APC.php
index 62e3a14..dae46c2 100644
--- a/libraries/PHPExcel/PHPExcel/CachedObjectStorage/APC.php
+++ b/libraries/PHPExcel/PHPExcel/CachedObjectStorage/APC.php
@@ -22,7 +22,7 @@
* @package PHPExcel_CachedObjectStorage
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
@@ -45,7 +45,7 @@ class PHPExcel_CachedObjectStorage_APC extends PHPExcel_CachedObjectStorage_Cach
if (!apc_store($this->_cachePrefix.$this->_currentObjectID.'.cache',serialize($this->_currentObject),$this->_cacheTime)) {
$this->__destruct();
- throw new Exception('Failed to store cell in APC');
+ throw new Exception('Failed to store cell '.$cellID.' in APC');
}
$this->_currentObjectID = $this->_currentObject = null;
} // function _storeData()
@@ -90,7 +90,7 @@ class PHPExcel_CachedObjectStorage_APC extends PHPExcel_CachedObjectStorage_Cach
if ($success === false) {
// Entry no longer exists in APC, so clear it from the cache array
parent::deleteCacheData($pCoord);
- throw new Exception('Cell entry no longer exists in APC');
+ throw new Exception('Cell entry '.$cellID.' no longer exists in APC');
}
return true;
}
@@ -117,7 +117,7 @@ class PHPExcel_CachedObjectStorage_APC extends PHPExcel_CachedObjectStorage_Cach
if ($obj === false) {
// Entry no longer exists in APC, so clear it from the cache array
parent::deleteCacheData($pCoord);
- throw new Exception('Cell entry no longer exists in APC');
+ throw new Exception('Cell entry '.$cellID.' no longer exists in APC');
}
} else {
// Return null if requested entry doesn't exist in cache
@@ -150,6 +150,35 @@ class PHPExcel_CachedObjectStorage_APC extends PHPExcel_CachedObjectStorage_Cach
} // function deleteCacheData()
+ /**
+ * Clone the cell collection
+ *
+ * @return void
+ */
+ public function copyCellCollection(PHPExcel_Worksheet $parent) {
+ parent::copyCellCollection($parent);
+ // Get a new id for the new file name
+ $baseUnique = $this->_getUniqueID();
+ $newCachePrefix = substr(md5($baseUnique),0,8).'.';
+ $cacheList = $this->getCellList();
+ foreach($cacheList as $cellID) {
+ if ($cellID != $this->_currentObjectID) {
+ $obj = apc_fetch($this->_cachePrefix.$cellID.'.cache');
+ if ($obj === false) {
+ // Entry no longer exists in APC, so clear it from the cache array
+ parent::deleteCacheData($cellID);
+ throw new Exception('Cell entry '.$cellID.' no longer exists in APC');
+ }
+ if (!apc_store($newCachePrefix.$cellID.'.cache',$obj,$this->_cacheTime)) {
+ $this->__destruct();
+ throw new Exception('Failed to store cell '.$cellID.' in APC');
+ }
+ }
+ }
+ $this->_cachePrefix = $newCachePrefix;
+ } // function copyCellCollection()
+
+
public function unsetWorksheetCells() {
if(!is_null($this->_currentObject)) {
$this->_currentObject->detach();
@@ -170,12 +199,8 @@ class PHPExcel_CachedObjectStorage_APC extends PHPExcel_CachedObjectStorage_Cach
$cacheTime = (isset($arguments['cacheTime'])) ? $arguments['cacheTime'] : 600;
if (is_null($this->_cachePrefix)) {
- if (function_exists('posix_getpid')) {
- $baseUnique = posix_getpid();
- } else {
- $baseUnique = mt_rand();
- }
- $this->_cachePrefix = substr(md5(uniqid($baseUnique,true)),0,8).'.';
+ $baseUnique = $this->_getUniqueID();
+ $this->_cachePrefix = substr(md5($baseUnique),0,8).'.';
$this->_cacheTime = $cacheTime;
parent::__construct($parent);
diff --git a/libraries/PHPExcel/PHPExcel/CachedObjectStorage/CacheBase.php b/libraries/PHPExcel/PHPExcel/CachedObjectStorage/CacheBase.php
index 9871d90..208ed02 100644
--- a/libraries/PHPExcel/PHPExcel/CachedObjectStorage/CacheBase.php
+++ b/libraries/PHPExcel/PHPExcel/CachedObjectStorage/CacheBase.php
@@ -22,7 +22,7 @@
* @package PHPExcel_CachedObjectStorage
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
@@ -116,7 +116,7 @@ class PHPExcel_CachedObjectStorage_CacheBase {
$this->_currentObjectID = $this->_currentObject = null;
}
- if (isset($this->_cellCache[$pCoord])) {
+ if (is_object($this->_cellCache[$pCoord])) {
$this->_cellCache[$pCoord]->detach();
unset($this->_cellCache[$pCoord]);
}
@@ -141,13 +141,34 @@ class PHPExcel_CachedObjectStorage_CacheBase {
public function getSortedCellList() {
$sortKeys = array();
foreach ($this->_cellCache as $coord => $value) {
- preg_match('/^(\w+)(\d+)$/U',$coord,$matches);
- list(,$colNum,$rowNum) = $matches;
- $sortKeys[$coord] = str_pad($rowNum . str_pad($colNum,3,'@',STR_PAD_LEFT),12,'0',STR_PAD_LEFT);
+ list($colNum,$rowNum) = sscanf($coord,'%[A-Z]%d');
+ $sortKeys[sprintf('%09d%3s',$rowNum,$colNum)] = $coord;
}
- asort($sortKeys);
+ ksort($sortKeys);
- return array_keys($sortKeys);
+ return array_values($sortKeys);
} // function sortCellList()
+
+ protected function _getUniqueID() {
+ if (function_exists('posix_getpid')) {
+ $baseUnique = posix_getpid();
+ } else {
+ $baseUnique = mt_rand();
+ }
+ return uniqid($baseUnique,true);
+ }
+
+ /**
+ * Clone the cell collection
+ *
+ * @return void
+ */
+ public function copyCellCollection(PHPExcel_Worksheet $parent) {
+ $this->_parent = $parent;
+ if ((!is_null($this->_currentObject)) && (is_object($this->_currentObject))) {
+ $this->_currentObject->attach($parent);
+ }
+ } // function copyCellCollection()
+
}
diff --git a/libraries/PHPExcel/PHPExcel/CachedObjectStorage/DiscISAM.php b/libraries/PHPExcel/PHPExcel/CachedObjectStorage/DiscISAM.php
index e685607..dff52fa 100644
--- a/libraries/PHPExcel/PHPExcel/CachedObjectStorage/DiscISAM.php
+++ b/libraries/PHPExcel/PHPExcel/CachedObjectStorage/DiscISAM.php
@@ -22,7 +22,7 @@
* @package PHPExcel_CachedObjectStorage
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
@@ -103,6 +103,24 @@ class PHPExcel_CachedObjectStorage_DiscISAM extends PHPExcel_CachedObjectStorage
} // function getCacheData()
+ /**
+ * Clone the cell collection
+ *
+ * @return void
+ */
+ public function copyCellCollection(PHPExcel_Worksheet $parent) {
+ parent::copyCellCollection($parent);
+ // Get a new id for the new file name
+ $baseUnique = $this->_getUniqueID();
+ $newFileName = sys_get_temp_dir().'/PHPExcel.'.$baseUnique.'.cache';
+ // Copy the existing cell cache file
+ copy ($this->_fileName,$newFileName);
+ $this->_fileName = $newFileName;
+ // Open the copied cell cache file
+ $this->_fileHandle = fopen($this->_fileName,'a+');
+ } // function copyCellCollection()
+
+
public function unsetWorksheetCells() {
if(!is_null($this->_currentObject)) {
$this->_currentObject->detach();
@@ -121,12 +139,8 @@ class PHPExcel_CachedObjectStorage_DiscISAM extends PHPExcel_CachedObjectStorage
public function __construct(PHPExcel_Worksheet $parent) {
parent::__construct($parent);
if (is_null($this->_fileHandle)) {
- if (function_exists('posix_getpid')) {
- $baseUnique = posix_getpid();
- } else {
- $baseUnique = mt_rand();
- }
- $this->_fileName = sys_get_temp_dir().'/PHPExcel.'.uniqid($baseUnique,true).'.cache';
+ $baseUnique = $this->_getUniqueID();
+ $this->_fileName = sys_get_temp_dir().'/PHPExcel.'.$baseUnique.'.cache';
$this->_fileHandle = fopen($this->_fileName,'a+');
}
} // function __construct()
diff --git a/libraries/PHPExcel/PHPExcel/CachedObjectStorage/ICache.php b/libraries/PHPExcel/PHPExcel/CachedObjectStorage/ICache.php
index f3282aa..4731b8e 100644
--- a/libraries/PHPExcel/PHPExcel/CachedObjectStorage/ICache.php
+++ b/libraries/PHPExcel/PHPExcel/CachedObjectStorage/ICache.php
@@ -22,7 +22,7 @@
* @package PHPExcel_CachedObjectStorage
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
@@ -94,4 +94,11 @@ interface PHPExcel_CachedObjectStorage_ICache
*/
public function getSortedCellList();
+ /**
+ * Clone the cell collection
+ *
+ * @return void
+ */
+ public function copyCellCollection(PHPExcel_Worksheet $parent);
+
}
diff --git a/libraries/PHPExcel/PHPExcel/CachedObjectStorage/Memcache.php b/libraries/PHPExcel/PHPExcel/CachedObjectStorage/Memcache.php
index f1fc43c..74df8e8 100644
--- a/libraries/PHPExcel/PHPExcel/CachedObjectStorage/Memcache.php
+++ b/libraries/PHPExcel/PHPExcel/CachedObjectStorage/Memcache.php
@@ -22,7 +22,7 @@
* @package PHPExcel_CachedObjectStorage
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
@@ -49,7 +49,7 @@ class PHPExcel_CachedObjectStorage_Memcache extends PHPExcel_CachedObjectStorage
if (!$this->_memcache->replace($this->_cachePrefix.$this->_currentObjectID.'.cache',$obj,NULL,$this->_cacheTime)) {
if (!$this->_memcache->add($this->_cachePrefix.$this->_currentObjectID.'.cache',$obj,NULL,$this->_cacheTime)) {
$this->__destruct();
- throw new Exception('Failed to store cell in Memcache');
+ throw new Exception('Failed to store cell '.$cellID.' in MemCache');
}
}
$this->_currentObjectID = $this->_currentObject = null;
@@ -90,12 +90,12 @@ class PHPExcel_CachedObjectStorage_Memcache extends PHPExcel_CachedObjectStorage
if ($this->_currentObjectID == $pCoord) {
return true;
}
- // Check if the requested entry still exists in apc
+ // Check if the requested entry still exists in Memcache
$success = $this->_memcache->get($this->_cachePrefix.$pCoord.'.cache');
if ($success === false) {
// Entry no longer exists in Memcache, so clear it from the cache array
parent::deleteCacheData($pCoord);
- throw new Exception('Cell entry no longer exists in Memcache');
+ throw new Exception('Cell entry '.$cellID.' no longer exists in MemCache');
}
return true;
}
@@ -122,7 +122,7 @@ class PHPExcel_CachedObjectStorage_Memcache extends PHPExcel_CachedObjectStorage
if ($obj === false) {
// Entry no longer exists in Memcache, so clear it from the cache array
parent::deleteCacheData($pCoord);
- throw new Exception('Cell entry no longer exists in Memcache');
+ throw new Exception('Cell entry '.$cellID.' no longer exists in MemCache');
}
} else {
// Return null if requested entry doesn't exist in cache
@@ -155,6 +155,35 @@ class PHPExcel_CachedObjectStorage_Memcache extends PHPExcel_CachedObjectStorage
} // function deleteCacheData()
+ /**
+ * Clone the cell collection
+ *
+ * @return void
+ */
+ public function copyCellCollection(PHPExcel_Worksheet $parent) {
+ parent::copyCellCollection($parent);
+ // Get a new id for the new file name
+ $baseUnique = $this->_getUniqueID();
+ $newCachePrefix = substr(md5($baseUnique),0,8).'.';
+ $cacheList = $this->getCellList();
+ foreach($cacheList as $cellID) {
+ if ($cellID != $this->_currentObjectID) {
+ $obj = $this->_memcache->get($this->_cachePrefix.$cellID.'.cache');
+ if ($obj === false) {
+ // Entry no longer exists in Memcache, so clear it from the cache array
+ parent::deleteCacheData($cellID);
+ throw new Exception('Cell entry '.$cellID.' no longer exists in MemCache');
+ }
+ if (!$this->_memcache->add($newCachePrefix.$cellID.'.cache',$obj,NULL,$this->_cacheTime)) {
+ $this->__destruct();
+ throw new Exception('Failed to store cell '.$cellID.' in MemCache');
+ }
+ }
+ }
+ $this->_cachePrefix = $newCachePrefix;
+ } // function copyCellCollection()
+
+
public function unsetWorksheetCells() {
if(!is_null($this->_currentObject)) {
$this->_currentObject->detach();
@@ -177,17 +206,13 @@ class PHPExcel_CachedObjectStorage_Memcache extends PHPExcel_CachedObjectStorage
$cacheTime = (isset($arguments['cacheTime'])) ? $arguments['cacheTime'] : 600;
if (is_null($this->_cachePrefix)) {
- if (function_exists('posix_getpid')) {
- $baseUnique = posix_getpid();
- } else {
- $baseUnique = mt_rand();
- }
- $this->_cachePrefix = substr(md5(uniqid($baseUnique,true)),0,8).'.';
+ $baseUnique = $this->_getUniqueID();
+ $this->_cachePrefix = substr(md5($baseUnique),0,8).'.';
// Set a new Memcache object and connect to the Memcache server
$this->_memcache = new Memcache();
- if (!$this->_memcache->addServer($memcacheServer, $memcachePort, false, 50, 5, 5, true, array($this, 'failureCallback')) {
- throw new Exception('Could not connect to Memcache server at '.$memcacheServer.':'.$memcachePort);
+ if (!$this->_memcache->addServer($memcacheServer, $memcachePort, false, 50, 5, 5, true, array($this, 'failureCallback'))) {
+ throw new Exception('Could not connect to MemCache server at '.$memcacheServer.':'.$memcachePort);
}
$this->_cacheTime = $cacheTime;
@@ -197,7 +222,7 @@ class PHPExcel_CachedObjectStorage_Memcache extends PHPExcel_CachedObjectStorage
public function failureCallback($host, $port) {
- throw new Exception('memcache '.$host.':'.$port' failed');
+ throw new Exception('memcache '.$host.':'.$port.' failed');
}
diff --git a/libraries/PHPExcel/PHPExcel/CachedObjectStorage/Memory.php b/libraries/PHPExcel/PHPExcel/CachedObjectStorage/Memory.php
index be0fade..4b59b91 100644
--- a/libraries/PHPExcel/PHPExcel/CachedObjectStorage/Memory.php
+++ b/libraries/PHPExcel/PHPExcel/CachedObjectStorage/Memory.php
@@ -22,7 +22,7 @@
* @package PHPExcel_CachedObjectStorage
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/CachedObjectStorage/MemoryGZip.php b/libraries/PHPExcel/PHPExcel/CachedObjectStorage/MemoryGZip.php
index c281389..394faf2 100644
--- a/libraries/PHPExcel/PHPExcel/CachedObjectStorage/MemoryGZip.php
+++ b/libraries/PHPExcel/PHPExcel/CachedObjectStorage/MemoryGZip.php
@@ -22,7 +22,7 @@
* @package PHPExcel_CachedObjectStorage
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/CachedObjectStorage/MemorySerialized.php b/libraries/PHPExcel/PHPExcel/CachedObjectStorage/MemorySerialized.php
index 9c29ea2..0b5b997 100644
--- a/libraries/PHPExcel/PHPExcel/CachedObjectStorage/MemorySerialized.php
+++ b/libraries/PHPExcel/PHPExcel/CachedObjectStorage/MemorySerialized.php
@@ -22,7 +22,7 @@
* @package PHPExcel_CachedObjectStorage
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/CachedObjectStorage/PHPTemp.php b/libraries/PHPExcel/PHPExcel/CachedObjectStorage/PHPTemp.php
index 98cd952..54810d8 100644
--- a/libraries/PHPExcel/PHPExcel/CachedObjectStorage/PHPTemp.php
+++ b/libraries/PHPExcel/PHPExcel/CachedObjectStorage/PHPTemp.php
@@ -22,7 +22,7 @@
* @package PHPExcel_CachedObjectStorage
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
@@ -38,6 +38,8 @@ class PHPExcel_CachedObjectStorage_PHPTemp extends PHPExcel_CachedObjectStorage_
private $_fileHandle = null;
+ private $_memoryCacheSize = null;
+
private function _storeData() {
$this->_currentObject->detach();
@@ -102,6 +104,24 @@ class PHPExcel_CachedObjectStorage_PHPTemp extends PHPExcel_CachedObjectStorage_
} // function getCacheData()
+ /**
+ * Clone the cell collection
+ *
+ * @return void
+ */
+ public function copyCellCollection(PHPExcel_Worksheet $parent) {
+ parent::copyCellCollection($parent);
+ // Open a new stream for the cell cache data
+ $newFileHandle = fopen('php://temp/maxmemory:'.$this->_memoryCacheSize,'a+');
+ // Copy the existing cell cache data to the new stream
+ fseek($this->_fileHandle,0);
+ while (!feof($this->_fileHandle)) {
+ fwrite($newFileHandle,fread($this->_fileHandle, 1024));
+ }
+ $this->_fileHandle = $newFileHandle;
+ } // function copyCellCollection()
+
+
public function unsetWorksheetCells() {
if(!is_null($this->_currentObject)) {
$this->_currentObject->detach();
@@ -118,11 +138,11 @@ class PHPExcel_CachedObjectStorage_PHPTemp extends PHPExcel_CachedObjectStorage_
public function __construct(PHPExcel_Worksheet $parent, $memoryCacheSize = '1MB') {
- $memoryCacheSize = (isset($arguments['memoryCacheSize'])) ? $arguments['memoryCacheSize'] : '1MB';
+ $this->_memoryCacheSize = (isset($arguments['memoryCacheSize'])) ? $arguments['memoryCacheSize'] : '1MB';
parent::__construct($parent);
if (is_null($this->_fileHandle)) {
- $this->_fileHandle = fopen('php://temp/maxmemory:'.$memoryCacheSize,'a+');
+ $this->_fileHandle = fopen('php://temp/maxmemory:'.$this->_memoryCacheSize,'a+');
}
} // function __construct()
diff --git a/libraries/PHPExcel/PHPExcel/CachedObjectStorage/Wincache.php b/libraries/PHPExcel/PHPExcel/CachedObjectStorage/Wincache.php
index d759d7c..aa075be 100644
--- a/libraries/PHPExcel/PHPExcel/CachedObjectStorage/Wincache.php
+++ b/libraries/PHPExcel/PHPExcel/CachedObjectStorage/Wincache.php
@@ -22,7 +22,7 @@
* @package PHPExcel_CachedObjectStorage
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
@@ -45,9 +45,15 @@ class PHPExcel_CachedObjectStorage_Wincache extends PHPExcel_CachedObjectStorage
$obj = serialize($this->_currentObject);
if (wincache_ucache_exists($this->_cachePrefix.$this->_currentObjectID.'.cache')) {
- wincache_ucache_set($this->_cachePrefix.$this->_currentObjectID.'.cache', $obj, $this->_cacheTime);
+ if (!wincache_ucache_set($this->_cachePrefix.$this->_currentObjectID.'.cache', $obj, $this->_cacheTime)) {
+ $this->__destruct();
+ throw new Exception('Failed to store cell '.$cellID.' in WinCache');
+ }
} else {
- wincache_ucache_add($this->_cachePrefix.$this->_currentObjectID.'.cache', $obj, $this->_cacheTime);
+ if (!wincache_ucache_add($this->_cachePrefix.$this->_currentObjectID.'.cache', $obj, $this->_cacheTime)) {
+ $this->__destruct();
+ throw new Exception('Failed to store cell '.$cellID.' in WinCache');
+ }
}
$this->_currentObjectID = $this->_currentObject = null;
@@ -93,7 +99,7 @@ class PHPExcel_CachedObjectStorage_Wincache extends PHPExcel_CachedObjectStorage
if ($success === false) {
// Entry no longer exists in Wincache, so clear it from the cache array
parent::deleteCacheData($pCoord);
- throw new Exception('Cell entry no longer exists in Wincache');
+ throw new Exception('Cell entry '.$cellID.' no longer exists in WinCache');
}
return true;
}
@@ -120,9 +126,9 @@ class PHPExcel_CachedObjectStorage_Wincache extends PHPExcel_CachedObjectStorage
$success = false;
$obj = wincache_ucache_get($this->_cachePrefix.$pCoord.'.cache', $success);
if ($success === false) {
- // Entry no longer exists in Wincache, so clear it from the cache array
+ // Entry no longer exists in WinCache, so clear it from the cache array
parent::deleteCacheData($pCoord);
- throw new Exception('Cell entry no longer exists in Wincache');
+ throw new Exception('Cell entry '.$cellID.' no longer exists in WinCache');
}
} else {
// Return null if requested entry doesn't exist in cache
@@ -155,13 +161,43 @@ class PHPExcel_CachedObjectStorage_Wincache extends PHPExcel_CachedObjectStorage
} // function deleteCacheData()
+ /**
+ * Clone the cell collection
+ *
+ * @return void
+ */
+ public function copyCellCollection(PHPExcel_Worksheet $parent) {
+ parent::copyCellCollection($parent);
+ // Get a new id for the new file name
+ $baseUnique = $this->_getUniqueID();
+ $newCachePrefix = substr(md5($baseUnique),0,8).'.';
+ $cacheList = $this->getCellList();
+ foreach($cacheList as $cellID) {
+ if ($cellID != $this->_currentObjectID) {
+ $success = false;
+ $obj = wincache_ucache_get($this->_cachePrefix.$cellID.'.cache', $success);
+ if ($success === false) {
+ // Entry no longer exists in WinCache, so clear it from the cache array
+ parent::deleteCacheData($cellID);
+ throw new Exception('Cell entry '.$cellID.' no longer exists in Wincache');
+ }
+ if (!wincache_ucache_add($newCachePrefix.$cellID.'.cache', $obj, $this->_cacheTime)) {
+ $this->__destruct();
+ throw new Exception('Failed to store cell '.$cellID.' in Wincache');
+ }
+ }
+ }
+ $this->_cachePrefix = $newCachePrefix;
+ } // function copyCellCollection()
+
+
public function unsetWorksheetCells() {
if(!is_null($this->_currentObject)) {
$this->_currentObject->detach();
$this->_currentObject = $this->_currentObjectID = null;
}
- // Flush the Wincache cache
+ // Flush the WinCache cache
$this->__destruct();
$this->_cellCache = array();
@@ -175,12 +211,8 @@ class PHPExcel_CachedObjectStorage_Wincache extends PHPExcel_CachedObjectStorage
$cacheTime = (isset($arguments['cacheTime'])) ? $arguments['cacheTime'] : 600;
if (is_null($this->_cachePrefix)) {
- if (function_exists('posix_getpid')) {
- $baseUnique = posix_getpid();
- } else {
- $baseUnique = mt_rand();
- }
- $this->_cachePrefix = substr(md5(uniqid($baseUnique,true)),0,8).'.';
+ $baseUnique = $this->_getUniqueID();
+ $this->_cachePrefix = substr(md5($baseUnique),0,8).'.';
$this->_cacheTime = $cacheTime;
parent::__construct($parent);
diff --git a/libraries/PHPExcel/PHPExcel/Calculation.php b/libraries/PHPExcel/PHPExcel/Calculation.php
index 6e8499e..e32891a 100644
--- a/libraries/PHPExcel/PHPExcel/Calculation.php
+++ b/libraries/PHPExcel/PHPExcel/Calculation.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Calculation
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
@@ -2248,7 +2248,7 @@ class PHPExcel_Calculation {
}
$this->debugLogStack[] = $wsTitle.'!'.$cellID;
// Parse the formula onto the token stack and calculate the value
- $cellValue = $this->_processTokenStack($this->_parseFormula($formula), $cellID, $pCell);
+ $cellValue = $this->_processTokenStack($this->_parseFormula($formula, $pCell), $cellID, $pCell);
array_pop($this->debugLogStack);
// Save to calculation cache
@@ -2462,31 +2462,24 @@ class PHPExcel_Calculation {
$value = array_pop($testArray);
}
- switch (gettype($value)) {
- case 'double' :
- case 'float' :
- $typeString = 'a floating point number';
- break;
- case 'integer' :
- $typeString = 'an integer number';
- break;
- case 'boolean' :
- $typeString = 'a boolean';
- break;
- case 'array' :
- $typeString = 'a matrix';
- break;
- case 'string' :
- if ($value == '') {
- return 'an empty string';
- } elseif ($value{0} == '#') {
- return 'a '.$value.' error';
- } else {
- $typeString = 'a string';
- }
- break;
- case 'NULL' :
- return 'a null value';
+ if (is_null($value)) {
+ return 'a null value';
+ } elseif (is_float($value)) {
+ $typeString = 'a floating point number';
+ } elseif(is_int($value)) {
+ $typeString = 'an integer number';
+ } elseif(is_bool($value)) {
+ $typeString = 'a boolean';
+ } elseif(is_array($value)) {
+ $typeString = 'a matrix';
+ } else {
+ if ($value == '') {
+ return 'an empty string';
+ } elseif ($value{0} == '#') {
+ return 'a '.$value.' error';
+ } else {
+ $typeString = 'a string';
+ }
}
return $typeString.' with a value of '.self::_showValue($value);
} // function _showTypeDetails()
@@ -2548,11 +2541,15 @@ class PHPExcel_Calculation {
// Convert infix to postfix notation
- private function _parseFormula($formula) {
+ private function _parseFormula($formula, PHPExcel_Cell $pCell = null) {
if (($formula = self::_convertMatrixReferences(trim($formula))) === false) {
return false;
}
+ // If we're using cell caching, then $pCell may well be flushed back to the cache (which detaches the parent worksheet),
+ // so we store the parent worksheet so that we can re-attach it when necessary
+ $pCellParent = (!is_null($pCell)) ? $pCell->getParent() : null;
+
// Binary Operators
// These operators always work on two values
// Array key is the operator, the value indicates whether this is a left or right associative operator
@@ -2774,12 +2771,56 @@ class PHPExcel_Calculation {
// echo 'Element '.$val.' is a Cell reference<br />';
// Watch for this case-change when modifying to allow cell references in different worksheets...
// Should only be applied to the actual cell column, not the worksheet name
+
+ // If the last entry on the stack was a : operator, then we have a cell range reference
+ $testPrevOp = $stack->last(1);
+ if ($testPrevOp['value'] == ':') {
+ // If we have a worksheet reference, then we're playing with a 3D reference
+ if ($matches[2] == '') {
+ // Otherwise, we 'inherit' the worksheet reference from the start cell reference
+ // The start of the cell range reference should be the last entry in $output
+ $startCellRef = $output[count($output)-1]['value'];
+ preg_match('/^'.self::CALCULATION_REGEXP_CELLREF.'$/i', $startCellRef, $startMatches);
+ if ($startMatches[2] > '') {
+ $val = $startMatches[2].'!'.$val;
+ }
+ }
+ }
$cellRef = strtoupper($val);
-// $output[] = $cellRef;
+
$output[] = array('type' => 'Cell Reference', 'value' => $val, 'reference' => $cellRef);
// $expectingOperator = false;
} else { // it's a variable, constant, string, number or boolean
// echo 'Element is a Variable, Constant, String, Number or Boolean<br />';
+ // If the last entry on the stack was a : operator, then we may have a row or column range reference
+ $testPrevOp = $stack->last(1);
+ if ($testPrevOp['value'] == ':') {
+ $startRowColRef = $output[count($output)-1]['value'];
+ $rangeWS1 = '';
+ if (strpos('!',$startRowColRef) !== false) {
+ list($rangeWS1,$startRowColRef) = explode('!',$startRowColRef);
+ }
+ if ($rangeWS1 != '') $rangeWS1 .= '!';
+ $rangeWS2 = $rangeWS1;
+ if (strpos('!',$val) !== false) {
+ list($rangeWS2,$val) = explode('!',$val);
+ }
+ if ($rangeWS2 != '') $rangeWS2 .= '!';
+ if ((is_integer($startRowColRef)) && (ctype_digit($val)) &&
+ ($startRowColRef <= 1048576) && ($val <= 1048576)) {
+ // Row range
+ $endRowColRef = (!is_null($pCellParent)) ? $pCellParent->getHighestColumn() : 'XFD'; // Max 16,384 columns for Excel2007
+ $output[count($output)-1]['value'] = $rangeWS1.'A'.$startRowColRef;
+ $val = $rangeWS2.$endRowColRef.$val;
+ } elseif ((ctype_alpha($startRowColRef)) && (ctype_alpha($val)) &&
+ (strlen($startRowColRef) <= 3) && (strlen($val) <= 3)) {
+ // Column range
+ $endRowColRef = (!is_null($pCellParent)) ? $pCellParent->getHighestRow() : 1048576; // Max 1,048,576 rows for Excel2007
+ $output[count($output)-1]['value'] = $rangeWS1.strtoupper($startRowColRef).'1';
+ $val = $rangeWS2.$val.$endRowColRef;
+ }
+ }
+
$localeConstant = false;
if ($opCharacter == '"') {
// echo 'Element is a String<br />';
@@ -2808,6 +2849,8 @@ class PHPExcel_Calculation {
}
$index += $length;
+ } elseif ($opCharacter == '$') { // absolute row or column range
+ $index++;
} elseif ($opCharacter == ')') { // miscellaneous error checking
if ($expectingOperand) {
$output[] = array('type' => 'Null Value', 'value' => self::$_ExcelConstants['NULL'], 'reference' => NULL);
@@ -3067,7 +3110,7 @@ class PHPExcel_Calculation {
return $this->_raiseFormulaError('Unable to access Cell Reference');
}
$this->_writeDebug('Evaluation Result for cells '.$cellRef.' in worksheet '.$matches[2].' is '.self::_showTypeDetails($cellValue));
- $cellRef = $matches[2].'!'.$cellRef;
+// $cellRef = $matches[2].'!'.$cellRef;
} else {
// echo '$cellRef='.$cellRef.' in current worksheet<br />';
$this->_writeDebug('Evaluating Cell Range '.$cellRef.' in current worksheet');
@@ -3101,7 +3144,7 @@ class PHPExcel_Calculation {
return $this->_raiseFormulaError('Unable to access Cell Reference');
}
$this->_writeDebug('Evaluation Result for cell '.$cellRef.' in worksheet '.$matches[2].' is '.self::_showTypeDetails($cellValue));
- $cellRef = $matches[2].'!'.$cellRef;
+// $cellRef = $matches[2].'!'.$cellRef;
} else {
// echo '$cellRef='.$cellRef.' in current worksheet<br />';
$this->_writeDebug('Evaluating Cell '.$cellRef.' in current worksheet');
diff --git a/libraries/PHPExcel/PHPExcel/Calculation/Exception.php b/libraries/PHPExcel/PHPExcel/Calculation/Exception.php
index 8e77b9d..b94f3f4 100644
--- a/libraries/PHPExcel/PHPExcel/Calculation/Exception.php
+++ b/libraries/PHPExcel/PHPExcel/Calculation/Exception.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Calculation
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/Calculation/ExceptionHandler.php b/libraries/PHPExcel/PHPExcel/Calculation/ExceptionHandler.php
index 9956167..7050260 100644
--- a/libraries/PHPExcel/PHPExcel/Calculation/ExceptionHandler.php
+++ b/libraries/PHPExcel/PHPExcel/Calculation/ExceptionHandler.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Calculation
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
/**
diff --git a/libraries/PHPExcel/PHPExcel/Calculation/FormulaParser.php b/libraries/PHPExcel/PHPExcel/Calculation/FormulaParser.php
index 8fcde41..271aa75 100644
--- a/libraries/PHPExcel/PHPExcel/Calculation/FormulaParser.php
+++ b/libraries/PHPExcel/PHPExcel/Calculation/FormulaParser.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Calculation
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/Calculation/FormulaToken.php b/libraries/PHPExcel/PHPExcel/Calculation/FormulaToken.php
index 69d7f42..8c1396e 100644
--- a/libraries/PHPExcel/PHPExcel/Calculation/FormulaToken.php
+++ b/libraries/PHPExcel/PHPExcel/Calculation/FormulaToken.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Calculation
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/Calculation/Function.php b/libraries/PHPExcel/PHPExcel/Calculation/Function.php
index 783e533..81dfc99 100644
--- a/libraries/PHPExcel/PHPExcel/Calculation/Function.php
+++ b/libraries/PHPExcel/PHPExcel/Calculation/Function.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Calculation
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/Calculation/Functions.php b/libraries/PHPExcel/PHPExcel/Calculation/Functions.php
index 8ce3cfd..805f483 100644
--- a/libraries/PHPExcel/PHPExcel/Calculation/Functions.php
+++ b/libraries/PHPExcel/PHPExcel/Calculation/Functions.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Calculation
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
@@ -1885,7 +1885,7 @@ class PHPExcel_Calculation_Functions {
}
// Return
- if (($aCount > 0) && ($returnValue > 0)) {
+ if (($aCount > 0) && ($returnValue >= 0)) {
return sqrt($returnValue / $aCount);
}
}
@@ -1937,7 +1937,7 @@ class PHPExcel_Calculation_Functions {
}
// Return
- if (($aCount > 0) && ($returnValue > 0)) {
+ if (($aCount > 0) && ($returnValue >= 0)) {
return sqrt($returnValue / $aCount);
}
}
@@ -1984,7 +1984,7 @@ class PHPExcel_Calculation_Functions {
}
// Return
- if (($aCount > 0) && ($returnValue > 0)) {
+ if (($aCount > 0) && ($returnValue >= 0)) {
return sqrt($returnValue / $aCount);
}
}
@@ -2036,7 +2036,7 @@ class PHPExcel_Calculation_Functions {
}
// Return
- if (($aCount > 0) && ($returnValue > 0)) {
+ if (($aCount > 0) && ($returnValue >= 0)) {
return sqrt($returnValue / $aCount);
}
}
@@ -5691,7 +5691,7 @@ class PHPExcel_Calculation_Functions {
* @return string Version information
*/
public static function VERSION() {
- return 'PHPExcel 1.7.3c, 2010-06-01';
+ return 'PHPExcel 1.7.4, 2010-08-26';
} // function VERSION()
@@ -11139,112 +11139,101 @@ class PHPExcel_Calculation_Functions {
* @return integer The relative position of the found item
*/
public static function MATCH($lookup_value, $lookup_array, $match_type=1) {
-
- // flatten the lookup_array
$lookup_array = self::flattenArray($lookup_array);
-
- // flatten lookup_value since it may be a cell reference to a value or the value itself
$lookup_value = self::flattenSingleValue($lookup_value);
-
- // MATCH is not case sensitive
+ $match_type = (is_null($match_type)) ? 1 : (int) self::flattenSingleValue($match_type);
+ // MATCH is not case sensitive
$lookup_value = strtolower($lookup_value);
- /*
- echo "--------------------<br>looking for $lookup_value in <br>";
- print_r($lookup_array);
- echo "<br>";
- //return 1;
- /**/
-
- // **
- // check inputs
- // **
- // lookup_value type has to be number, text, or logical values
- if (!is_numeric($lookup_value) && !is_string($lookup_value) && !is_bool($lookup_value)){
- // error: lookup_array should contain only number, text, or logical values
- //echo "error: lookup_array should contain only number, text, or logical values<br>";
+ // lookup_value type has to be number, text, or logical values
+ if ((!is_numeric($lookup_value)) && (!is_string($lookup_value)) && (!is_bool($lookup_value))) {
return self::$_errorCodes['na'];
}
- // match_type is 0, 1 or -1
- if ($match_type!==0 && $match_type!==-1 && $match_type!==1){
- // error: wrong value for match_type
- //echo "error: wrong value for match_type<br>";
+ // match_type is 0, 1 or -1
+ if (($match_type !== 0) && ($match_type !== -1) && ($match_type !== 1)) {
return self::$_errorCodes['na'];
}
- // lookup_array should not be empty
- if (sizeof($lookup_array)<=0){
- // error: empty range
- //echo "error: empty range ".sizeof($lookup_array)."<br>";
+ // lookup_array should not be empty
+ $lookupArraySize = count($lookup_array);
+ if ($lookupArraySize <= 0) {
return self::$_errorCodes['na'];
}
- // lookup_array should contain only number, text, or logical values
- for ($i=0;$i<sizeof($lookup_array);++$i){
- // check the type of the value
- if (!is_numeric($lookup_array[$i]) && !is_string($lookup_array[$i]) && !is_bool($lookup_array[$i])){
- // error: lookup_array should contain only number, text, or logical values
- //echo "error: lookup_array should contain only number, text, or logical values<br>";
+ // lookup_array should contain only number, text, or logical values, or empty (null) cells
+ foreach($lookup_array as $i => $lookupArrayValue) {
+ // check the type of the value
+ if ((!is_numeric($lookupArrayValue)) && (!is_string($lookupArrayValue)) &&
+ (!is_bool($lookupArrayValue)) && (!is_null($lookupArrayValue))) {
return self::$_errorCodes['na'];
}
- // convert tpo lowercase
- if (is_string($lookup_array[$i]))
- $lookup_array[$i] = strtolower($lookup_array[$i]);
+ // convert strings to lowercase for case-insensitive testing
+ if (is_string($lookupArrayValue)) {
+ $lookup_array[$i] = strtolower($lookupArrayValue);
+ }
+ if ((is_null($lookupArrayValue)) && (($match_type == 1) || ($match_type == -1))) {
+ $lookup_array = array_slice($lookup_array,0,$i-1);
+ }
}
// if match_type is 1 or -1, the list has to be ordered
- if($match_type==1 || $match_type==-1){
- // **
- // iniitialization
- // store the last value
- $iLastValue=$lookup_array[0];
- // **
- // loop on the cells
- for ($i=0;$i<sizeof($lookup_array);++$i){
- // check ascending order
- if(($match_type==1 && $lookup_array[$i]<$iLastValue)
- // OR check descending order
- || ($match_type==-1 && $lookup_array[$i]>$iLastValue)){
- // error: list is not ordered correctly
- //echo "error: list is not ordered correctly<br>";
- return self::$_errorCodes['na'];
- }
- }
+ if ($match_type == 1) {
+ asort($lookup_array);
+ $keySet = array_keys($lookup_array);
+ } elseif($match_type == -1) {
+ arsort($lookup_array);
+ $keySet = array_keys($lookup_array);
}
+
// **
// find the match
// **
// loop on the cells
- for ($i=0; $i < sizeof($lookup_array); ++$i){
- // if match_type is 0 <=> find the first value that is exactly equal to lookup_value
- if ($match_type==0 && $lookup_array[$i]==$lookup_value){
- // this is the exact match
- return $i+1;
- }
- // if match_type is -1 <=> find the smallest value that is greater than or equal to lookup_value
- if ($match_type==-1 && $lookup_array[$i] < $lookup_value){
- if ($i<1){
+// var_dump($lookup_array);
+// echo '<br />';
+ foreach($lookup_array as $i => $lookupArrayValue) {
+ if (($match_type == 0) && ($lookupArrayValue == $lookup_value)) {
+ // exact match
+ return ++$i;
+ } elseif (($match_type == -1) && ($lookupArrayValue <= $lookup_value)) {
+// echo '$i = '.$i.' => ';
+// var_dump($lookupArrayValue);
+// echo '<br />';
+// echo 'Keyset = ';
+// var_dump($keySet);
+// echo '<br />';
+ $i = array_search($i,$keySet);
+// echo '$i='.$i.'<br />';
+ // if match_type is -1 <=> find the smallest value that is greater than or equal to lookup_value
+ if ($i < 1){
// 1st cell was allready smaller than the lookup_value
break;
- }
- else
+ } else {
// the previous cell was the match
- return $i;
- }
- // if match_type is 1 <=> find the largest value that is less than or equal to lookup_value
- if ($match_type==1 && $lookup_array[$i] > $lookup_value){
- if ($i<1){
+ return $keySet[$i-1]+1;
+ }
+ } elseif (($match_type == 1) && ($lookupArrayValue >= $lookup_value)) {
+// echo '$i = '.$i.' => ';
+// var_dump($lookupArrayValue);
+// echo '<br />';
+// echo 'Keyset = ';
+// var_dump($keySet);
+// echo '<br />';
+ $i = array_search($i,$keySet);
+// echo '$i='.$i.'<br />';
+ // if match_type is 1 <=> find the largest value that is less than or equal to lookup_value
+ if ($i < 1){
// 1st cell was allready bigger than the lookup_value
break;
- }
- else
+ } else {
// the previous cell was the match
- return $i;
+ return $keySet[$i-1]+1;
+ }
}
}
- // unsuccessful in finding a match, return #N/A error value
- //echo "unsuccessful in finding a match<br>";
+
+ // unsuccessful in finding a match, return #N/A error value
return self::$_errorCodes['na'];
} // function MATCH()
@@ -11378,25 +11367,19 @@ class PHPExcel_Calculation_Functions {
}
$value = self::flattenSingleValue($value);
- switch (gettype($value)) {
- case 'double' :
- case 'float' :
- case 'integer' :
+ if ((is_float($value)) || (is_int($value))) {
return 1;
- break;
- case 'boolean' :
+ } elseif(is_bool($value)) {
return 4;
- break;
- case 'array' :
+ } elseif(is_array($value)) {
return 64;
break;
- case 'string' :
- // Errors
- if ((strlen($value) > 0) && ($value{0} == '#')) {
- return 16;
- }
- return 2;
- break;
+ } elseif(is_string($value)) {
+ // Errors
+ if ((strlen($value) > 0) && ($value{0} == '#')) {
+ return 16;
+ }
+ return 2;
}
return 0;
} // function TYPE()
diff --git a/libraries/PHPExcel/PHPExcel/Cell.php b/libraries/PHPExcel/PHPExcel/Cell.php
index f8ebf86..b805b8d 100644
--- a/libraries/PHPExcel/PHPExcel/Cell.php
+++ b/libraries/PHPExcel/PHPExcel/Cell.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Cell
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
@@ -91,6 +91,13 @@ class PHPExcel_Cell
*/
private $_xfIndex;
+ /**
+ * Attributes of the formula
+ *
+ *
+ */
+ private $_formulaAttributes;
+
/**
* Send notification to the cache controller
@@ -98,6 +105,7 @@ class PHPExcel_Cell
**/
public function notifyCacheController() {
$this->_parent->getCellCacheController()->updateCacheData($this);
+ return $this;
}
public function detach() {
@@ -112,11 +120,11 @@ class PHPExcel_Cell
/**
* Create a new Cell
*
- * @param string $pColumn
- * @param int $pRow
- * @param mixed $pValue
- * @param string $pDataType
- * @param PHPExcel_Worksheet $pSheet
+ * @param string $pColumn
+ * @param int $pRow
+ * @param mixed $pValue
+ * @param string $pDataType
+ * @param PHPExcel_Worksheet $pSheet
* @throws Exception
*/
public function __construct($pColumn = 'A', $pRow = 1, $pValue = null, $pDataType = null, PHPExcel_Worksheet $pSheet = null)
@@ -189,7 +197,7 @@ class PHPExcel_Cell
*
* This clears the cell formula.
*
- * @param mixed $pValue Value
+ * @param mixed $pValue Value
* @return PHPExcel_Cell
*/
public function setValue($pValue = null)
@@ -203,7 +211,7 @@ class PHPExcel_Cell
/**
* Set cell value (with explicit data type given)
*
- * @param mixed $pValue Value
+ * @param mixed $pValue Value
* @param string $pDataType Explicit data type
* @return PHPExcel_Cell
* @throws Exception
@@ -242,8 +250,7 @@ class PHPExcel_Cell
// set the datatype
$this->_dataType = $pDataType;
- $this->notifyCacheController();
- return $this;
+ return $this->notifyCacheController();
}
/**
@@ -254,7 +261,7 @@ class PHPExcel_Cell
public function getCalculatedValue($resetLog=true)
{
// echo 'Cell '.$this->getCoordinate().' value is a '.$this->_dataType.' with a value of '.$this->getValue().'<br />';
- if (!is_null($this->_calculatedValue) && $this->_dataType == PHPExcel_Cell_DataType::TYPE_FORMULA) {
+ if ($this->_dataType == PHPExcel_Cell_DataType::TYPE_FORMULA) {
try {
// echo 'Cell value for '.$this->getCoordinate().' is a formula: Calculating value<br />';
$result = PHPExcel_Calculation::getInstance()->calculateCellValue($this,$resetLog);
@@ -262,28 +269,23 @@ class PHPExcel_Cell
} catch ( Exception $ex ) {
// echo 'Calculation Exception: '.$ex->getMessage().'<br />';
$result = '#N/A';
- throw(new Exception($ex->getMessage()));
+ throw(new Exception($this->getParent()->getTitle().'!'.$this->getCoordinate().' -> '.$ex->getMessage()));
}
- if ((is_string($result)) && ($result == '#Not Yet Implemented')) {
+ if ($result === '#Not Yet Implemented') {
// echo 'Returning fallback value of '.$this->_calculatedValue.' for cell '.$this->getCoordinate().'<br />';
return $this->_calculatedValue; // Fallback if calculation engine does not support the formula.
- } else {
-// echo 'Returning calculated value of '.$result.' for cell '.$this->getCoordinate().'<br />';
- return $result;
}
+// echo 'Returning calculated value of '.$result.' for cell '.$this->getCoordinate().'<br />';
+ return $result;
}
if (is_null($this->_value)) {
// echo 'Cell '.$this->getCoordinate().' has no value, formula or otherwise<br />';
return null;
- } else if ($this->_dataType != PHPExcel_Cell_DataType::TYPE_FORMULA) {
-// echo 'Cell value for '.$this->getCoordinate().' is not a formula: Returning data value of '.$this->_value.'<br />';
- return $this->_value;
- } else {
-// echo 'Cell value is a formula: Calculating value<br />';
- return PHPExcel_Calculation::getInstance()->calculateCellValue($this,$resetLog);
}
+// echo 'Cell value for '.$this->getCoordinate().' is not a formula: Returning data value of '.$this->_value.'<br />';
+ return $this->_value;
}
/**
@@ -298,8 +300,7 @@ class PHPExcel_Cell
$this->_calculatedValue = $pValue;
}
- $this->notifyCacheController();
- return $this;
+ return $this->notifyCacheController();
}
/**
@@ -332,8 +333,7 @@ class PHPExcel_Cell
{
$this->_dataType = $pDataType;
- $this->notifyCacheController();
- return $this;
+ return $this->notifyCacheController();
}
/**
@@ -361,15 +361,14 @@ class PHPExcel_Cell
throw new Exception('Cannot get data validation for cell that is not bound to a worksheet');
}
- $dataValidation = $this->_parent->getDataValidation($this->getCoordinate());
- return $dataValidation;
+ return $this->_parent->getDataValidation($this->getCoordinate());
}
/**
* Set Data validation
*
- * @param PHPExcel_Cell_DataValidation $pDataValidation
- * @throws Exception
+ * @param PHPExcel_Cell_DataValidation $pDataValidation
+ * @throws Exception
* @return PHPExcel_Cell
*/
public function setDataValidation(PHPExcel_Cell_DataValidation $pDataValidation = null)
@@ -380,45 +379,43 @@ class PHPExcel_Cell
$this->_parent->setDataValidation($this->getCoordinate(), $pDataValidation);
- $this->notifyCacheController();
- return $this;
+ return $this->notifyCacheController();
}
- /**
- * Has Hyperlink
- *
- * @return boolean
- */
- public function hasHyperlink()
- {
+ /**
+ * Has Hyperlink
+ *
+ * @return boolean
+ */
+ public function hasHyperlink()
+ {
if (!isset($this->_parent)) {
throw new Exception('Cannot check for hyperlink when cell is not bound to a worksheet');
}
return $this->_parent->hyperlinkExists($this->getCoordinate());
- }
-
- /**
- * Get Hyperlink
- *
- * @throws Exception
- * @return PHPExcel_Cell_Hyperlink
- */
- public function getHyperlink()
- {
+ }
+
+ /**
+ * Get Hyperlink
+ *
+ * @throws Exception
+ * @return PHPExcel_Cell_Hyperlink
+ */
+ public function getHyperlink()
+ {
if (!isset($this->_parent)) {
throw new Exception('Cannot get hyperlink for cell that is not bound to a worksheet');
}
- $hyperlink = $this->_parent->getHyperlink($this->getCoordinate());
- return $hyperlink;
- }
+ return $this->_parent->getHyperlink($this->getCoordinate());
+ }
/**
* Set Hyperlink
*
- * @param PHPExcel_Cell_Hyperlink $pHyperlink
- * @throws Exception
+ * @param PHPExcel_Cell_Hyperlink $pHyperlink
+ * @throws Exception
* @return PHPExcel_Cell
*/
public function setHyperlink(PHPExcel_Cell_Hyperlink $pHyperlink = null)
@@ -429,9 +426,8 @@ class PHPExcel_Cell
$this->_parent->setHyperlink($this->getCoordinate(), $pHyperlink);
- $this->notifyCacheController();
- return $this;
- }
+ return $this->notifyCacheController();
+ }
/**
* Get parent
@@ -451,94 +447,63 @@ class PHPExcel_Cell
public function rebindParent(PHPExcel_Worksheet $parent) {
$this->_parent = $parent;
- $this->notifyCacheController();
- return $this;
+ return $this->notifyCacheController();
}
/**
* Is cell in a specific range?
*
- * @param string $pRange Cell range (e.g. A1:A1)
- * @return boolean
+ * @param string $pRange Cell range (e.g. A1:A1)
+ * @return boolean
*/
public function isInRange($pRange = 'A1:A1')
{
- // Uppercase coordinate
- $pRange = strtoupper($pRange);
-
- // Extract range
- $rangeA = '';
- $rangeB = '';
- if (strpos($pRange, ':') === false) {
- $rangeA = $pRange;
- $rangeB = $pRange;
- } else {
- list($rangeA, $rangeB) = explode(':', $pRange);
- }
-
- // Calculate range outer borders
- $rangeStart = PHPExcel_Cell::coordinateFromString($rangeA);
- $rangeEnd = PHPExcel_Cell::coordinateFromString($rangeB);
+ list($rangeStart,$rangeEnd) = PHPExcel_Cell::rangeBoundaries($pRange);
- // Translate column into index
- $rangeStart[0] = PHPExcel_Cell::columnIndexFromString($rangeStart[0]) - 1;
- $rangeEnd[0] = PHPExcel_Cell::columnIndexFromString($rangeEnd[0]) - 1;
-
- // Translate properties
- $myColumn = PHPExcel_Cell::columnIndexFromString($this->getColumn()) - 1;
- $myRow = $this->getRow();
+ // Translate properties
+ $myColumn = PHPExcel_Cell::columnIndexFromString($this->getColumn()) - 1;
+ $myRow = $this->getRow();
// Verify if cell is in range
- return (
- ($rangeStart[0] <= $myColumn && $rangeEnd[0] >= $myColumn) &&
- ($rangeStart[1] <= $myRow && $rangeEnd[1] >= $myRow)
- );
+ return (($rangeStart[0] <= $myColumn) && ($rangeEnd[0] >= $myColumn) &&
+ ($rangeStart[1] <= $myRow) && ($rangeEnd[1] >= $myRow)
+ );
}
/**
* Coordinate from string
*
- * @param string $pCoordinateString
- * @return array Array containing column and row (indexes 0 and 1)
+ * @param string $pCoordinateString
+ * @return array Array containing column and row (indexes 0 and 1)
* @throws Exception
*/
public static function coordinateFromString($pCoordinateString = 'A1')
{
if (strpos($pCoordinateString,':') !== false) {
throw new Exception('Cell coordinate string can not be a range of cells.');
-
} else if ($pCoordinateString == '') {
throw new Exception('Cell coordinate can not be zero-length string.');
-
} else if (preg_match("/([$]?[A-Z]+)([$]?\d+)/", $pCoordinateString, $matches)) {
list(, $column, $row) = $matches;
return array($column, $row);
-
} else {
throw new Exception('Invalid cell coordinate.');
-
}
}
/**
* Make string coordinate absolute
*
- * @param string $pCoordinateString
- * @return string Absolute coordinate
+ * @param string $pCoordinateString
+ * @return string Absolute coordinate
* @throws Exception
*/
public static function absoluteCoordinate($pCoordinateString = 'A1')
{
if (strpos($pCoordinateString,':') === false && strpos($pCoordinateString,',') === false) {
- // Return value
- $returnValue = '';
-
// Create absolute coordinate
list($column, $row) = PHPExcel_Cell::coordinateFromString($pCoordinateString);
- $returnValue = '$' . $column . '$' . $row;
-
- // Return
- return $returnValue;
+ return '$' . $column . '$' . $row;
} else {
throw new Exception("Coordinate string should not be a cell range.");
}
@@ -547,8 +512,8 @@ class PHPExcel_Cell
/**
* Split range into coordinate strings
*
- * @param string $pRange
- * @return array Array containg one or more arrays containing one or two coordinate strings
+ * @param string $pRange
+ * @return array Array containg one or more arrays containing one or two coordinate strings
*/
public static function splitRange($pRange = 'A1:A1')
{
@@ -562,7 +527,7 @@ class PHPExcel_Cell
/**
* Build range from coordinate strings
*
- * @param array $pRange Array containg one or more arrays containing one or two coordinate strings
+ * @param array $pRange Array containg one or more arrays containing one or two coordinate strings
* @return string String representation of $pRange
* @throws Exception
*/
@@ -584,67 +549,76 @@ class PHPExcel_Cell
}
/**
- * Calculate range dimension
+ * Calculate range boundaries
*
- * @param string $pRange Cell range (e.g. A1:A1)
- * @return array Range dimension (width, height)
+ * @param string $pRange Cell range (e.g. A1:A1)
+ * @return array Range coordinates (Start Cell, End Cell) where Start Cell and End Cell are arrays (Column Number, Row Number)
*/
- public static function rangeDimension($pRange = 'A1:A1')
+ public static function rangeBoundaries($pRange = 'A1:A1')
{
// Uppercase coordinate
$pRange = strtoupper($pRange);
- // Extract range
- $rangeA = '';
- $rangeB = '';
- if (strpos($pRange, ':') === false) {
- $rangeA = $pRange;
- $rangeB = $pRange;
- } else {
- list($rangeA, $rangeB) = explode(':', $pRange);
- }
+ // Extract range
+ if (strpos($pRange, ':') === false) {
+ $rangeA = $rangeB = $pRange;
+ } else {
+ list($rangeA, $rangeB) = explode(':', $pRange);
+ }
- // Calculate range outer borders
- $rangeStart = PHPExcel_Cell::coordinateFromString($rangeA);
- $rangeEnd = PHPExcel_Cell::coordinateFromString($rangeB);
+ // Calculate range outer borders
+ $rangeStart = PHPExcel_Cell::coordinateFromString($rangeA);
+ $rangeEnd = PHPExcel_Cell::coordinateFromString($rangeB);
- // Translate column into index
- $rangeStart[0] = PHPExcel_Cell::columnIndexFromString($rangeStart[0]);
- $rangeEnd[0] = PHPExcel_Cell::columnIndexFromString($rangeEnd[0]);
+ // Translate column into index
+ $rangeStart[0] = PHPExcel_Cell::columnIndexFromString($rangeStart[0]);
+ $rangeEnd[0] = PHPExcel_Cell::columnIndexFromString($rangeEnd[0]);
- return array( ($rangeEnd[0] - $rangeStart[0] + 1), ($rangeEnd[1] - $rangeStart[1] + 1) );
+ return array($rangeStart, $rangeEnd);
+ }
+
+ /**
+ * Calculate range dimension
+ *
+ * @param string $pRange Cell range (e.g. A1:A1)
+ * @return array Range dimension (width, height)
+ */
+ public static function rangeDimension($pRange = 'A1:A1')
+ {
+ // Calculate range outer borders
+ list($rangeStart,$rangeEnd) = PHPExcel_Cell::rangeBoundaries($pRange);
+
+ return array( ($rangeEnd[0] - $rangeStart[0] + 1), ($rangeEnd[1] - $rangeStart[1] + 1) );
}
/**
* Calculate range boundaries
*
- * @param string $pRange Cell range (e.g. A1:A1)
- * @return array Range boundaries (staring Column, starting Row, Final Column, Final Row)
+ * @param string $pRange Cell range (e.g. A1:A1)
+ * @return array Range boundaries (staring Column, starting Row, Final Column, Final Row)
*/
public static function getRangeBoundaries($pRange = 'A1:A1')
{
// Uppercase coordinate
$pRange = strtoupper($pRange);
- // Extract range
- $rangeA = '';
- $rangeB = '';
- if (strpos($pRange, ':') === false) {
- $rangeA = $pRange;
- $rangeB = $pRange;
- } else {
- list($rangeA, $rangeB) = explode(':', $pRange);
- }
+ // Extract range
+ if (strpos($pRange, ':') === false) {
+ $rangeA = $pRange;
+ $rangeB = $pRange;
+ } else {
+ list($rangeA, $rangeB) = explode(':', $pRange);
+ }
- return array( self::coordinateFromString($rangeA), self::coordinateFromString($rangeB));
+ return array( self::coordinateFromString($rangeA), self::coordinateFromString($rangeB));
}
/**
* Column index from string
*
- * @param string $pString
- * @return int Column index (base 1 !!!)
- * @throws Exception
+ * @param string $pString
+ * @return int Column index (base 1 !!!)
+ * @throws Exception
*/
public static function columnIndexFromString($pString = 'A')
{
@@ -684,14 +658,14 @@ class PHPExcel_Cell
if ($pColumnIndex < 26) {
return chr(65 + $pColumnIndex);
}
- return PHPExcel_Cell::stringFromColumnIndex((int)($pColumnIndex / 26) -1).chr(65 + $pColumnIndex%26) ;
+ return PHPExcel_Cell::stringFromColumnIndex((int)($pColumnIndex / 26) -1).chr(65 + $pColumnIndex%26) ;
}
/**
* Extract all cell references in range
*
- * @param string $pRange Range (e.g. A1 or A1:A10 or A1:A10 A100:A1000)
- * @return array Array containing single cell references
+ * @param string $pRange Range (e.g. A1 or A1:A10 or A1:A10 A100:A1000)
+ * @return array Array containing single cell references
*/
public static function extractAllCellReferencesInRange($pRange = 'A1') {
// Returnvalue
@@ -731,17 +705,17 @@ class PHPExcel_Cell
$rangeStart = $rangeEnd = '';
$startingCol = $startingRow = $endingCol = $endingRow = 0;
- list($rangeStart, $rangeEnd) = $range[$i];
+ list($rangeStart, $rangeEnd) = $range[$i];
list($startingCol, $startingRow) = PHPExcel_Cell::coordinateFromString($rangeStart);
- list($endingCol, $endingRow) = PHPExcel_Cell::coordinateFromString($rangeEnd);
+ list($endingCol, $endingRow) = PHPExcel_Cell::coordinateFromString($rangeEnd);
// Conversions...
- $startingCol = PHPExcel_Cell::columnIndexFromString($startingCol);
- $endingCol = PHPExcel_Cell::columnIndexFromString($endingCol);
+ $startingCol = PHPExcel_Cell::columnIndexFromString($startingCol);
+ $endingCol = PHPExcel_Cell::columnIndexFromString($endingCol);
// Current data
- $currentCol = --$startingCol;
- $currentRow = $startingRow;
+ $currentCol = --$startingCol;
+ $currentRow = $startingRow;
// Loop cells
while ($currentCol < $endingCol) {
@@ -763,9 +737,9 @@ class PHPExcel_Cell
/**
* Compare 2 cells
*
- * @param PHPExcel_Cell $a Cell a
- * @param PHPExcel_Cell $a Cell b
- * @return int Result of comparison (always -1 or 1, never zero!)
+ * @param PHPExcel_Cell $a Cell a
+ * @param PHPExcel_Cell $a Cell b
+ * @return int Result of comparison (always -1 or 1, never zero!)
*/
public static function compareCells(PHPExcel_Cell $a, PHPExcel_Cell $b)
{
@@ -813,7 +787,7 @@ class PHPExcel_Cell
public function __clone() {
$vars = get_object_vars($this);
foreach ($vars as $key => $value) {
- if (is_object($value)) {
+ if ((is_object($value)) && ($key != '_parent')) {
$this->$key = clone $value;
} else {
$this->$key = $value;
@@ -841,8 +815,20 @@ class PHPExcel_Cell
{
$this->_xfIndex = $pValue;
- $this->notifyCacheController();
+ return $this->notifyCacheController();
+ }
+
+
+ public function setFormulaAttributes($pAttributes)
+ {
+ $this->_formulaAttributes = $pAttributes;
return $this;
}
+ public function getFormulaAttributes()
+ {
+ return $this->_formulaAttributes;
+ }
+
}
+
diff --git a/libraries/PHPExcel/PHPExcel/Cell/AdvancedValueBinder.php b/libraries/PHPExcel/PHPExcel/Cell/AdvancedValueBinder.php
index 7e305c5..5126811 100644
--- a/libraries/PHPExcel/PHPExcel/Cell/AdvancedValueBinder.php
+++ b/libraries/PHPExcel/PHPExcel/Cell/AdvancedValueBinder.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Cell
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/Cell/DataType.php b/libraries/PHPExcel/PHPExcel/Cell/DataType.php
index 1496d83..d542cab 100644
--- a/libraries/PHPExcel/PHPExcel/Cell/DataType.php
+++ b/libraries/PHPExcel/PHPExcel/Cell/DataType.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Cell
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/Cell/DataValidation.php b/libraries/PHPExcel/PHPExcel/Cell/DataValidation.php
index 2c3913c..db1b497 100644
--- a/libraries/PHPExcel/PHPExcel/Cell/DataValidation.php
+++ b/libraries/PHPExcel/PHPExcel/Cell/DataValidation.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Cell
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/Cell/DefaultValueBinder.php b/libraries/PHPExcel/PHPExcel/Cell/DefaultValueBinder.php
index e49449f..ad5ae46 100644
--- a/libraries/PHPExcel/PHPExcel/Cell/DefaultValueBinder.php
+++ b/libraries/PHPExcel/PHPExcel/Cell/DefaultValueBinder.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Cell
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/Cell/Hyperlink.php b/libraries/PHPExcel/PHPExcel/Cell/Hyperlink.php
index eab9297..994cef5 100644
--- a/libraries/PHPExcel/PHPExcel/Cell/Hyperlink.php
+++ b/libraries/PHPExcel/PHPExcel/Cell/Hyperlink.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Cell
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/Cell/IValueBinder.php b/libraries/PHPExcel/PHPExcel/Cell/IValueBinder.php
index 4bd1ef2..c14d630 100644
--- a/libraries/PHPExcel/PHPExcel/Cell/IValueBinder.php
+++ b/libraries/PHPExcel/PHPExcel/Cell/IValueBinder.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Cell
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/Comment.php b/libraries/PHPExcel/PHPExcel/Comment.php
index 735e78c..432cfe1 100644
--- a/libraries/PHPExcel/PHPExcel/Comment.php
+++ b/libraries/PHPExcel/PHPExcel/Comment.php
@@ -22,7 +22,7 @@
* @package PHPExcel
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/DocumentProperties.php b/libraries/PHPExcel/PHPExcel/DocumentProperties.php
index 64b0c2a..d6d928e 100644
--- a/libraries/PHPExcel/PHPExcel/DocumentProperties.php
+++ b/libraries/PHPExcel/PHPExcel/DocumentProperties.php
@@ -8,12 +8,12 @@
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
- *
+ *
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
- *
+ *
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
@@ -22,7 +22,7 @@
* @package PHPExcel
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
@@ -41,70 +41,70 @@ class PHPExcel_DocumentProperties
* @var string
*/
private $_creator;
-
+
/**
* LastModifiedBy
*
* @var string
*/
private $_lastModifiedBy;
-
+
/**
* Created
*
* @var datetime
*/
private $_created;
-
+
/**
* Modified
*
* @var datetime
*/
private $_modified;
-
+
/**
* Title
*
* @var string
*/
private $_title;
-
+
/**
* Description
*
* @var string
*/
private $_description;
-
+
/**
* Subject
*
* @var string
*/
private $_subject;
-
+
/**
* Keywords
*
* @var string
*/
private $_keywords;
-
+
/**
* Category
*
* @var string
*/
private $_category;
-
+
/**
* Company
- *
+ *
* @var string
*/
private $_company;
-
+
/**
* Create a new PHPExcel_DocumentProperties
*/
@@ -120,9 +120,10 @@ class PHPExcel_DocumentProperties
$this->_description = '';
$this->_keywords = '';
$this->_category = '';
+ $this->_manager = '';
$this->_company = 'Microsoft Corporation';
}
-
+
/**
* Get Creator
*
@@ -131,7 +132,7 @@ class PHPExcel_DocumentProperties
public function getCreator() {
return $this->_creator;
}
-
+
/**
* Set Creator
*
@@ -142,7 +143,7 @@ class PHPExcel_DocumentProperties
$this->_creator = $pValue;
return $this;
}
-
+
/**
* Get Last Modified By
*
@@ -151,7 +152,7 @@ class PHPExcel_DocumentProperties
public function getLastModifiedBy() {
return $this->_lastModifiedBy;
}
-
+
/**
* Set Last Modified By
*
@@ -162,7 +163,7 @@ class PHPExcel_DocumentProperties
$this->_lastModifiedBy = $pValue;
return $this;
}
-
+
/**
* Get Created
*
@@ -171,7 +172,7 @@ class PHPExcel_DocumentProperties
public function getCreated() {
return $this->_created;
}
-
+
/**
* Set Created
*
@@ -185,7 +186,7 @@ class PHPExcel_DocumentProperties
$this->_created = $pValue;
return $this;
}
-
+
/**
* Get Modified
*
@@ -194,7 +195,7 @@ class PHPExcel_DocumentProperties
public function getModified() {
return $this->_modified;
}
-
+
/**
* Set Modified
*
@@ -208,7 +209,7 @@ class PHPExcel_DocumentProperties
$this->_modified = $pValue;
return $this;
}
-
+
/**
* Get Title
*
@@ -217,7 +218,7 @@ class PHPExcel_DocumentProperties
public function getTitle() {
return $this->_title;
}
-
+
/**
* Set Title
*
@@ -228,7 +229,7 @@ class PHPExcel_DocumentProperties
$this->_title = $pValue;
return $this;
}
-
+
/**
* Get Description
*
@@ -237,7 +238,7 @@ class PHPExcel_DocumentProperties
public function getDescription() {
return $this->_description;
}
-
+
/**
* Set Description
*
@@ -248,7 +249,7 @@ class PHPExcel_DocumentProperties
$this->_description = $pValue;
return $this;
}
-
+
/**
* Get Subject
*
@@ -257,7 +258,7 @@ class PHPExcel_DocumentProperties
public function getSubject() {
return $this->_subject;
}
-
+
/**
* Set Subject
*
@@ -268,7 +269,7 @@ class PHPExcel_DocumentProperties
$this->_subject = $pValue;
return $this;
}
-
+
/**
* Get Keywords
*
@@ -277,7 +278,7 @@ class PHPExcel_DocumentProperties
public function getKeywords() {
return $this->_keywords;
}
-
+
/**
* Set Keywords
*
@@ -288,7 +289,7 @@ class PHPExcel_DocumentProperties
$this->_keywords = $pValue;
return $this;
}
-
+
/**
* Get Category
*
@@ -297,7 +298,7 @@ class PHPExcel_DocumentProperties
public function getCategory() {
return $this->_category;
}
-
+
/**
* Set Category
*
@@ -308,7 +309,7 @@ class PHPExcel_DocumentProperties
$this->_category = $pValue;
return $this;
}
-
+
/**
* Get Company
*
@@ -317,18 +318,38 @@ class PHPExcel_DocumentProperties
public function getCompany() {
return $this->_company;
}
-
+
/**
* Set Company
*
* @param string $pValue
- * @return PHPPowerPoint_DocumentProperties
+ * @return PHPExcel_DocumentProperties
*/
public function setCompany($pValue = '') {
$this->_company = $pValue;
return $this;
}
-
+
+ /**
+ * Get Manager
+ *
+ * @return string
+ */
+ public function getManager() {
+ return $this->_manager;
+ }
+
+ /**
+ * Set Manager
+ *
+ * @param string $pValue
+ * @return PHPExcel_DocumentProperties
+ */
+ public function setManager($pValue = '') {
+ $this->_manager = $pValue;
+ return $this;
+ }
+
/**
* Implement PHP __clone to create a deep clone, not just a shallow copy.
*/
diff --git a/libraries/PHPExcel/PHPExcel/DocumentSecurity.php b/libraries/PHPExcel/PHPExcel/DocumentSecurity.php
index 1522189..a6de9ee 100644
--- a/libraries/PHPExcel/PHPExcel/DocumentSecurity.php
+++ b/libraries/PHPExcel/PHPExcel/DocumentSecurity.php
@@ -22,7 +22,7 @@
* @package PHPExcel
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/HashTable.php b/libraries/PHPExcel/PHPExcel/HashTable.php
index bd526b6..2191672 100644
--- a/libraries/PHPExcel/PHPExcel/HashTable.php
+++ b/libraries/PHPExcel/PHPExcel/HashTable.php
@@ -22,7 +22,7 @@
* @package PHPExcel
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/IComparable.php b/libraries/PHPExcel/PHPExcel/IComparable.php
index 3c175d1..0a51b06 100644
--- a/libraries/PHPExcel/PHPExcel/IComparable.php
+++ b/libraries/PHPExcel/PHPExcel/IComparable.php
@@ -20,7 +20,7 @@
* @package PHPExcel
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/IOFactory.php b/libraries/PHPExcel/PHPExcel/IOFactory.php
index 21fd23c..a3650be 100644
--- a/libraries/PHPExcel/PHPExcel/IOFactory.php
+++ b/libraries/PHPExcel/PHPExcel/IOFactory.php
@@ -22,7 +22,7 @@
* @package PHPExcel
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/NamedRange.php b/libraries/PHPExcel/PHPExcel/NamedRange.php
index 1aa5236..992c2fa 100644
--- a/libraries/PHPExcel/PHPExcel/NamedRange.php
+++ b/libraries/PHPExcel/PHPExcel/NamedRange.php
@@ -22,7 +22,7 @@
* @package PHPExcel
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/Reader/CSV.php b/libraries/PHPExcel/PHPExcel/Reader/CSV.php
index 5fa83bd..086c948 100644
--- a/libraries/PHPExcel/PHPExcel/Reader/CSV.php
+++ b/libraries/PHPExcel/PHPExcel/Reader/CSV.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Reader
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/Reader/DefaultReadFilter.php b/libraries/PHPExcel/PHPExcel/Reader/DefaultReadFilter.php
index c6620e7..e83ac9a 100644
--- a/libraries/PHPExcel/PHPExcel/Reader/DefaultReadFilter.php
+++ b/libraries/PHPExcel/PHPExcel/Reader/DefaultReadFilter.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Reader
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/Reader/Excel2003XML.php b/libraries/PHPExcel/PHPExcel/Reader/Excel2003XML.php
index 96e3436..99f00ed 100644
--- a/libraries/PHPExcel/PHPExcel/Reader/Excel2003XML.php
+++ b/libraries/PHPExcel/PHPExcel/Reader/Excel2003XML.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Reader
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
@@ -557,6 +557,11 @@ class PHPExcel_Reader_Excel2003XML implements PHPExcel_Reader_IReader
$cellDataFormula = '';
if (isset($cell_ss['Formula'])) {
$cellDataFormula = $cell_ss['Formula'];
+ // added this as a check for array formulas
+ if (isset($cell_ss['ArrayRange'])) {
+ $cellDataCSEFormula = $cell_ss['ArrayRange'];
+// echo "found an array formula at ".$columnID.$rowID."<br />";
+ }
$hasCalculatedValue = true;
}
if (isset($cell->Data)) {
diff --git a/libraries/PHPExcel/PHPExcel/Reader/Excel2007.php b/libraries/PHPExcel/PHPExcel/Reader/Excel2007.php
index 031dee5..c4e3e41 100644
--- a/libraries/PHPExcel/PHPExcel/Reader/Excel2007.php
+++ b/libraries/PHPExcel/PHPExcel/Reader/Excel2007.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Reader
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
@@ -71,6 +71,9 @@ class PHPExcel_Reader_Excel2007 implements PHPExcel_Reader_IReader
*/
private $_readFilter = null;
+
+ private $_referenceHelper = null;
+
/**
* Read data only?
*
@@ -150,6 +153,7 @@ class PHPExcel_Reader_Excel2007 implements PHPExcel_Reader_IReader
*/
public function __construct() {
$this->_readFilter = new PHPExcel_Reader_DefaultReadFilter();
+ $this->_referenceHelper = PHPExcel_ReferenceHelper::getInstance();
}
/**
@@ -245,12 +249,11 @@ class PHPExcel_Reader_Excel2007 implements PHPExcel_Reader_IReader
$difference[0] = PHPExcel_Cell::columnIndexFromString($current[0]) - PHPExcel_Cell::columnIndexFromString($master[0]);
$difference[1] = $current[1] - $master[1];
- $helper = PHPExcel_ReferenceHelper::getInstance();
- $value = $helper->updateFormulaReferences( $sharedFormulas[$instance]['formula'],
- 'A1',
- $difference[0],
- $difference[1]
- );
+ $value = $this->_referenceHelper->updateFormulaReferences( $sharedFormulas[$instance]['formula'],
+ 'A1',
+ $difference[0],
+ $difference[1]
+ );
// echo 'Adjusted Formula is '.$value.'<br />';
}
}
@@ -311,7 +314,7 @@ class PHPExcel_Reader_Excel2007 implements PHPExcel_Reader_IReader
switch ($rel["Type"]) {
case "http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-…":
$xmlCore = simplexml_load_string($this->_getFromZipArchive($zip, "{$rel['Target']}"));
- if ($xmlCore) {
+ if (is_object($xmlCore)) {
$xmlCore->registerXPathNamespace("dc", "http://purl.org/dc/elements/1.1/");
$xmlCore->registerXPathNamespace("dcterms", "http://purl.org/dc/terms/");
$xmlCore->registerXPathNamespace("cp", "http://schemas.openxmlformats.org/package/2006/metadata/core-properties");
@@ -328,6 +331,25 @@ class PHPExcel_Reader_Excel2007 implements PHPExcel_Reader_IReader
}
break;
+ case "http://schemas.openxmlformats.org/officeDocument/2006/relationships/extende…":
+ $xmlCore = simplexml_load_string($this->_getFromZipArchive($zip, "{$rel['Target']}"));
+ if (is_object($xmlCore)) {
+ $docProps = $excel->getProperties();
+ if (isset($xmlCore->Company))
+ $docProps->setCompany((string) $xmlCore->Company);
+ if (isset($xmlCore->Manager))
+ $docProps->setManager((string) $xmlCore->Manager);
+ }
+ break;
+
+ case "http://schemas.openxmlformats.org/officeDocument/2006/relationships/custom-…":
+ $xmlCore = simplexml_load_string($this->_getFromZipArchive($zip, "{$rel['Target']}"));
+ if (is_object($xmlCore)) {
+ $xmlCore->registerXPathNamespace("vt", "http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes");
+ $docProps = $excel->getProperties();
+ }
+ break;
+
case "http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeD…":
$dir = dirname($rel["Target"]);
$relsWorkbook = simplexml_load_string($this->_getFromZipArchive($zip, "$dir/_rels/" . basename($rel["Target"]) . ".rels")); //~ http://schemas.openxmlformats.org/package/2006/relationships");
@@ -692,6 +714,11 @@ class PHPExcel_Reader_Excel2007 implements PHPExcel_Reader_IReader
} else {
// Formula
$this->_castToFormula($c,$r,$cellDataType,$value,$calculatedValue,$sharedFormulas,'_castToBool');
+ if (isset($c->f['t'])) {
+ $att = array();
+ $att = $c->f;
+ $docSheet->getCell($r)->setFormulaAttributes($att);
+ }
// echo '$calculatedValue = '.$calculatedValue.'<br />';
}
break;
@@ -1276,10 +1303,14 @@ class PHPExcel_Reader_Excel2007 implements PHPExcel_Reader_IReader
break;
case '_xlnm.Print_Area':
- $range = explode('!', $extractedRange);
- $extractedRange = isset($range[1]) ? $range[1] : $range[0];
-
- $docSheet->getPageSetup()->setPrintArea($extractedRange);
+ $rangeSets = explode(',', $extractedRange); // FIXME: what if sheetname contains comma?
+ $newRangeSets = array();
+ foreach($rangeSets as $rangeSet) {
+ $range = explode('!', $rangeSet); // FIXME: what if sheetname contains exclamation mark?
+ $rangeSet = isset($range[1]) ? $range[1] : $range[0];
+ $newRangeSets[] = str_replace('$', '', $rangeSet);
+ }
+ $docSheet->getPageSetup()->setPrintArea(implode(',',$newRangeSets));
break;
default:
diff --git a/libraries/PHPExcel/PHPExcel/Reader/Excel5.php b/libraries/PHPExcel/PHPExcel/Reader/Excel5.php
index a4f20e7..5c71ee8 100644
--- a/libraries/PHPExcel/PHPExcel/Reader/Excel5.php
+++ b/libraries/PHPExcel/PHPExcel/Reader/Excel5.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Reader_Excel5
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
// Original file header of ParseXL (used as the base for this class):
@@ -834,7 +834,7 @@ class PHPExcel_Reader_Excel5 implements PHPExcel_Reader_IReader
// Foo!$C$7:$J$66
// Bar!$A$1:$IV$2
- $explodes = explode('!', $range);
+ $explodes = explode('!', $range); // FIXME: what if sheetname contains exclamation mark?
$sheetName = $explodes[0];
if (count($explodes) == 2) {
@@ -4202,22 +4202,22 @@ class PHPExcel_Reader_Excel5 implements PHPExcel_Reader_IReader
// 1. BITMAPCOREHEADER
// offset: 0; size: 4; bcSize, Specifies the number of bytes required by the structure
$bcSize = $this->_GetInt4d($iData, 0);
- var_dump($bcSize);
+// var_dump($bcSize);
// offset: 4; size: 2; bcWidth, specifies the width of the bitmap, in pixels
$bcWidth = $this->_GetInt2d($iData, 4);
- var_dump($bcWidth);
+// var_dump($bcWidth);
// offset: 6; size: 2; bcHeight, specifies the height of the bitmap, in pixels.
$bcHeight = $this->_GetInt2d($iData, 6);
- var_dump($bcHeight);
+// var_dump($bcHeight);
$ih = imagecreatetruecolor($bcWidth, $bcHeight);
// offset: 8; size: 2; bcPlanes, specifies the number of planes for the target device. This value must be 1
// offset: 10; size: 2; bcBitCount specifies the number of bits-per-pixel. This value must be 1, 4, 8, or 24
$bcBitCount = $this->_GetInt2d($iData, 10);
- var_dump($bcBitCount);
+// var_dump($bcBitCount);
$rgbString = substr($iData, 12);
$rgbTriples = array();
@@ -4602,24 +4602,24 @@ class PHPExcel_Reader_Excel5 implements PHPExcel_Reader_IReader
case 0x12: $name = 'tUplus'; $size = 1; $data = '+'; break;
case 0x13: $name = 'tUminus'; $size = 1; $data = '-'; break;
case 0x14: $name = 'tPercent'; $size = 1; $data = '%'; break;
- case 0x15: // parenthesis
+ case 0x15: // parenthesis
$name = 'tParen';
$size = 1;
$data = null;
break;
- case 0x16: // missing argument
+ case 0x16: // missing argument
$name = 'tMissArg';
$size = 1;
$data = '';
break;
- case 0x17: // string
+ case 0x17: // string
$name = 'tStr';
// offset: 1; size: var; Unicode string, 8-bit string length
$string = $this->_readUnicodeStringShort(substr($formulaData, 1));
$size = 1 + $string['size'];
$data = $this->_UTF8toExcelDoubleQuoted($string['value']);
break;
- case 0x19: // Special attribute
+ case 0x19: // Special attribute
// offset: 1; size: 1; attribute type flags:
switch (ord($formulaData[1])) {
case 0x01:
@@ -4689,39 +4689,42 @@ class PHPExcel_Reader_Excel5 implements PHPExcel_Reader_IReader
break;
}
break;
- case 0x1C: // error code
+ case 0x1C: // error code
// offset: 1; size: 1; error code
$name = 'tErr';
$size = 2;
$data = $this->_mapErrorCode(ord($formulaData[1]));
break;
- case 0x1D: // boolean
+ case 0x1D: // boolean
// offset: 1; size: 1; 0 = false, 1 = true;
$name = 'tBool';
$size = 2;
$data = ord($formulaData[1]) ? 'TRUE' : 'FALSE';
break;
- case 0x1E: // integer
+ case 0x1E: // integer
// offset: 1; size: 2; unsigned 16-bit integer
$name = 'tInt';
$size = 3;
$data = $this->_GetInt2d($formulaData, 1);
break;
- case 0x1F: // number
+ case 0x1F: // number
// offset: 1; size: 8;
$name = 'tNum';
$size = 9;
$data = $this->_extractNumber(substr($formulaData, 1));
$data = str_replace(',', '.', (string)$data); // in case non-English locale
break;
- case 0x40: // array constant
- case 0x60: // array constant
+ case 0x20: // array constant
+ case 0x40:
+ case 0x60:
// offset: 1; size: 7; not used
$name = 'tArray';
$size = 8;
$data = null;
break;
- case 0x41: // function with fixed number of arguments
+ case 0x21: // function with fixed number of arguments
+ case 0x41:
+ case 0x61:
$name = 'tFunc';
$size = 3;
// offset: 1; size: 2; index to built-in sheet function
@@ -4891,9 +4894,9 @@ class PHPExcel_Reader_Excel5 implements PHPExcel_Reader_IReader
}
$data = array('function' => $function, 'args' => $args);
break;
- case 0x22: // function with variable number of arguments
- case 0x42: // function with variable number of arguments
- case 0x62: // function with variable number of arguments
+ case 0x22: // function with variable number of arguments
+ case 0x42:
+ case 0x62:
$name = 'tFuncV';
$size = 4;
// offset: 1; size: 1; number of arguments
@@ -4995,8 +4998,9 @@ class PHPExcel_Reader_Excel5 implements PHPExcel_Reader_IReader
}
$data = array('function' => $function, 'args' => $args);
break;
- case 0x23: // index to defined name
+ case 0x23: // index to defined name
case 0x43:
+ case 0x63:
$name = 'tName';
$size = 5;
// offset: 1; size: 2; one-based index to definedname record
@@ -5004,22 +5008,23 @@ class PHPExcel_Reader_Excel5 implements PHPExcel_Reader_IReader
// offset: 2; size: 2; not used
$data = $this->_definedname[$definedNameIndex]['name'];
break;
- case 0x24: // single cell reference e.g. A5
+ case 0x24: // single cell reference e.g. A5
case 0x44:
case 0x64:
$name = 'tRef';
$size = 5;
$data = $this->_readBIFF8CellAddress(substr($formulaData, 1, 4));
break;
- case 0x25: // cell range reference to cells in the same sheet
+ case 0x25: // cell range reference to cells in the same sheet (2d)
case 0x45:
case 0x65:
$name = 'tArea';
$size = 9;
$data = $this->_readBIFF8CellRangeAddress(substr($formulaData, 1, 8));
break;
- case 0x26:
+ case 0x26: // Constant reference sub-expression
case 0x46:
+ case 0x66:
$name = 'tMemArea';
// offset: 1; size: 4; not used
// offset: 5; size: 2; size of the following subexpression
@@ -5027,7 +5032,9 @@ class PHPExcel_Reader_Excel5 implements PHPExcel_Reader_IReader
$size = 7 + $subSize;
$data = $this->_getFormulaFromData(substr($formulaData, 7, $subSize));
break;
+ case 0x27: // Deleted constant reference sub-expression
case 0x47:
+ case 0x67:
$name = 'tMemErr';
// offset: 1; size: 4; not used
// offset: 5; size: 2; size of the following subexpression
@@ -5035,16 +5042,17 @@ class PHPExcel_Reader_Excel5 implements PHPExcel_Reader_IReader
$size = 7 + $subSize;
$data = $this->_getFormulaFromData(substr($formulaData, 7, $subSize));
break;
- case 0x29:
+ case 0x29: // Variable reference sub-expression
case 0x49:
+ case 0x69:
$name = 'tMemFunc';
- // offset: 1; size: 2; size of the following subexpression
+ // offset: 1; size: 2; size of the following sub-expression
$subSize = $this->_GetInt2d($formulaData, 1);
$size = 3 + $subSize;
$data = $this->_getFormulaFromData(substr($formulaData, 3, $subSize));
break;
- case 0x2C: // Relative reference, used in shared formulas and some other places
+ case 0x2C: // Relative 2d cell reference reference, used in shared formulas and some other places
case 0x4C:
case 0x6C:
$name = 'tRefN';
@@ -5052,7 +5060,7 @@ class PHPExcel_Reader_Excel5 implements PHPExcel_Reader_IReader
$data = $this->_readBIFF8CellAddressB(substr($formulaData, 1, 4), $baseCell);
break;
- case 0x2D:
+ case 0x2D: // Relative 2d range reference
case 0x4D:
case 0x6D:
$name = 'tAreaN';
@@ -5060,7 +5068,7 @@ class PHPExcel_Reader_Excel5 implements PHPExcel_Reader_IReader
$data = $this->_readBIFF8CellRangeAddressB(substr($formulaData, 1, 8), $baseCell);
break;
- case 0x39:
+ case 0x39: // External name
case 0x59:
case 0x79:
$name = 'tNameX';
@@ -5073,8 +5081,9 @@ class PHPExcel_Reader_Excel5 implements PHPExcel_Reader_IReader
// offset: 5; size: 2; not used
break;
- case 0x3A: // 3d reference to cell
+ case 0x3A: // 3d reference to cell
case 0x5A:
+ case 0x7A:
$name = 'tRef3d';
$size = 7;
@@ -5085,15 +5094,15 @@ class PHPExcel_Reader_Excel5 implements PHPExcel_Reader_IReader
$cellAddress = $this->_readBIFF8CellAddress(substr($formulaData, 3, 4));
$data = "$sheetRange!$cellAddress";
-
} catch (Exception $e) {
// deleted sheet reference
$data = '#REF!';
}
break;
- case 0x3B: // 3d reference to cell range
+ case 0x3B: // 3d reference to cell range
case 0x5B:
+ case 0x7B:
$name = 'tArea3d';
$size = 11;
@@ -5104,15 +5113,13 @@ class PHPExcel_Reader_Excel5 implements PHPExcel_Reader_IReader
$cellRangeAddress = $this->_readBIFF8CellRangeAddress(substr($formulaData, 3, 8));
$data = "$sheetRange!$cellRangeAddress";
-
} catch (Exception $e) {
// deleted sheet reference
$data = '#REF!';
-
}
break;
- // case 0x39: // don't know how to deal with
+ // Unknown cases // don't know how to deal with
default:
throw new Exception('Unrecognized token ' . sprintf('%02X', $id) . ' in formula');
break;
diff --git a/libraries/PHPExcel/PHPExcel/Reader/Excel5/Escher.php b/libraries/PHPExcel/PHPExcel/Reader/Excel5/Escher.php
index 0418dd7..b7c67e9 100644
--- a/libraries/PHPExcel/PHPExcel/Reader/Excel5/Escher.php
+++ b/libraries/PHPExcel/PHPExcel/Reader/Excel5/Escher.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Reader_Excel5
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
/**
diff --git a/libraries/PHPExcel/PHPExcel/Reader/IReadFilter.php b/libraries/PHPExcel/PHPExcel/Reader/IReadFilter.php
index c397d56..00fa2e8 100644
--- a/libraries/PHPExcel/PHPExcel/Reader/IReadFilter.php
+++ b/libraries/PHPExcel/PHPExcel/Reader/IReadFilter.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Reader
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/Reader/IReader.php b/libraries/PHPExcel/PHPExcel/Reader/IReader.php
index ef5beac..e1cdc43 100644
--- a/libraries/PHPExcel/PHPExcel/Reader/IReader.php
+++ b/libraries/PHPExcel/PHPExcel/Reader/IReader.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Reader
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/Reader/OOCalc.php b/libraries/PHPExcel/PHPExcel/Reader/OOCalc.php
index 8a1407a..a1ddf91 100644
--- a/libraries/PHPExcel/PHPExcel/Reader/OOCalc.php
+++ b/libraries/PHPExcel/PHPExcel/Reader/OOCalc.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Reader
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
@@ -242,6 +242,9 @@ class PHPExcel_Reader_OOCalc implements PHPExcel_Reader_IReader
throw new Exception("Could not open " . $pFilename . " for reading! File does not exist.");
}
+ $timezoneObj = new DateTimeZone('Europe/London');
+ $GMT = new DateTimeZone('UTC');
+
$zip = new ZipArchive;
if ($zip->open($pFilename) === true) {
// echo '<h1>Meta Information</h1>';
@@ -338,6 +341,11 @@ class PHPExcel_Reader_OOCalc implements PHPExcel_Reader_IReader
foreach($worksheetData as $key => $rowData) {
// echo '<b>'.$key.'</b><br />';
switch ($key) {
+ case 'table-header-rows':
+ foreach ($rowData as $key=>$cellData) {
+ $rowData = $cellData;
+ break;
+ }
case 'table-row' :
$columnID = 'A';
foreach($rowData as $key => $cellData) {
@@ -387,7 +395,8 @@ class PHPExcel_Reader_OOCalc implements PHPExcel_Reader_IReader
break;
case 'date' :
$type = PHPExcel_Cell_DataType::TYPE_NUMERIC;
- $dateObj = date_create($cellDataOfficeAttributes['date-value']);
+ $dateObj = new DateTime($cellDataOfficeAttributes['date-value'], $GMT);
+ $dateObj->setTimeZone($timezoneObj);
list($year,$month,$day,$hour,$minute,$second) = explode(' ',$dateObj->format('Y m d H i s'));
$dataValue = PHPExcel_Shared_Date::FormattedPHPToExcel($year,$month,$day,$hour,$minute,$second);
if ($dataValue != floor($dataValue)) {
@@ -418,7 +427,7 @@ class PHPExcel_Reader_OOCalc implements PHPExcel_Reader_IReader
if (($key % 2) == 0) {
$value = preg_replace('/\[\.(.*):\.(.*)\]/Ui','$1:$2',$value);
$value = preg_replace('/\[\.(.*)\]/Ui','$1',$value);
- $value = PHPExcel_Calculation::_translateSeparator(';',',',$value);
+ $value = PHPExcel_Calculation::_translateSeparator(';',',',$value,$inBraces);
}
}
unset($value);
diff --git a/libraries/PHPExcel/PHPExcel/Reader/SYLK.php b/libraries/PHPExcel/PHPExcel/Reader/SYLK.php
index ec8a4d4..790aa2f 100644
--- a/libraries/PHPExcel/PHPExcel/Reader/SYLK.php
+++ b/libraries/PHPExcel/PHPExcel/Reader/SYLK.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Reader
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/Reader/Serialized.php b/libraries/PHPExcel/PHPExcel/Reader/Serialized.php
index 88f2892..04b14f2 100644
--- a/libraries/PHPExcel/PHPExcel/Reader/Serialized.php
+++ b/libraries/PHPExcel/PHPExcel/Reader/Serialized.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Reader
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/ReferenceHelper.php b/libraries/PHPExcel/PHPExcel/ReferenceHelper.php
index cb9673c..7a37ed0 100644
--- a/libraries/PHPExcel/PHPExcel/ReferenceHelper.php
+++ b/libraries/PHPExcel/PHPExcel/ReferenceHelper.php
@@ -22,7 +22,7 @@
* @package PHPExcel
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
@@ -35,6 +35,13 @@
*/
class PHPExcel_ReferenceHelper
{
+ /** Constants */
+ /** Regular Expressions */
+ const REFHELPER_REGEXP_CELLREF = '((\w*|\'[^!]*\')!)?(?<![:a-z\$])(\$?[a-z]{1,3}\$?\d+)(?=[^:!\d\'])';
+ const REFHELPER_REGEXP_CELLRANGE = '((\w*|\'[^!]*\')!)?(\$?[a-z]{1,3}\$?\d+):(\$?[a-z]{1,3}\$?\d+)';
+ const REFHELPER_REGEXP_ROWRANGE = '((\w*|\'[^!]*\')!)?(\$?\d+):(\$?\d+)';
+ const REFHELPER_REGEXP_COLRANGE = '((\w*|\'[^!]*\')!)?(\$?[a-z]{1,3}):(\$?[a-z]{1,3})';
+
/**
* Instance of this class
*
@@ -119,10 +126,8 @@ class PHPExcel_ReferenceHelper
$newCoordinates = PHPExcel_Cell::stringFromColumnIndex( PHPExcel_Cell::columnIndexFromString($cell->getColumn()) - 1 + $pNumCols ) . ($cell->getRow() + $pNumRows);
// Should the cell be updated? Move value and cellXf index from one cell to another.
- if (
- (PHPExcel_Cell::columnIndexFromString( $cell->getColumn() ) >= PHPExcel_Cell::columnIndexFromString($beforeColumn)) &&
- ($cell->getRow() >= $beforeRow)
- ) {
+ if ((PHPExcel_Cell::columnIndexFromString( $cell->getColumn() ) >= PHPExcel_Cell::columnIndexFromString($beforeColumn)) &&
+ ($cell->getRow() >= $beforeRow)) {
// Update cell styles
$pSheet->getCell($newCoordinates)->setXfIndex($cell->getXfIndex());
@@ -132,7 +137,7 @@ class PHPExcel_ReferenceHelper
if ($cell->getDataType() == PHPExcel_Cell_DataType::TYPE_FORMULA) {
// Formula should be adjusted
$pSheet->getCell($newCoordinates)
- ->setValue($this->updateFormulaReferences($cell->getValue(), $pBefore, $pNumCols, $pNumRows));
+ ->setValue($this->updateFormulaReferences($cell->getValue(), $pBefore, $pNumCols, $pNumRows, $pSheet->getTitle()));
} else {
// Formula should not be adjusted
$pSheet->getCell($newCoordinates)->setValue($cell->getValue());
@@ -340,43 +345,121 @@ class PHPExcel_ReferenceHelper
* @return string Updated formula
* @throws Exception
*/
- public function updateFormulaReferences($pFormula = '', $pBefore = 'A1', $pNumCols = 0, $pNumRows = 0) {
- // Parse formula into a tree of tokens
- $tokenisedFormula = PHPExcel_Calculation::getInstance()->parseFormula($pFormula);
-
- $newCellTokens = $cellTokens = array();
- $adjustCount = 0;
- // Build the translation table of cell tokens
- foreach($tokenisedFormula as $token) {
- $token = $token['value'];
- if (preg_match('/^'.PHPExcel_Calculation::CALCULATION_REGEXP_CELLREF.'$/i', $token, $matches)) {
- list($column,$row) = PHPExcel_Cell::coordinateFromString($token);
- // Max worksheet size is 1,048,576 rows by 16,384 columns in Excel 2007, so our adjustments need to be at least one digit more
- $column = PHPExcel_Cell::columnIndexFromString($column) + 100000;
- $row += 10000000;
- $cellIndex = $column.$row;
- if (!isset($cellTokens[$cellIndex])) {
- $newReference = $this->updateCellReference($token, $pBefore, $pNumCols, $pNumRows);
- if ($newReference !== $token) {
- $newCellTokens[$cellIndex] = preg_quote($newReference);
- $cellTokens[$cellIndex] = '/(?<![A-Z])'.preg_quote($token).'(?!\d)/i';
- ++$adjustCount;
- }
- }
- }
- }
- if ($adjustCount == 0) {
- return $pFormula;
- }
- krsort($cellTokens);
- krsort($newCellTokens);
-
+ public function updateFormulaReferences($pFormula = '', $pBefore = 'A1', $pNumCols = 0, $pNumRows = 0, $sheetName = '') {
// Update cell references in the formula
$formulaBlocks = explode('"',$pFormula);
foreach($formulaBlocks as $i => &$formulaBlock) {
- // Only count/replace in alternate array entries
+ // Ignore blocks that were enclosed in quotes (even entries in the $formulaBlocks array after the explode)
if (($i % 2) == 0) {
- $formulaBlock = preg_replace($cellTokens,$newCellTokens,$formulaBlock);
+ $adjustCount = 0;
+ $newCellTokens = $cellTokens = array();
+ // Search for row ranges (e.g. 'Sheet1'!3:5 or 3:5) with or without $ absolutes (e.g. $3:5)
+ $matchCount = preg_match_all('/'.self::REFHELPER_REGEXP_ROWRANGE.'/i', ' '.$formulaBlock.' ', $matches, PREG_SET_ORDER);
+ if ($matchCount > 0) {
+ foreach($matches as $match) {
+ $fromString = ($match[2] > '') ? $match[2].'!' : '';
+ $fromString .= $match[3].':'.$match[4];
+ $modified3 = substr($this->updateCellReference('$A'.$match[3],$pBefore,$pNumCols,$pNumRows),2);
+ $modified4 = substr($this->updateCellReference('$A'.$match[4],$pBefore,$pNumCols,$pNumRows),2);
+
+ if ($match[3].':'.$match[4] !== $modified3.':'.$modified4) {
+ if (($match[2] == '') || (trim($match[2],"'") == $sheetName)) {
+ $toString = ($match[2] > '') ? $match[2].'!' : '';
+ $toString .= $modified3.':'.$modified4;
+ // Max worksheet size is 1,048,576 rows by 16,384 columns in Excel 2007, so our adjustments need to be at least one digit more
+ $column = 100000;
+ $row = 10000000+trim($match[3],'$');
+ $cellIndex = $column.$row;
+
+ $newCellTokens[$cellIndex] = preg_quote($toString);
+ $cellTokens[$cellIndex] = '/(?<!\d)'.preg_quote($fromString).'(?!\d)/i';
+ ++$adjustCount;
+ }
+ }
+ }
+ }
+ // Search for column ranges (e.g. 'Sheet1'!C:E or C:E) with or without $ absolutes (e.g. $C:E)
+ $matchCount = preg_match_all('/'.self::REFHELPER_REGEXP_COLRANGE.'/i', ' '.$formulaBlock.' ', $matches, PREG_SET_ORDER);
+ if ($matchCount > 0) {
+ foreach($matches as $match) {
+ $fromString = ($match[2] > '') ? $match[2].'!' : '';
+ $fromString .= $match[3].':'.$match[4];
+ $modified3 = substr($this->updateCellReference($match[3].'$1',$pBefore,$pNumCols,$pNumRows),0,-2);
+ $modified4 = substr($this->updateCellReference($match[4].'$1',$pBefore,$pNumCols,$pNumRows),0,-2);
+
+ if ($match[3].':'.$match[4] !== $modified3.':'.$modified4) {
+ if (($match[2] == '') || (trim($match[2],"'") == $sheetName)) {
+ $toString = ($match[2] > '') ? $match[2].'!' : '';
+ $toString .= $modified3.':'.$modified4;
+ // Max worksheet size is 1,048,576 rows by 16,384 columns in Excel 2007, so our adjustments need to be at least one digit more
+ $column = PHPExcel_Cell::columnIndexFromString(trim($match[3],'$')) + 100000;
+ $row = 10000000;
+ $cellIndex = $column.$row;
+
+ $newCellTokens[$cellIndex] = preg_quote($toString);
+ $cellTokens[$cellIndex] = '/(?<![A-Z])'.preg_quote($fromString).'(?![A-Z])/i';
+ ++$adjustCount;
+ }
+ }
+ }
+ }
+ // Search for cell ranges (e.g. 'Sheet1'!A3:C5 or A3:C5) with or without $ absolutes (e.g. $A1:C$5)
+ $matchCount = preg_match_all('/'.self::REFHELPER_REGEXP_CELLRANGE.'/i', ' '.$formulaBlock.' ', $matches, PREG_SET_ORDER);
+ if ($matchCount > 0) {
+ foreach($matches as $match) {
+ $fromString = ($match[2] > '') ? $match[2].'!' : '';
+ $fromString .= $match[3].':'.$match[4];
+ $modified3 = $this->updateCellReference($match[3],$pBefore,$pNumCols,$pNumRows);
+ $modified4 = $this->updateCellReference($match[4],$pBefore,$pNumCols,$pNumRows);
+
+ if ($match[3].$match[4] !== $modified3.$modified4) {
+ if (($match[2] == '') || (trim($match[2],"'") == $sheetName)) {
+ $toString = ($match[2] > '') ? $match[2].'!' : '';
+ $toString .= $modified3.':'.$modified4;
+ list($column,$row) = PHPExcel_Cell::coordinateFromString($match[3]);
+ // Max worksheet size is 1,048,576 rows by 16,384 columns in Excel 2007, so our adjustments need to be at least one digit more
+ $column = PHPExcel_Cell::columnIndexFromString(trim($column,'$')) + 100000;
+ $row = trim($row,'$') + 10000000;
+ $cellIndex = $column.$row;
+
+ $newCellTokens[$cellIndex] = preg_quote($toString);
+ $cellTokens[$cellIndex] = '/(?<![A-Z])'.preg_quote($fromString).'(?!\d)/i';
+ ++$adjustCount;
+ }
+ }
+ }
+ }
+ // Search for cell references (e.g. 'Sheet1'!A3 or C5) with or without $ absolutes (e.g. $A1 or C$5)
+ $matchCount = preg_match_all('/'.self::REFHELPER_REGEXP_CELLREF.'/i', ' '.$formulaBlock.' ', $matches, PREG_SET_ORDER);
+ if ($matchCount > 0) {
+ foreach($matches as $match) {
+ $fromString = ($match[2] > '') ? $match[2].'!' : '';
+ $fromString .= $match[3];
+ $modified3 = $this->updateCellReference($match[3],$pBefore,$pNumCols,$pNumRows);
+
+ if ($match[3] !== $modified3) {
+ if (($match[2] == '') || (trim($match[2],"'") == $sheetName)) {
+ $toString = ($match[2] > '') ? $match[2].'!' : '';
+ $toString .= $modified3;
+ list($column,$row) = PHPExcel_Cell::coordinateFromString($match[3]);
+ // Max worksheet size is 1,048,576 rows by 16,384 columns in Excel 2007, so our adjustments need to be at least one digit more
+ $column = PHPExcel_Cell::columnIndexFromString(trim($column,'$')) + 100000;
+ $row = trim($row,'$') + 10000000;
+ $cellIndex = $column.$row;
+
+ $newCellTokens[$cellIndex] = preg_quote($toString);
+ $cellTokens[$cellIndex] = '/(?<![A-Z])'.preg_quote($fromString).'(?!\d)/i';
+ ++$adjustCount;
+ }
+ }
+ }
+ }
+ if ($adjustCount > 0) {
+ krsort($cellTokens);
+ krsort($newCellTokens);
+ // Update cell references in the formula
+ $formulaBlock = str_replace('\\','',preg_replace($cellTokens,$newCellTokens,$formulaBlock));
+ }
}
}
unset($formulaBlock);
diff --git a/libraries/PHPExcel/PHPExcel/RichText.php b/libraries/PHPExcel/PHPExcel/RichText.php
index c938c62..588e643 100644
--- a/libraries/PHPExcel/PHPExcel/RichText.php
+++ b/libraries/PHPExcel/PHPExcel/RichText.php
@@ -22,7 +22,7 @@
* @package PHPExcel_RichText
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/RichText/ITextElement.php b/libraries/PHPExcel/PHPExcel/RichText/ITextElement.php
index 613028f..3f1aa7a 100644
--- a/libraries/PHPExcel/PHPExcel/RichText/ITextElement.php
+++ b/libraries/PHPExcel/PHPExcel/RichText/ITextElement.php
@@ -20,7 +20,7 @@
* @package PHPExcel_RichText
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/RichText/Run.php b/libraries/PHPExcel/PHPExcel/RichText/Run.php
index 209af21..aac7676 100644
--- a/libraries/PHPExcel/PHPExcel/RichText/Run.php
+++ b/libraries/PHPExcel/PHPExcel/RichText/Run.php
@@ -20,7 +20,7 @@
* @package PHPExcel_RichText
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/RichText/TextElement.php b/libraries/PHPExcel/PHPExcel/RichText/TextElement.php
index 3a24482..f5ce8e0 100644
--- a/libraries/PHPExcel/PHPExcel/RichText/TextElement.php
+++ b/libraries/PHPExcel/PHPExcel/RichText/TextElement.php
@@ -20,7 +20,7 @@
* @package PHPExcel_RichText
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/Settings.php b/libraries/PHPExcel/PHPExcel/Settings.php
index 7a1d57e..52d7880 100644
--- a/libraries/PHPExcel/PHPExcel/Settings.php
+++ b/libraries/PHPExcel/PHPExcel/Settings.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Settings
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
/** PHPExcel root directory */
diff --git a/libraries/PHPExcel/PHPExcel/Shared/CodePage.php b/libraries/PHPExcel/PHPExcel/Shared/CodePage.php
index 10f82e4..f209838 100644
--- a/libraries/PHPExcel/PHPExcel/Shared/CodePage.php
+++ b/libraries/PHPExcel/PHPExcel/Shared/CodePage.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Shared
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/Shared/Date.php b/libraries/PHPExcel/PHPExcel/Shared/Date.php
index c45c23f..334e8df 100644
--- a/libraries/PHPExcel/PHPExcel/Shared/Date.php
+++ b/libraries/PHPExcel/PHPExcel/Shared/Date.php
@@ -23,7 +23,7 @@
* @package PHPExcel_Shared
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/Shared/Drawing.php b/libraries/PHPExcel/PHPExcel/Shared/Drawing.php
index a89c94e..a24f963 100644
--- a/libraries/PHPExcel/PHPExcel/Shared/Drawing.php
+++ b/libraries/PHPExcel/PHPExcel/Shared/Drawing.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Shared
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/Shared/Escher.php b/libraries/PHPExcel/PHPExcel/Shared/Escher.php
index c230d99..11c19b2 100644
--- a/libraries/PHPExcel/PHPExcel/Shared/Escher.php
+++ b/libraries/PHPExcel/PHPExcel/Shared/Escher.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Shared_Escher
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
/**
diff --git a/libraries/PHPExcel/PHPExcel/Shared/Escher/DgContainer.php b/libraries/PHPExcel/PHPExcel/Shared/Escher/DgContainer.php
index c78485b..6cbd2f0 100644
--- a/libraries/PHPExcel/PHPExcel/Shared/Escher/DgContainer.php
+++ b/libraries/PHPExcel/PHPExcel/Shared/Escher/DgContainer.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Shared_Escher
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
/**
diff --git a/libraries/PHPExcel/PHPExcel/Shared/Escher/DgContainer/SpgrContainer.php b/libraries/PHPExcel/PHPExcel/Shared/Escher/DgContainer/SpgrContainer.php
index c659fd5..919cf1a 100644
--- a/libraries/PHPExcel/PHPExcel/Shared/Escher/DgContainer/SpgrContainer.php
+++ b/libraries/PHPExcel/PHPExcel/Shared/Escher/DgContainer/SpgrContainer.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Shared_Escher
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
/**
diff --git a/libraries/PHPExcel/PHPExcel/Shared/Escher/DgContainer/SpgrContainer/SpContainer.php b/libraries/PHPExcel/PHPExcel/Shared/Escher/DgContainer/SpgrContainer/SpContainer.php
index 83e3193..454b7ee 100644
--- a/libraries/PHPExcel/PHPExcel/Shared/Escher/DgContainer/SpgrContainer/SpContainer.php
+++ b/libraries/PHPExcel/PHPExcel/Shared/Escher/DgContainer/SpgrContainer/SpContainer.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Shared_Escher
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
/**
diff --git a/libraries/PHPExcel/PHPExcel/Shared/Escher/DggContainer.php b/libraries/PHPExcel/PHPExcel/Shared/Escher/DggContainer.php
index 59d34cf..61eab5d 100644
--- a/libraries/PHPExcel/PHPExcel/Shared/Escher/DggContainer.php
+++ b/libraries/PHPExcel/PHPExcel/Shared/Escher/DggContainer.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Shared_Escher
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
/**
@@ -70,6 +70,13 @@ class PHPExcel_Shared_Escher_DggContainer
private $_OPT = array();
/**
+ * Array of identifier clusters containg information about the maximum shape identifiers
+ *
+ * @var array
+ */
+ private $_IDCLs = array();
+
+ /**
* Get maximum shape index of all shapes in all drawings (plus one)
*
* @return int
@@ -174,4 +181,23 @@ class PHPExcel_Shared_Escher_DggContainer
return null;
}
+ /**
+ * Get identifier clusters
+ *
+ * @return array
+ */
+ public function getIDCLs()
+ {
+ return $this->_IDCLs;
+ }
+
+ /**
+ * Set identifier clusters. array(<drawingId> => <max shape id>, ...)
+ *
+ * @param array $pValue
+ */
+ public function setIDCLs($pValue)
+ {
+ $this->_IDCLs = $pValue;
+ }
}
diff --git a/libraries/PHPExcel/PHPExcel/Shared/Escher/DggContainer/BstoreContainer.php b/libraries/PHPExcel/PHPExcel/Shared/Escher/DggContainer/BstoreContainer.php
index 9292f2d..6040fb2 100644
--- a/libraries/PHPExcel/PHPExcel/Shared/Escher/DggContainer/BstoreContainer.php
+++ b/libraries/PHPExcel/PHPExcel/Shared/Escher/DggContainer/BstoreContainer.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Shared_Escher
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
/**
diff --git a/libraries/PHPExcel/PHPExcel/Shared/Escher/DggContainer/BstoreContainer/BSE.php b/libraries/PHPExcel/PHPExcel/Shared/Escher/DggContainer/BstoreContainer/BSE.php
index 820e703..00ccb6d 100644
--- a/libraries/PHPExcel/PHPExcel/Shared/Escher/DggContainer/BstoreContainer/BSE.php
+++ b/libraries/PHPExcel/PHPExcel/Shared/Escher/DggContainer/BstoreContainer/BSE.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Shared_Escher
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
/**
diff --git a/libraries/PHPExcel/PHPExcel/Shared/Escher/DggContainer/BstoreContainer/BSE/Blip.php b/libraries/PHPExcel/PHPExcel/Shared/Escher/DggContainer/BstoreContainer/BSE/Blip.php
index 35003dd..7f13632 100644
--- a/libraries/PHPExcel/PHPExcel/Shared/Escher/DggContainer/BstoreContainer/BSE/Blip.php
+++ b/libraries/PHPExcel/PHPExcel/Shared/Escher/DggContainer/BstoreContainer/BSE/Blip.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Shared_Escher
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
/**
diff --git a/libraries/PHPExcel/PHPExcel/Shared/Excel5.php b/libraries/PHPExcel/PHPExcel/Shared/Excel5.php
index 05af633..6469c52 100644
--- a/libraries/PHPExcel/PHPExcel/Shared/Excel5.php
+++ b/libraries/PHPExcel/PHPExcel/Shared/Excel5.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Shared
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
/**
diff --git a/libraries/PHPExcel/PHPExcel/Shared/File.php b/libraries/PHPExcel/PHPExcel/Shared/File.php
index dc2c3fd..23169ce 100644
--- a/libraries/PHPExcel/PHPExcel/Shared/File.php
+++ b/libraries/PHPExcel/PHPExcel/Shared/File.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Shared
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
@@ -75,7 +75,9 @@ class PHPExcel_Shared_File
$returnValue = '';
// Try using realpath()
- $returnValue = realpath($pFilename);
+ if (file_exists($pFilename)) {
+ $returnValue = realpath($pFilename);
+ }
// Found something?
if ($returnValue == '' || is_null($returnValue)) {
@@ -107,14 +109,14 @@ class PHPExcel_Shared_File
// http://php.net/manual/en/function.sys-get-temp-dir.php#94119
if ( !function_exists('sys_get_temp_dir')) {
- if( $temp = getenv('TMP') ) {
- return realpath($temp);
+ if ($temp = getenv('TMP') ) {
+ if (file_exists($temp)) { return realpath($temp); }
}
- if( $temp = getenv('TEMP') ) {
- return realpath($temp);
+ if ($temp = getenv('TEMP') ) {
+ if (file_exists($temp)) { return realpath($temp); }
}
- if( $temp = getenv('TMPDIR') ) {
- return realpath($temp);
+ if ($temp = getenv('TMPDIR') ) {
+ if (file_exists($temp)) { return realpath($temp); }
}
// trick for creating a file in system's temporary dir
@@ -126,10 +128,11 @@ class PHPExcel_Shared_File
}
return null;
-
}
// use ordinary built-in PHP function
+ // There should be no problem with the 5.2.4 Suhosin realpath() bug, because this line should only
+ // be called if we're running 5.2.1 or earlier
return realpath(sys_get_temp_dir());
}
diff --git a/libraries/PHPExcel/PHPExcel/Shared/Font.php b/libraries/PHPExcel/PHPExcel/Shared/Font.php
index 1759e87..24d78be 100644
--- a/libraries/PHPExcel/PHPExcel/Shared/Font.php
+++ b/libraries/PHPExcel/PHPExcel/Shared/Font.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Shared
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/Shared/OLE/ChainedBlockStream.php b/libraries/PHPExcel/PHPExcel/Shared/OLE/ChainedBlockStream.php
index 7b6f845..af757d0 100644
--- a/libraries/PHPExcel/PHPExcel/Shared/OLE/ChainedBlockStream.php
+++ b/libraries/PHPExcel/PHPExcel/Shared/OLE/ChainedBlockStream.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Shared_OLE
* @copyright Copyright (c) 2006 - 2007 Christian Schmidt
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
/**
diff --git a/libraries/PHPExcel/PHPExcel/Shared/OLERead.php b/libraries/PHPExcel/PHPExcel/Shared/OLERead.php
index b747e13..6aebbf0 100644
--- a/libraries/PHPExcel/PHPExcel/Shared/OLERead.php
+++ b/libraries/PHPExcel/PHPExcel/Shared/OLERead.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Shared
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
define('IDENTIFIER_OLE', pack('CCCCCCCC', 0xd0, 0xcf, 0x11, 0xe0, 0xa1, 0xb1, 0x1a, 0xe1));
diff --git a/libraries/PHPExcel/PHPExcel/Shared/PasswordHasher.php b/libraries/PHPExcel/PHPExcel/Shared/PasswordHasher.php
index 6b7b312..7fb4934 100644
--- a/libraries/PHPExcel/PHPExcel/Shared/PasswordHasher.php
+++ b/libraries/PHPExcel/PHPExcel/Shared/PasswordHasher.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Shared
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/Shared/String.php b/libraries/PHPExcel/PHPExcel/Shared/String.php
index 32766df..c033b9a 100644
--- a/libraries/PHPExcel/PHPExcel/Shared/String.php
+++ b/libraries/PHPExcel/PHPExcel/Shared/String.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Shared
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
@@ -507,7 +507,7 @@ class PHPExcel_Shared_String
* @author Rasmus Andersson {@link http://rasmusandersson.se/}
* @author vadik56
*/
- function utf16_decode( $str, $bom_be=true ) {
+ public static function utf16_decode( $str, $bom_be=true ) {
if( strlen($str) < 2 ) return $str;
$c0 = ord($str{0});
$c1 = ord($str{1});
diff --git a/libraries/PHPExcel/PHPExcel/Shared/XMLWriter.php b/libraries/PHPExcel/PHPExcel/Shared/XMLWriter.php
index 223d3dd..8514847 100644
--- a/libraries/PHPExcel/PHPExcel/Shared/XMLWriter.php
+++ b/libraries/PHPExcel/PHPExcel/Shared/XMLWriter.php
@@ -22,13 +22,18 @@
* @package PHPExcel_Shared
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
if (!defined('DATE_W3C')) {
define('DATE_W3C', 'Y-m-d\TH:i:sP');
}
+if (!defined('DEBUGMODE_ENABLED')) {
+ define('DEBUGMODE_ENABLED', false);
+}
+
+
/**
* PHPExcel_Shared_XMLWriter
*
@@ -80,7 +85,9 @@ class PHPExcel_Shared_XMLWriter {
}
// Set default values
- $this->_xmlWriter->setIndent(true);
+ if (DEBUGMODE_ENABLED) {
+ $this->_xmlWriter->setIndent(true);
+ }
}
/**
diff --git a/libraries/PHPExcel/PHPExcel/Shared/ZipStreamWrapper.php b/libraries/PHPExcel/PHPExcel/Shared/ZipStreamWrapper.php
index 77661c6..b79bfc8 100644
--- a/libraries/PHPExcel/PHPExcel/Shared/ZipStreamWrapper.php
+++ b/libraries/PHPExcel/PHPExcel/Shared/ZipStreamWrapper.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Shared
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/Shared/trend/bestFitClass.php b/libraries/PHPExcel/PHPExcel/Shared/trend/bestFitClass.php
index 27fecd5..28fe725 100644
--- a/libraries/PHPExcel/PHPExcel/Shared/trend/bestFitClass.php
+++ b/libraries/PHPExcel/PHPExcel/Shared/trend/bestFitClass.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Shared_Best_Fit
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/Shared/trend/exponentialBestFitClass.php b/libraries/PHPExcel/PHPExcel/Shared/trend/exponentialBestFitClass.php
index a0717ea..0ff98cc 100644
--- a/libraries/PHPExcel/PHPExcel/Shared/trend/exponentialBestFitClass.php
+++ b/libraries/PHPExcel/PHPExcel/Shared/trend/exponentialBestFitClass.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Shared_Best_Fit
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/Shared/trend/linearBestFitClass.php b/libraries/PHPExcel/PHPExcel/Shared/trend/linearBestFitClass.php
index 99f358c..71219a0 100644
--- a/libraries/PHPExcel/PHPExcel/Shared/trend/linearBestFitClass.php
+++ b/libraries/PHPExcel/PHPExcel/Shared/trend/linearBestFitClass.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Shared_Best_Fit
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/Shared/trend/logarithmicBestFitClass.php b/libraries/PHPExcel/PHPExcel/Shared/trend/logarithmicBestFitClass.php
index a59c879..03c7dc3 100644
--- a/libraries/PHPExcel/PHPExcel/Shared/trend/logarithmicBestFitClass.php
+++ b/libraries/PHPExcel/PHPExcel/Shared/trend/logarithmicBestFitClass.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Shared_Best_Fit
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/Shared/trend/polynomialBestFitClass.php b/libraries/PHPExcel/PHPExcel/Shared/trend/polynomialBestFitClass.php
index 02ff0a5..6947c11 100644
--- a/libraries/PHPExcel/PHPExcel/Shared/trend/polynomialBestFitClass.php
+++ b/libraries/PHPExcel/PHPExcel/Shared/trend/polynomialBestFitClass.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Shared_Best_Fit
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/Shared/trend/powerBestFitClass.php b/libraries/PHPExcel/PHPExcel/Shared/trend/powerBestFitClass.php
index 9328fcb..6d2281c 100644
--- a/libraries/PHPExcel/PHPExcel/Shared/trend/powerBestFitClass.php
+++ b/libraries/PHPExcel/PHPExcel/Shared/trend/powerBestFitClass.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Shared_Best_Fit
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/Style.php b/libraries/PHPExcel/PHPExcel/Style.php
index d0cbcb0..3e84f9f 100644
--- a/libraries/PHPExcel/PHPExcel/Style.php
+++ b/libraries/PHPExcel/PHPExcel/Style.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Style
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
@@ -675,7 +675,7 @@ class PHPExcel_Style implements PHPExcel_IComparable
public function __clone() {
$vars = get_object_vars($this);
foreach ($vars as $key => $value) {
- if (is_object($value)) {
+ if ((is_object($value)) && ($key != '_parent')) {
$this->$key = clone $value;
} else {
$this->$key = $value;
diff --git a/libraries/PHPExcel/PHPExcel/Style/Alignment.php b/libraries/PHPExcel/PHPExcel/Style/Alignment.php
index 412c603..15b6c87 100644
--- a/libraries/PHPExcel/PHPExcel/Style/Alignment.php
+++ b/libraries/PHPExcel/PHPExcel/Style/Alignment.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Style
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
@@ -479,7 +479,7 @@ class PHPExcel_Style_Alignment implements PHPExcel_IComparable
public function __clone() {
$vars = get_object_vars($this);
foreach ($vars as $key => $value) {
- if (is_object($value)) {
+ if ((is_object($value)) && ($key != '_parent')) {
$this->$key = clone $value;
} else {
$this->$key = $value;
diff --git a/libraries/PHPExcel/PHPExcel/Style/Border.php b/libraries/PHPExcel/PHPExcel/Style/Border.php
index 1af31d6..166ccb2 100644
--- a/libraries/PHPExcel/PHPExcel/Style/Border.php
+++ b/libraries/PHPExcel/PHPExcel/Style/Border.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Style
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
@@ -372,7 +372,7 @@ class PHPExcel_Style_Border implements PHPExcel_IComparable
public function __clone() {
$vars = get_object_vars($this);
foreach ($vars as $key => $value) {
- if (is_object($value)) {
+ if ((is_object($value)) && ($key != '_parent')) {
$this->$key = clone $value;
} else {
$this->$key = $value;
diff --git a/libraries/PHPExcel/PHPExcel/Style/Borders.php b/libraries/PHPExcel/PHPExcel/Style/Borders.php
index ffd66af..dc32c50 100644
--- a/libraries/PHPExcel/PHPExcel/Style/Borders.php
+++ b/libraries/PHPExcel/PHPExcel/Style/Borders.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Style
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
@@ -489,7 +489,7 @@ class PHPExcel_Style_Borders implements PHPExcel_IComparable
public function __clone() {
$vars = get_object_vars($this);
foreach ($vars as $key => $value) {
- if (is_object($value)) {
+ if ((is_object($value)) && ($key != '_parent')) {
$this->$key = clone $value;
} else {
$this->$key = $value;
diff --git a/libraries/PHPExcel/PHPExcel/Style/Color.php b/libraries/PHPExcel/PHPExcel/Style/Color.php
index 8a25af0..9734d62 100644
--- a/libraries/PHPExcel/PHPExcel/Style/Color.php
+++ b/libraries/PHPExcel/PHPExcel/Style/Color.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Style
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
@@ -398,7 +398,7 @@ class PHPExcel_Style_Color implements PHPExcel_IComparable
public function __clone() {
$vars = get_object_vars($this);
foreach ($vars as $key => $value) {
- if (is_object($value)) {
+ if ((is_object($value)) && ($key != '_parent')) {
$this->$key = clone $value;
} else {
$this->$key = $value;
diff --git a/libraries/PHPExcel/PHPExcel/Style/Conditional.php b/libraries/PHPExcel/PHPExcel/Style/Conditional.php
index 8ec5f92..4602b53 100644
--- a/libraries/PHPExcel/PHPExcel/Style/Conditional.php
+++ b/libraries/PHPExcel/PHPExcel/Style/Conditional.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Style
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/Style/Fill.php b/libraries/PHPExcel/PHPExcel/Style/Fill.php
index 3ebf380..1357e47 100644
--- a/libraries/PHPExcel/PHPExcel/Style/Fill.php
+++ b/libraries/PHPExcel/PHPExcel/Style/Fill.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Style
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
@@ -391,7 +391,7 @@ class PHPExcel_Style_Fill implements PHPExcel_IComparable
public function __clone() {
$vars = get_object_vars($this);
foreach ($vars as $key => $value) {
- if (is_object($value)) {
+ if ((is_object($value)) && ($key != '_parent')) {
$this->$key = clone $value;
} else {
$this->$key = $value;
diff --git a/libraries/PHPExcel/PHPExcel/Style/Font.php b/libraries/PHPExcel/PHPExcel/Style/Font.php
index de39cf2..b58dbf5 100644
--- a/libraries/PHPExcel/PHPExcel/Style/Font.php
+++ b/libraries/PHPExcel/PHPExcel/Style/Font.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Style
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
@@ -609,7 +609,7 @@ class PHPExcel_Style_Font implements PHPExcel_IComparable
public function __clone() {
$vars = get_object_vars($this);
foreach ($vars as $key => $value) {
- if (is_object($value)) {
+ if ((is_object($value)) && ($key != '_parent')) {
$this->$key = clone $value;
} else {
$this->$key = $value;
diff --git a/libraries/PHPExcel/PHPExcel/Style/NumberFormat.php b/libraries/PHPExcel/PHPExcel/Style/NumberFormat.php
index 9ff1a97..0f0dcdc 100644
--- a/libraries/PHPExcel/PHPExcel/Style/NumberFormat.php
+++ b/libraries/PHPExcel/PHPExcel/Style/NumberFormat.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Style
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 201
0-08-26
*/
@@ -443,7 +443,7 @@ class PHPExcel_Style_NumberFormat implements PHPExcel_IComparable
{
$vars = get_object_vars($this);
foreach ($vars as $key => $value) {
- if (is_object($value)) {
+ if ((is_object($value)) && ($key != '_parent')) {
$this->$key = clone $value;
} else {
$this->$key = $value;
diff --git a/libraries/PHPExcel/PHPExcel/Style/Protection.php b/libraries/PHPExcel/PHPExcel/Style/Protection.php
index 1c70702..29832da 100644
--- a/libraries/PHPExcel/PHPExcel/Style/Protection.php
+++ b/libraries/PHPExcel/PHPExcel/Style/Protection.php
@@ -271,7 +271,7 @@ class PHPExcel_Style_Protection implements PHPExcel_IComparable
public function __clone() {
$vars = get_object_vars($this);
foreach ($vars as $key => $value) {
- if (is_object($value)) {
+ if ((is_object($value)) && ($key != '_parent')) {
$this->$key = clone $value;
} else {
$this->$key = $value;
diff --git a/libraries/PHPExcel/PHPExcel/Worksheet.php b/libraries/PHPExcel/PHPExcel/Worksheet.php
index dc401fd..fb7cc0a 100644
--- a/libraries/PHPExcel/PHPExcel/Worksheet.php
+++ b/libraries/PHPExcel/PHPExcel/Worksheet.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Worksheet
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
@@ -2180,9 +2180,8 @@ class PHPExcel_Worksheet implements PHPExcel_IComparable
$highestRow = 1;
// Find cells that can be cleaned
- foreach ($this->_cellCollection->getCellList() as $coordinate) {
- preg_match('/^(\w+)(\d+)$/U',$coordinate,$matches);
- list(,$col,$row) = $matches;
+ foreach ($this->_cellCollection->getCellList() as $coord) {
+ list($col,$row) = sscanf($coord,'%[A-Z]%d');
$column = PHPExcel_Cell::columnIndexFromString($col);
// Determine highest column and row
@@ -2468,7 +2467,13 @@ class PHPExcel_Worksheet implements PHPExcel_IComparable
}
if (is_object($val) || (is_array($val))) {
- $this->{$key} = unserialize(serialize($val));
+ if ($key == '_cellCollection') {
+ $newCollection = clone $this->_cellCollection;
+ $newCollection->copyCellCollection($this);
+ $this->_cellCollection = $newCollection;
+ } else {
+ $this->{$key} = unserialize(serialize($val));
+ }
}
}
}
diff --git a/libraries/PHPExcel/PHPExcel/Worksheet/BaseDrawing.php b/libraries/PHPExcel/PHPExcel/Worksheet/BaseDrawing.php
index e2c65c3..511643b 100644
--- a/libraries/PHPExcel/PHPExcel/Worksheet/BaseDrawing.php
+++ b/libraries/PHPExcel/PHPExcel/Worksheet/BaseDrawing.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Worksheet
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/Worksheet/CellIterator.php b/libraries/PHPExcel/PHPExcel/Worksheet/CellIterator.php
index 4a6589f..630e089 100644
--- a/libraries/PHPExcel/PHPExcel/Worksheet/CellIterator.php
+++ b/libraries/PHPExcel/PHPExcel/Worksheet/CellIterator.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Worksheet
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/Worksheet/ColumnDimension.php b/libraries/PHPExcel/PHPExcel/Worksheet/ColumnDimension.php
index f42ef31..30b0035 100644
--- a/libraries/PHPExcel/PHPExcel/Worksheet/ColumnDimension.php
+++ b/libraries/PHPExcel/PHPExcel/Worksheet/ColumnDimension.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Worksheet
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/Worksheet/Drawing.php b/libraries/PHPExcel/PHPExcel/Worksheet/Drawing.php
index 7d362c0..537f9f3 100644
--- a/libraries/PHPExcel/PHPExcel/Worksheet/Drawing.php
+++ b/libraries/PHPExcel/PHPExcel/Worksheet/Drawing.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Worksheet_Drawing
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/Worksheet/Drawing/Shadow.php b/libraries/PHPExcel/PHPExcel/Worksheet/Drawing/Shadow.php
index f83c26d..053ab0d 100644
--- a/libraries/PHPExcel/PHPExcel/Worksheet/Drawing/Shadow.php
+++ b/libraries/PHPExcel/PHPExcel/Worksheet/Drawing/Shadow.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Worksheet_Drawing
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/Worksheet/HeaderFooter.php b/libraries/PHPExcel/PHPExcel/Worksheet/HeaderFooter.php
index 4e39339..9d2708d 100644
--- a/libraries/PHPExcel/PHPExcel/Worksheet/HeaderFooter.php
+++ b/libraries/PHPExcel/PHPExcel/Worksheet/HeaderFooter.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Worksheet
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/Worksheet/HeaderFooterDrawing.php b/libraries/PHPExcel/PHPExcel/Worksheet/HeaderFooterDrawing.php
index 9f2b25d..f614261 100644
--- a/libraries/PHPExcel/PHPExcel/Worksheet/HeaderFooterDrawing.php
+++ b/libraries/PHPExcel/PHPExcel/Worksheet/HeaderFooterDrawing.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Worksheet
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/Worksheet/MemoryDrawing.php b/libraries/PHPExcel/PHPExcel/Worksheet/MemoryDrawing.php
index 0bd37f5..a43e6a9 100644
--- a/libraries/PHPExcel/PHPExcel/Worksheet/MemoryDrawing.php
+++ b/libraries/PHPExcel/PHPExcel/Worksheet/MemoryDrawing.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Worksheet
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/Worksheet/PageMargins.php b/libraries/PHPExcel/PHPExcel/Worksheet/PageMargins.php
index 6fc8f1a..155b976 100644
--- a/libraries/PHPExcel/PHPExcel/Worksheet/PageMargins.php
+++ b/libraries/PHPExcel/PHPExcel/Worksheet/PageMargins.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Worksheet
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/Worksheet/PageSetup.php b/libraries/PHPExcel/PHPExcel/Worksheet/PageSetup.php
index ffbd573..8e615f7 100644
--- a/libraries/PHPExcel/PHPExcel/Worksheet/PageSetup.php
+++ b/libraries/PHPExcel/PHPExcel/Worksheet/PageSetup.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Worksheet
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
@@ -179,6 +179,11 @@ class PHPExcel_Worksheet_PageSetup
const ORIENTATION_LANDSCAPE = 'landscape';
const ORIENTATION_PORTRAIT = 'portrait';
+ /* Print Range Set Method */
+ const SETPRINTRANGE_OVERWRITE = 'O';
+ const SETPRINTRANGE_INSERT = 'I';
+
+
/**
* Paper size
*
@@ -261,7 +266,7 @@ class PHPExcel_Worksheet_PageSetup
* @var string
*/
private $_printArea = null;
-
+
/**
* First page number
*
@@ -570,55 +575,197 @@ class PHPExcel_Worksheet_PageSetup
}
/**
- * Get print area
+ * Get print area
*
- * @return string
+ * @param int $index Identifier for a specific print area range if several ranges have been set
+ * Default behaviour, or a index value of 0, will return all ranges as a comma-separated string
+ * Otherwise, the specific range identified by the value of $index will be returned
+ * Print areas are numbered from 1
+ * @throws Exception
+ * @return string
*/
- public function getPrintArea() {
- return $this->_printArea;
+ public function getPrintArea($index = 0) {
+ if ($index == 0) {
+ return $this->_printArea;
+ }
+ $printAreas = explode(',',$this->_printArea);
+ if (isset($printAreas[$index-1])) {
+ return $printAreas[$index-1];
+ }
+ throw new Exception("Requested Print Area does not exist");
}
/**
- * Is print area set?
+ * Is print area set?
*
- * @return boolean
+ * @param int $index Identifier for a specific print area range if several ranges have been set
+ * Default behaviour, or an index value of 0, will identify whether any print range is set
+ * Otherwise, existence of the range identified by the value of $index will be returned
+ * Print areas are numbered from 1
+ * @return boolean
*/
- public function isPrintAreaSet() {
- return !is_null($this->_printArea);
+ public function isPrintAreaSet($index = 0) {
+ if ($index == 0) {
+ return !is_null($this->_printArea);
+ }
+ $printAreas = explode(',',$this->_printArea);
+ return isset($printAreas[$index-1]);
}
/**
- * Set print area. E.g. 'A1:D10' or 'A1:D10,G5:M20'
+ * Clear a print area
*
- * @param string $value
- * @throws Exception
- * @return PHPExcel_Worksheet_PageSetup
+ * @param int $index Identifier for a specific print area range if several ranges have been set
+ * Default behaviour, or an index value of 0, will clear all print ranges that are set
+ * Otherwise, the range identified by the value of $index will be removed from the series
+ * Print areas are numbered from 1
+ * @return PHPExcel_Worksheet_PageSetup
*/
- public function setPrintArea($value) {
- if (strpos($value,':') === false) {
- throw new Exception('Cell coordinate must be a range of cells.');
- } elseif (strpos($value,'$') !== false) {
- throw new Exception('Cell coordinate must not be absolute.');
- } else {
- $this->_printArea = strtoupper($value);
- }
+ public function clearPrintArea($index = 0) {
+ if ($index == 0) {
+ $this->_printArea = NULL;
+ } else {
+ $printAreas = explode(',',$this->_printArea);
+ if (isset($printAreas[$index-1])) {
+ unset($printAreas[$index-1]);
+ $this->_printArea = implode(',',$printAreas);
+ }
+ }
+
+ return $this;
+ }
+
+ /**
+ * Set print area. e.g. 'A1:D10' or 'A1:D10,G5:M20'
+ *
+ * @param string $value
+ * @param int $index Identifier for a specific print area range allowing several ranges to be set
+ * When the method is "O"verwrite, then a positive integer index will overwrite that indexed
+ * entry in the print areas list; a negative index value will identify which entry to
+ * overwrite working bacward through the print area to the list, with the last entry as -1.
+ * Specifying an index value of 0, will overwrite <b>all</b> existing print ranges.
+ * When the method is "I"nsert, then a positive index will insert after that indexed entry in
+ * the print areas list, while a negative index will insert before the indexed entry.
+ * Specifying an index value of 0, will always append the new print range at the end of the
+ * list.
+ * Print areas are numbered from 1
+ * @param string $method Determines the method used when setting multiple print areas
+ * Default behaviour, or the "O" method, overwrites existing print area
+ * The "I" method, inserts the new print area before any specified index, or at the end of the list
+ * @throws Exception
+ * @return PHPExcel_Worksheet_PageSetup
+ */
+ public function setPrintArea($value, $index = 0, $method = self::SETPRINTRANGE_OVERWRITE) {
+ if (strpos($value,'!') !== false) {
+ throw new Exception('Cell coordinate must not specify a worksheet.');
+ } elseif (strpos($value,':') === false) {
+ throw new Exception('Cell coordinate must be a range of cells.');
+ } elseif (strpos($value,'$') !== false) {
+ throw new Exception('Cell coordinate must not be absolute.');
+ }
+ $value = strtoupper($value);
+
+ if ($method == self::SETPRINTRANGE_OVERWRITE) {
+ if ($index == 0) {
+ $this->_printArea = $value;
+ } else {
+ $printAreas = explode(',',$this->_printArea);
+ if($index < 0) {
+ $index = count($printAreas) - abs($index) + 1;
+ }
+ if (($index <= 0) || ($index > count($printAreas))) {
+ throw new Exception('Invalid index for setting print range.');
+ }
+ $printAreas[$index-1] = $value;
+ $this->_printArea = implode(',',$printAreas);
+ }
+ } elseif($method == self::SETPRINTRANGE_INSERT) {
+ if ($index == 0) {
+ $this->_printArea .= ($this->_printArea == '') ? $value : ','.$value;
+ } else {
+ $printAreas = explode(',',$this->_printArea);
+ if($index < 0) {
+ $index = abs($index) - 1;
+ }
+ if ($index > count($printAreas)) {
+ throw new Exception('Invalid index for setting print range.');
+ }
+ $printAreas = array_merge(array_slice($printAreas,0,$index),array($value),array_slice($printAreas,$index));
+ $this->_printArea = implode(',',$printAreas);
+ }
+ } else {
+ throw new Exception('Invalid method for setting print range.');
+ }
+
return $this;
}
/**
- * Set print area
+ * Add a new print area (e.g. 'A1:D10' or 'A1:D10,G5:M20') to the list of print areas
*
- * @param int $column1 Column 1
- * @param int $row1 Row 1
- * @param int $column2 Column 2
- * @param int $row2 Row 2
- * @return PHPExcel_Worksheet_PageSetup
+ * @param string $value
+ * @param int $index Identifier for a specific print area range allowing several ranges to be set
+ * A positive index will insert after that indexed entry in the print areas list, while a
+ * negative index will insert before the indexed entry.
+ * Specifying an index value of 0, will always append the new print range at the end of the
+ * list.
+ * Print areas are numbered from 1
+ * @throws Exception
+ * @return PHPExcel_Worksheet_PageSetup
*/
- public function setPrintAreaByColumnAndRow($column1, $row1, $column2, $row2)
+ public function addPrintArea($value, $index = -1) {
+ return $this->setPrintArea($value, $index, self::SETPRINTRANGE_INSERT);
+ }
+
+ /**
+ * Set print area
+ *
+ * @param int $column1 Column 1
+ * @param int $row1 Row 1
+ * @param int $column2 Column 2
+ * @param int $row2 Row 2
+ * @param int $index Identifier for a specific print area range allowing several ranges to be set
+ * When the method is "O"verwrite, then a positive integer index will overwrite that indexed
+ * entry in the print areas list; a negative index value will identify which entry to
+ * overwrite working bacward through the print area to the list, with the last entry as -1.
+ * Specifying an index value of 0, will overwrite <b>all</b> existing print ranges.
+ * When the method is "I"nsert, then a positive index will insert after that indexed entry in
+ * the print areas list, while a negative index will insert before the indexed entry.
+ * Specifying an index value of 0, will always append the new print range at the end of the
+ * list.
+ * Print areas are numbered from 1
+ * @param string $method Determines the method used when setting multiple print areas
+ * Default behaviour, or the "O" method, overwrites existing print area
+ * The "I" method, inserts the new print area before any specified index, or at the end of the list
+ * @throws Exception
+ * @return PHPExcel_Worksheet_PageSetup
+ */
+ public function setPrintAreaByColumnAndRow($column1, $row1, $column2, $row2, $index = 0, $method = self::SETPRINTRANGE_OVERWRITE)
{
- return $this->setPrintArea(PHPExcel_Cell::stringFromColumnIndex($column1) . $row1 . ':' . PHPExcel_Cell::stringFromColumnIndex($column2) . $row2);
+ return $this->setPrintArea(PHPExcel_Cell::stringFromColumnIndex($column1) . $row1 . ':' . PHPExcel_Cell::stringFromColumnIndex($column2) . $row2, $index, $method);
}
-
+
+ /**
+ * Add a new print area to the list of print areas
+ *
+ * @param int $column1 Column 1
+ * @param int $row1 Row 1
+ * @param int $column2 Column 2
+ * @param int $row2 Row 2
+ * @param int $index Identifier for a specific print area range allowing several ranges to be set
+ * A positive index will insert after that indexed entry in the print areas list, while a
+ * negative index will insert before the indexed entry.
+ * Specifying an index value of 0, will always append the new print range at the end of the
+ * list.
+ * Print areas are numbered from 1
+ * @throws Exception
+ * @return PHPExcel_Worksheet_PageSetup
+ */
+ public function addPrintAreaByColumnAndRow($column1, $row1, $column2, $row2, $index = -1)
+ {
+ return $this->setPrintArea(PHPExcel_Cell::stringFromColumnIndex($column1) . $row1 . ':' . PHPExcel_Cell::stringFromColumnIndex($column2) . $row2, $index, self::SETPRINTRANGE_INSERT);
+ }
+
/**
* Get first page number
*
@@ -627,7 +774,7 @@ class PHPExcel_Worksheet_PageSetup
public function getFirstPageNumber() {
return $this->_firstPageNumber;
}
-
+
/**
* Set first page number
*
@@ -638,7 +785,7 @@ class PHPExcel_Worksheet_PageSetup
$this->_firstPageNumber = $value;
return $this;
}
-
+
/**
* Reset first page number
*
diff --git a/libraries/PHPExcel/PHPExcel/Worksheet/Protection.php b/libraries/PHPExcel/PHPExcel/Worksheet/Protection.php
index 0e7bc4f..f60a265 100644
--- a/libraries/PHPExcel/PHPExcel/Worksheet/Protection.php
+++ b/libraries/PHPExcel/PHPExcel/Worksheet/Protection.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Worksheet
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/Worksheet/Row.php b/libraries/PHPExcel/PHPExcel/Worksheet/Row.php
index c5cb33a..7311721 100644
--- a/libraries/PHPExcel/PHPExcel/Worksheet/Row.php
+++ b/libraries/PHPExcel/PHPExcel/Worksheet/Row.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Worksheet
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/Worksheet/RowDimension.php b/libraries/PHPExcel/PHPExcel/Worksheet/RowDimension.php
index 8b1277d..153024f 100644
--- a/libraries/PHPExcel/PHPExcel/Worksheet/RowDimension.php
+++ b/libraries/PHPExcel/PHPExcel/Worksheet/RowDimension.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Worksheet
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/Worksheet/RowIterator.php b/libraries/PHPExcel/PHPExcel/Worksheet/RowIterator.php
index d21bd51..e0f91fc 100644
--- a/libraries/PHPExcel/PHPExcel/Worksheet/RowIterator.php
+++ b/libraries/PHPExcel/PHPExcel/Worksheet/RowIterator.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Worksheet
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/Worksheet/SheetView.php b/libraries/PHPExcel/PHPExcel/Worksheet/SheetView.php
index c7e04ae..fdfe001 100644
--- a/libraries/PHPExcel/PHPExcel/Worksheet/SheetView.php
+++ b/libraries/PHPExcel/PHPExcel/Worksheet/SheetView.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Worksheet
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/WorksheetIterator.php b/libraries/PHPExcel/PHPExcel/WorksheetIterator.php
index f6f6a6f..87f8b29 100644
--- a/libraries/PHPExcel/PHPExcel/WorksheetIterator.php
+++ b/libraries/PHPExcel/PHPExcel/WorksheetIterator.php
@@ -22,7 +22,7 @@
* @package PHPExcel
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/Writer/CSV.php b/libraries/PHPExcel/PHPExcel/Writer/CSV.php
index 03e1a6e..765244d 100644
--- a/libraries/PHPExcel/PHPExcel/Writer/CSV.php
+++ b/libraries/PHPExcel/PHPExcel/Writer/CSV.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Writer
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
@@ -106,6 +106,8 @@ class PHPExcel_Writer_CSV implements PHPExcel_Writer_IWriter {
// Fetch sheet
$sheet = $this->_phpExcel->getSheet($this->_sheetIndex);
+ $saveDebugLog = PHPExcel_Calculation::getInstance()->writeDebugLog;
+ PHPExcel_Calculation::getInstance()->writeDebugLog = false;
$saveArrayReturnType = PHPExcel_Calculation::getArrayReturnType();
PHPExcel_Calculation::setArrayReturnType(PHPExcel_Calculation::RETURN_ARRAY_AS_VALUE);
@@ -132,6 +134,7 @@ class PHPExcel_Writer_CSV implements PHPExcel_Writer_IWriter {
fclose($fileHandle);
PHPExcel_Calculation::setArrayReturnType($saveArrayReturnType);
+ PHPExcel_Calculation::getInstance()->writeDebugLog = $saveDebugLog;
}
/**
diff --git a/libraries/PHPExcel/PHPExcel/Writer/Excel2007.php b/libraries/PHPExcel/PHPExcel/Writer/Excel2007.php
index 1963ab9..b9f7464 100644
--- a/libraries/PHPExcel/PHPExcel/Writer/Excel2007.php
+++ b/libraries/PHPExcel/PHPExcel/Writer/Excel2007.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Writer_Excel2007
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
@@ -201,6 +201,8 @@ class PHPExcel_Writer_Excel2007 implements PHPExcel_Writer_IWriter
}
}
+ $saveDebugLog = PHPExcel_Calculation::getInstance()->writeDebugLog;
+ PHPExcel_Calculation::getInstance()->writeDebugLog = false;
$saveDateReturnType = PHPExcel_Calculation_Functions::getReturnDateType();
PHPExcel_Calculation_Functions::setReturnDateType(PHPExcel_Calculation_Functions::RETURNDATE_EXCEL);
@@ -331,6 +333,7 @@ class PHPExcel_Writer_Excel2007 implements PHPExcel_Writer_IWriter
}
PHPExcel_Calculation_Functions::setReturnDateType($saveDateReturnType);
+ PHPExcel_Calculation::getInstance()->writeDebugLog = $saveDebugLog;
// Close file
if ($objZip->close() === false) {
diff --git a/libraries/PHPExcel/PHPExcel/Writer/Excel2007/Comments.php b/libraries/PHPExcel/PHPExcel/Writer/Excel2007/Comments.php
index ddb7958..3a6ad37 100644
--- a/libraries/PHPExcel/PHPExcel/Writer/Excel2007/Comments.php
+++ b/libraries/PHPExcel/PHPExcel/Writer/Excel2007/Comments.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Writer_Excel2007
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/Writer/Excel2007/ContentTypes.php b/libraries/PHPExcel/PHPExcel/Writer/Excel2007/ContentTypes.php
index d27e386..84de96d 100644
--- a/libraries/PHPExcel/PHPExcel/Writer/Excel2007/ContentTypes.php
+++ b/libraries/PHPExcel/PHPExcel/Writer/Excel2007/ContentTypes.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Writer_Excel2007
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/Writer/Excel2007/DocProps.php b/libraries/PHPExcel/PHPExcel/Writer/Excel2007/DocProps.php
index 68e0f04..21fc3a4 100644
--- a/libraries/PHPExcel/PHPExcel/Writer/Excel2007/DocProps.php
+++ b/libraries/PHPExcel/PHPExcel/Writer/Excel2007/DocProps.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Writer_Excel2007
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/Writer/Excel2007/Drawing.php b/libraries/PHPExcel/PHPExcel/Writer/Excel2007/Drawing.php
index 670b835..f1551da 100644
--- a/libraries/PHPExcel/PHPExcel/Writer/Excel2007/Drawing.php
+++ b/libraries/PHPExcel/PHPExcel/Writer/Excel2007/Drawing.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Writer_Excel2007
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/Writer/Excel2007/Rels.php b/libraries/PHPExcel/PHPExcel/Writer/Excel2007/Rels.php
index d133621..7ffdd6d 100644
--- a/libraries/PHPExcel/PHPExcel/Writer/Excel2007/Rels.php
+++ b/libraries/PHPExcel/PHPExcel/Writer/Excel2007/Rels.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Writer_Excel2007
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/Writer/Excel2007/StringTable.php b/libraries/PHPExcel/PHPExcel/Writer/Excel2007/StringTable.php
index 8ab1c52..98a3c45 100644
--- a/libraries/PHPExcel/PHPExcel/Writer/Excel2007/StringTable.php
+++ b/libraries/PHPExcel/PHPExcel/Writer/Excel2007/StringTable.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Writer_Excel2007
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/Writer/Excel2007/Style.php b/libraries/PHPExcel/PHPExcel/Writer/Excel2007/Style.php
index dd7621d..5354936 100644
--- a/libraries/PHPExcel/PHPExcel/Writer/Excel2007/Style.php
+++ b/libraries/PHPExcel/PHPExcel/Writer/Excel2007/Style.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Writer_Excel2007
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/Writer/Excel2007/Theme.php b/libraries/PHPExcel/PHPExcel/Writer/Excel2007/Theme.php
index 9dbee16..e8ffe7b 100644
--- a/libraries/PHPExcel/PHPExcel/Writer/Excel2007/Theme.php
+++ b/libraries/PHPExcel/PHPExcel/Writer/Excel2007/Theme.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Writer_Excel2007
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/Writer/Excel2007/Workbook.php b/libraries/PHPExcel/PHPExcel/Writer/Excel2007/Workbook.php
index 245fb87..d2c51fb 100644
--- a/libraries/PHPExcel/PHPExcel/Writer/Excel2007/Workbook.php
+++ b/libraries/PHPExcel/PHPExcel/Writer/Excel2007/Workbook.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Writer_Excel2007
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/Writer/Excel2007/Worksheet.php b/libraries/PHPExcel/PHPExcel/Writer/Excel2007/Worksheet.php
index 411b42a..327e542 100644
--- a/libraries/PHPExcel/PHPExcel/Writer/Excel2007/Worksheet.php
+++ b/libraries/PHPExcel/PHPExcel/Writer/Excel2007/Worksheet.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Writer_Excel2007
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
@@ -1002,7 +1002,18 @@ class PHPExcel_Writer_Excel2007_Worksheet extends PHPExcel_Writer_Excel2007_Writ
break;
case 'f': // Formula
- $objWriter->writeElement('f', substr($pCell->getValue(), 1));
+ $attributes = $pCell->getFormulaAttributes();
+ if($attributes['t'] == 'array') {
+ $objWriter->startElement('f');
+ $objWriter->writeAttribute('t', 'array');
+ $objWriter->writeAttribute('ref', $pCell->getCoordinate());
+ $objWriter->writeAttribute('aca', '1');
+ $objWriter->writeAttribute('ca', '1');
+ $objWriter->text(substr($pCell->getValue(), 1));
+ $objWriter->endElement();
+ } else {
+ $objWriter->writeElement('f', substr($pCell->getValue(), 1));
+ }
if ($this->getParentWriter()->getOffice2003Compatibility() === false) {
if ($this->getParentWriter()->getPreCalculateFormulas()) {
$calculatedValue = $pCell->getCalculatedValue();
diff --git a/libraries/PHPExcel/PHPExcel/Writer/Excel2007/WriterPart.php b/libraries/PHPExcel/PHPExcel/Writer/Excel2007/WriterPart.php
index c153237..97d56e1 100644
--- a/libraries/PHPExcel/PHPExcel/Writer/Excel2007/WriterPart.php
+++ b/libraries/PHPExcel/PHPExcel/Writer/Excel2007/WriterPart.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Writer_Excel2007
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/Writer/Excel5.php b/libraries/PHPExcel/PHPExcel/Writer/Excel5.php
index 0bb5571..4d69d91 100644
--- a/libraries/PHPExcel/PHPExcel/Writer/Excel5.php
+++ b/libraries/PHPExcel/PHPExcel/Writer/Excel5.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Writer_Excel5
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
@@ -91,6 +91,13 @@ class PHPExcel_Writer_Excel5 implements PHPExcel_Writer_IWriter
*/
private $_parser;
+ /**
+ * Identifier clusters for drawings. Used in MSODRAWINGGROUP record.
+ *
+ * @var array
+ */
+ private $_IDCLs;
+
/**
* Create a new PHPExcel_Writer_Excel5
@@ -120,6 +127,8 @@ class PHPExcel_Writer_Excel5 implements PHPExcel_Writer_IWriter
// garbage collect
$this->_phpExcel->garbageCollect();
+ $saveDebugLog = PHPExcel_Calculation::getInstance()->writeDebugLog;
+ PHPExcel_Calculation::getInstance()->writeDebugLog = false;
$saveDateReturnType = PHPExcel_Calculation_Functions::getReturnDateType();
PHPExcel_Calculation_Functions::setReturnDateType(PHPExcel_Calculation_Functions::RETURNDATE_EXCEL);
@@ -130,6 +139,21 @@ class PHPExcel_Writer_Excel5 implements PHPExcel_Writer_IWriter
$this->_writerWorkbook = new PHPExcel_Writer_Excel5_Workbook($this->_phpExcel, $this->_BIFF_version,
$this->_str_total, $this->_str_unique, $this->_str_table, $this->_colors, $this->_parser);
+ // Initialise worksheet writers
+ $countSheets = $this->_phpExcel->getSheetCount();
+ for ($i = 0; $i < $countSheets; ++$i) {
+ $this->_writerWorksheets[$i] = new PHPExcel_Writer_Excel5_Worksheet($this->_BIFF_version,
+ $this->_str_total, $this->_str_unique,
+ $this->_str_table, $this->_colors,
+ $this->_parser,
+ $this->_preCalculateFormulas,
+ $this->_phpExcel->getSheet($i));
+ }
+
+ // build Escher objects. Escher objects for workbooks needs to be build before Escher object for workbook.
+ $this->_buildWorksheetEschers();
+ $this->_buildWorkbookEscher();
+
// add 15 identical cell style Xfs
// for now, we use the first cellXf instead of cellStyleXf
$cellXfCollection = $this->_phpExcel->getCellXfCollection();
@@ -146,19 +170,10 @@ class PHPExcel_Writer_Excel5 implements PHPExcel_Writer_IWriter
$workbookStreamName = ($this->_BIFF_version == 0x0600) ? 'Workbook' : 'Book';
$OLE = new PHPExcel_Shared_OLE_PPS_File(PHPExcel_Shared_OLE::Asc2Ucs($workbookStreamName));
- // Initialise worksheet writers
- $countSheets = $this->_phpExcel->getSheetCount();
// Write the worksheet streams before the global workbook stream,
// because the byte sizes of these are needed in the global workbook stream
$worksheetSizes = array();
for ($i = 0; $i < $countSheets; ++$i) {
- $this->_writerWorksheets[$i] = new PHPExcel_Writer_Excel5_Worksheet($this->_BIFF_version,
- $this->_str_total, $this->_str_unique,
- $this->_str_table, $this->_colors,
- $this->_parser,
- $this->_preCalculateFormulas,
- $this->_phpExcel->getSheet($i));
-
$this->_writerWorksheets[$i]->close();
$worksheetSizes[] = $this->_writerWorksheets[$i]->_datasize;
}
@@ -176,6 +191,7 @@ class PHPExcel_Writer_Excel5 implements PHPExcel_Writer_IWriter
$res = $root->save($pFilename);
PHPExcel_Calculation_Functions::setReturnDateType($saveDateReturnType);
+ PHPExcel_Calculation::getInstance()->writeDebugLog = $saveDebugLog;
}
/**
@@ -208,4 +224,253 @@ class PHPExcel_Writer_Excel5 implements PHPExcel_Writer_IWriter
$this->_preCalculateFormulas = $pValue;
}
+ private function _buildWorksheetEschers()
+ {
+ // 1-based index to BstoreContainer
+ $blipIndex = 0;
+
+ foreach ($this->_phpExcel->getAllsheets() as $sheet) {
+ // sheet index
+ $sheetIndex = $sheet->getParent()->getIndex($sheet);
+
+ $escher = null;
+
+ // check if there are any shapes for this sheet
+ if (count($sheet->getDrawingCollection()) == 0) {
+ continue;
+ }
+
+ // create intermediate Escher object
+ $escher = new PHPExcel_Shared_Escher();
+
+ // dgContainer
+ $dgContainer = new PHPExcel_Shared_Escher_DgContainer();
+
+ // set the drawing index (we use sheet index + 1)
+ $dgId = $sheet->getParent()->getIndex($sheet) + 1;
+ $dgContainer->setDgId($dgId);
+ $escher->setDgContainer($dgContainer);
+
+ // spgrContainer
+ $spgrContainer = new PHPExcel_Shared_Escher_DgContainer_SpgrContainer();
+ $dgContainer->setSpgrContainer($spgrContainer);
+
+ // add one shape which is the group shape
+ $spContainer = new PHPExcel_Shared_Escher_DgContainer_SpgrContainer_SpContainer();
+ $spContainer->setSpgr(true);
+ $spContainer->setSpType(0);
+ $spContainer->setSpId(($sheet->getParent()->getIndex($sheet) + 1) << 10);
+ $spgrContainer->addChild($spContainer);
+
+ // add the shapes
+
+ $countShapes[$sheetIndex] = 0; // count number of shapes (minus group shape), in sheet
+
+ foreach ($sheet->getDrawingCollection() as $drawing) {
+ ++$blipIndex;
+
+ ++$countShapes[$sheetIndex];
+
+ // add the shape
+ $spContainer = new PHPExcel_Shared_Escher_DgContainer_SpgrContainer_SpContainer();
+
+ // set the shape type
+ $spContainer->setSpType(0x004B);
+
+ // set the shape index (we combine 1-based sheet index and $countShapes to create unique shape index)
+ $reducedSpId = $countShapes[$sheetIndex];
+ $spId = $reducedSpId
+ | ($sheet->getParent()->getIndex($sheet) + 1) << 10;
+ $spContainer->setSpId($spId);
+
+ // keep track of last reducedSpId
+ $lastReducedSpId = $reducedSpId;
+
+ // keep track of last spId
+ $lastSpId = $spId;
+
+ // set the BLIP index
+ $spContainer->setOPT(0x4104, $blipIndex);
+
+ // set coordinates and offsets, client anchor
+ $coordinates = $drawing->getCoordinates();
+ $offsetX = $drawing->getOffsetX();
+ $offsetY = $drawing->getOffsetY();
+ $width = $drawing->getWidth();
+ $height = $drawing->getHeight();
+
+ $twoAnchor = PHPExcel_Shared_Excel5::oneAnchor2twoAnchor($sheet, $coordinates, $offsetX, $offsetY, $width, $height);
+
+ $spContainer->setStartCoordinates($twoAnchor['startCoordinates']);
+ $spContainer->setStartOffsetX($twoAnchor['startOffsetX']);
+ $spContainer->setStartOffsetY($twoAnchor['startOffsetY']);
+ $spContainer->setEndCoordinates($twoAnchor['endCoordinates']);
+ $spContainer->setEndOffsetX($twoAnchor['endOffsetX']);
+ $spContainer->setEndOffsetY($twoAnchor['endOffsetY']);
+
+ $spgrContainer->addChild($spContainer);
+ }
+
+ // identifier clusters, used for workbook Escher object
+ $this->_IDCLs[$dgId] = $lastReducedSpId;
+
+ // set last shape index
+ $dgContainer->setLastSpId($lastSpId);
+
+ // set the Escher object
+ $this->_writerWorksheets[$sheetIndex]->setEscher($escher);
+ }
+ }
+
+ /**
+ * Build the Escher object corresponding to the MSODRAWINGGROUP record
+ */
+ private function _buildWorkbookEscher()
+ {
+ $escher = null;
+
+ // any drawings in this workbook?
+ $found = false;
+ foreach ($this->_phpExcel->getAllSheets() as $sheet) {
+ if (count($sheet->getDrawingCollection()) > 0) {
+ $found = true;
+ }
+ }
+
+ // nothing to do if there are no drawings
+ if (!$found) {
+ return;
+ }
+
+ // if we reach here, then there are drawings in the workbook
+ $escher = new PHPExcel_Shared_Escher();
+
+ // dggContainer
+ $dggContainer = new PHPExcel_Shared_Escher_DggContainer();
+ $escher->setDggContainer($dggContainer);
+
+ // set IDCLs (identifier clusters)
+ $dggContainer->setIDCLs($this->_IDCLs);
+
+ // this loop is for determining maximum shape identifier of all drawing
+ $spIdMax = 0;
+ $totalCountShapes = 0;
+ $countDrawings = 0;
+
+ foreach ($this->_phpExcel->getAllsheets() as $sheet) {
+ $sheetCountShapes = 0; // count number of shapes (minus group shape), in sheet
+
+ if (count($sheet->getDrawingCollection()) > 0) {
+ ++$countDrawings;
+
+ foreach ($sheet->getDrawingCollection() as $drawing) {
+ ++$sheetCountShapes;
+ ++$totalCountShapes;
+
+ $spId = $sheetCountShapes
+ | ($this->_phpExcel->getIndex($sheet) + 1) << 10;
+ $spIdMax = max($spId, $spIdMax);
+ }
+ }
+ }
+
+ $dggContainer->setSpIdMax($spIdMax + 1);
+ $dggContainer->setCDgSaved($countDrawings);
+ $dggContainer->setCSpSaved($totalCountShapes + $countDrawings); // total number of shapes incl. one group shapes per drawing
+
+ // bstoreContainer
+ $bstoreContainer = new PHPExcel_Shared_Escher_DggContainer_BstoreContainer();
+ $dggContainer->setBstoreContainer($bstoreContainer);
+
+ // the BSE's (all the images)
+ foreach ($this->_phpExcel->getAllsheets() as $sheet) {
+ foreach ($sheet->getDrawingCollection() as $drawing) {
+ if ($drawing instanceof PHPExcel_Worksheet_Drawing) {
+
+ $filename = $drawing->getPath();
+
+ list($imagesx, $imagesy, $imageFormat) = getimagesize($filename);
+
+ switch ($imageFormat) {
+
+ case 1: // GIF, not supported by BIFF8, we convert to PNG
+ $blipType = PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE::BLIPTYPE_PNG;
+ $imageResource = imagecreatefromgif($filename);
+ ob_start();
+ imagepng($imageResource);
+ $blipData = ob_get_contents();
+ ob_end_clean();
+ break;
+
+ case 2: // JPEG
+ $blipType = PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE::BLIPTYPE_JPEG;
+ $blipData = file_get_contents($filename);
+ break;
+
+ case 3: // PNG
+ $blipType = PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE::BLIPTYPE_PNG;
+ $blipData = file_get_contents($filename);
+ break;
+
+ case 6: // Windows DIB (BMP), we convert to PNG
+ $blipType = PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE::BLIPTYPE_PNG;
+ $imageResource = PHPExcel_Shared_Drawing::imagecreatefrombmp($filename);
+ ob_start();
+ imagepng($imageResource);
+ $blipData = ob_get_contents();
+ ob_end_clean();
+ break;
+
+ default: continue 2;
+
+ }
+
+ $blip = new PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE_Blip();
+ $blip->setData($blipData);
+
+ $BSE = new PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE();
+ $BSE->setBlipType($blipType);
+ $BSE->setBlip($blip);
+
+ $bstoreContainer->addBSE($BSE);
+
+ } else if ($drawing instanceof PHPExcel_Worksheet_MemoryDrawing) {
+
+ switch ($drawing->getRenderingFunction()) {
+
+ case PHPExcel_Worksheet_MemoryDrawing::RENDERING_JPEG:
+ $blipType = PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE::BLIPTYPE_JPEG;
+ $renderingFunction = 'imagejpeg';
+ break;
+
+ case PHPExcel_Worksheet_MemoryDrawing::RENDERING_GIF:
+ case PHPExcel_Worksheet_MemoryDrawing::RENDERING_PNG:
+ case PHPExcel_Worksheet_MemoryDrawing::RENDERING_DEFAULT:
+ $blipType = PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE::BLIPTYPE_PNG;
+ $renderingFunction = 'imagepng';
+ break;
+
+ }
+
+ ob_start();
+ call_user_func($renderingFunction, $drawing->getImageResource());
+ $blipData = ob_get_contents();
+ ob_end_clean();
+
+ $blip = new PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE_Blip();
+ $blip->setData($blipData);
+
+ $BSE = new PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE();
+ $BSE->setBlipType($blipType);
+ $BSE->setBlip($blip);
+
+ $bstoreContainer->addBSE($BSE);
+ }
+ }
+ }
+
+ // Set the Escher object
+ $this->_writerWorkbook->setEscher($escher);
+ }
+
}
diff --git a/libraries/PHPExcel/PHPExcel/Writer/Excel5/BIFFwriter.php b/libraries/PHPExcel/PHPExcel/Writer/Excel5/BIFFwriter.php
index 2c0a2d1..e758aeb 100644
--- a/libraries/PHPExcel/PHPExcel/Writer/Excel5/BIFFwriter.php
+++ b/libraries/PHPExcel/PHPExcel/Writer/Excel5/BIFFwriter.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Writer_Excel5
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
// Original file header of PEAR::Spreadsheet_Excel_Writer_BIFFwriter (used as the base for this class):
diff --git a/libraries/PHPExcel/PHPExcel/Writer/Excel5/Escher.php b/libraries/PHPExcel/PHPExcel/Writer/Excel5/Escher.php
index 402bd19..3c9c29f 100644
--- a/libraries/PHPExcel/PHPExcel/Writer/Excel5/Escher.php
+++ b/libraries/PHPExcel/PHPExcel/Writer/Excel5/Escher.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Writer_Excel5
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
@@ -106,9 +106,12 @@ class PHPExcel_Writer_Excel5_Escher
, $this->_object->getCSpSaved()
, $this->_object->getCDgSaved() // count total number of drawings saved
);
+
// add file identifier clusters (one per drawing)
- for ($i = 0; $i < $this->_object->getCDgSaved(); ++$i) {
- $dggData .= pack('VV', 0, 0);
+ $IDCLs = $this->_object->getIDCLs();
+
+ foreach ($IDCLs as $dgId => $maxReducedSpId) {
+ $dggData .= pack('VV', $dgId, $maxReducedSpId + 1);
}
$header = pack('vvV', $recVerInstance, $recType, strlen($dggData));
diff --git a/libraries/PHPExcel/PHPExcel/Writer/Excel5/Font.php b/libraries/PHPExcel/PHPExcel/Writer/Excel5/Font.php
index bb4d201..2928070 100644
--- a/libraries/PHPExcel/PHPExcel/Writer/Excel5/Font.php
+++ b/libraries/PHPExcel/PHPExcel/Writer/Excel5/Font.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Writer_Excel5
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/Writer/Excel5/Parser.php b/libraries/PHPExcel/PHPExcel/Writer/Excel5/Parser.php
index cef650f..eb9891e 100644
--- a/libraries/PHPExcel/PHPExcel/Writer/Excel5/Parser.php
+++ b/libraries/PHPExcel/PHPExcel/Writer/Excel5/Parser.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Writer_Excel5
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
// Original file header of PEAR::Spreadsheet_Excel_Writer_Parser (used as the base for this class):
@@ -1148,6 +1148,9 @@ class PHPExcel_Writer_Excel5_Parser
case "<>":
return $token;
break;
+ case "^":
+ return $token;
+ break;
default:
// if it's a reference A1 or $A$1 or $A1 or A$1
if (preg_match('/^\$?[A-Ia-i]?[A-Za-z]\$?[0-9]+$/',$token) and
@@ -1288,19 +1291,30 @@ class PHPExcel_Writer_Excel5_Parser
$result2 = $this->_expression();
$result = $this->_createTree('ptgUminus', $result2, '');
return $result;
+ } elseif ($this->_current_token == "+") {
+ // catch "+" Term
+ $this->_advance();
+ $result2 = $this->_expression();
+ $result = $this->_createTree('ptgUplus', $result2, '');
+ return $result;
}
$result = $this->_term();
while (($this->_current_token == "+") or
- ($this->_current_token == "-")) {
+ ($this->_current_token == "-") or
+ ($this->_current_token == "^")) {
/**/
if ($this->_current_token == "+") {
$this->_advance();
$result2 = $this->_term();
$result = $this->_createTree('ptgAdd', $result, $result2);
- } else {
+ } elseif ($this->_current_token == "-") {
$this->_advance();
$result2 = $this->_term();
$result = $this->_createTree('ptgSub', $result, $result2);
+ } else {
+ $this->_advance();
+ $result2 = $this->_term();
+ $result = $this->_createTree('ptgPower', $result, $result2);
}
}
return $result;
diff --git a/libraries/PHPExcel/PHPExcel/Writer/Excel5/Workbook.php b/libraries/PHPExcel/PHPExcel/Writer/Excel5/Workbook.php
index d26ddee..6e517e6 100644
--- a/libraries/PHPExcel/PHPExcel/Writer/Excel5/Workbook.php
+++ b/libraries/PHPExcel/PHPExcel/Writer/Excel5/Workbook.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Writer_Excel5
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
// Original file header of PEAR::Spreadsheet_Excel_Writer_Workbook (used as the base for this class):
@@ -182,6 +182,13 @@ class PHPExcel_Writer_Excel5_Workbook extends PHPExcel_Writer_Excel5_BIFFwriter
*/
private $_colors;
+ /**
+ * Escher object corresponding to MSODRAWINGGROUP
+ *
+ * @var PHPExcel_Shared_Escher
+ */
+ private $_escher;
+
/**
* Class constructor
@@ -1400,143 +1407,9 @@ class PHPExcel_Writer_Excel5_Workbook extends PHPExcel_Writer_Excel5_BIFFwriter
*/
private function _writeMsoDrawingGroup()
{
- // any drawings in this workbook?
- $found = false;
- foreach ($this->_phpExcel->getAllSheets() as $sheet) {
- if (count($sheet->getDrawingCollection()) > 0) {
- $found = true;
- }
- }
-
- // if there are drawings, then we need to write MSODRAWINGGROUP record
- if ($found) {
-
- // create intermediate Escher object
- $escher = new PHPExcel_Shared_Escher();
-
- // dggContainer
- $dggContainer = new PHPExcel_Shared_Escher_DggContainer();
- $escher->setDggContainer($dggContainer);
-
- // this loop is for determining maximum shape identifier of all drawing
- $spIdMax = 0;
- $totalCountShapes = 0;
- $countDrawings = 0;
-
- foreach ($this->_phpExcel->getAllsheets() as $sheet) {
- $sheetCountShapes = 0; // count number of shapes (minus group shape), in sheet
-
- if (count($sheet->getDrawingCollection()) > 0) {
- ++$countDrawings;
-
- foreach ($sheet->getDrawingCollection() as $drawing) {
- ++$sheetCountShapes;
- ++$totalCountShapes;
-
- $spId = $sheetCountShapes
- | ($this->_phpExcel->getIndex($sheet) + 1) << 10;
- $spIdMax = max($spId, $spIdMax);
- }
- }
- }
-
- $dggContainer->setSpIdMax($spIdMax + 1);
- $dggContainer->setCDgSaved($countDrawings);
- $dggContainer->setCSpSaved($totalCountShapes + $countDrawings); // total number of shapes incl. one group shapes per drawing
-
- // bstoreContainer
- $bstoreContainer = new PHPExcel_Shared_Escher_DggContainer_BstoreContainer();
- $dggContainer->setBstoreContainer($bstoreContainer);
-
- // the BSE's (all the images)
- foreach ($this->_phpExcel->getAllsheets() as $sheet) {
- foreach ($sheet->getDrawingCollection() as $drawing) {
- if ($drawing instanceof PHPExcel_Worksheet_Drawing) {
-
- $filename = $drawing->getPath();
-
- list($imagesx, $imagesy, $imageFormat) = getimagesize($filename);
-
- switch ($imageFormat) {
-
- case 1: // GIF, not supported by BIFF8, we convert to PNG
- $blipType = PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE::BLIPTYPE_PNG;
- $imageResource = imagecreatefromgif($filename);
- ob_start();
- imagepng($imageResource);
- $blipData = ob_get_contents();
- ob_end_clean();
- break;
-
- case 2: // JPEG
- $blipType = PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE::BLIPTYPE_JPEG;
- $blipData = file_get_contents($filename);
- break;
-
- case 3: // PNG
- $blipType = PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE::BLIPTYPE_PNG;
- $blipData = file_get_contents($filename);
- break;
-
- case 6: // Windows DIB (BMP), we convert to PNG
- $blipType = PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE::BLIPTYPE_PNG;
- $imageResource = PHPExcel_Shared_Drawing::imagecreatefrombmp($filename);
- ob_start();
- imagepng($imageResource);
- $blipData = ob_get_contents();
- ob_end_clean();
- break;
-
- default: continue 2;
-
- }
-
- $blip = new PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE_Blip();
- $blip->setData($blipData);
-
- $BSE = new PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE();
- $BSE->setBlipType($blipType);
- $BSE->setBlip($blip);
-
- $bstoreContainer->addBSE($BSE);
-
- } else if ($drawing instanceof PHPExcel_Worksheet_MemoryDrawing) {
-
- switch ($drawing->getRenderingFunction()) {
-
- case PHPExcel_Worksheet_MemoryDrawing::RENDERING_JPEG:
- $blipType = PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE::BLIPTYPE_JPEG;
- $renderingFunction = 'imagejpeg';
- break;
-
- case PHPExcel_Worksheet_MemoryDrawing::RENDERING_GIF:
- case PHPExcel_Worksheet_MemoryDrawing::RENDERING_PNG:
- case PHPExcel_Worksheet_MemoryDrawing::RENDERING_DEFAULT:
- $blipType = PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE::BLIPTYPE_PNG;
- $renderingFunction = 'imagepng';
- break;
-
- }
-
- ob_start();
- call_user_func($renderingFunction, $drawing->getImageResource());
- $blipData = ob_get_contents();
- ob_end_clean();
-
- $blip = new PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE_Blip();
- $blip->setData($blipData);
-
- $BSE = new PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE();
- $BSE->setBlipType($blipType);
- $BSE->setBlip($blip);
-
- $bstoreContainer->addBSE($BSE);
- }
- }
- }
-
- // write the Escher stream from the intermediate Escher object
- $writer = new PHPExcel_Writer_Excel5_Escher($escher);
+ // write the Escher stream if necessary
+ if (isset($this->_escher)) {
+ $writer = new PHPExcel_Writer_Excel5_Escher($this->_escher);
$data = $writer->close();
$record = 0x00EB;
@@ -1544,7 +1417,30 @@ class PHPExcel_Writer_Excel5_Workbook extends PHPExcel_Writer_Excel5_BIFFwriter
$header = pack("vv", $record, $length);
return $this->writeData($header . $data);
+
+ } else {
+ return '';
}
}
+ /**
+ * Get Escher object
+ *
+ * @return PHPExcel_Shared_Escher
+ */
+ public function getEscher()
+ {
+ return $this->_escher;
+ }
+
+ /**
+ * Set Escher object
+ *
+ * @param PHPExcel_Shared_Escher $pValue
+ */
+ public function setEscher(PHPExcel_Shared_Escher $pValue = null)
+ {
+ $this->_escher = $pValue;
+ }
+
}
diff --git a/libraries/PHPExcel/PHPExcel/Writer/Excel5/Worksheet.php b/libraries/PHPExcel/PHPExcel/Writer/Excel5/Worksheet.php
index 646101a..0dd2b00 100644
--- a/libraries/PHPExcel/PHPExcel/Writer/Excel5/Worksheet.php
+++ b/libraries/PHPExcel/PHPExcel/Writer/Excel5/Worksheet.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Writer_Excel5
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
// Original file header of PEAR::Spreadsheet_Excel_Writer_Worksheet (used as the base for this class):
@@ -186,6 +186,13 @@ class PHPExcel_Writer_Excel5_Worksheet extends PHPExcel_Writer_Excel5_BIFFwriter
private $_countCellStyleXfs;
/**
+ * Escher object corresponding to MSODRAWING
+ *
+ * @var PHPExcel_Shared_Escher
+ */
+ private $_escher;
+
+ /**
* Constructor
*
* @param int $BIFF_version BIFF version
@@ -2694,142 +2701,82 @@ class PHPExcel_Writer_Excel5_Worksheet extends PHPExcel_Writer_Excel5_BIFFwriter
}
/**
- * Write MSODRAWING record
+ * Get Escher object
+ *
+ * @return PHPExcel_Shared_Escher
*/
- private function _writeMsoDrawing()
+ public function getEscher()
{
- // check if there are any shapes for this sheet
- if (count($this->_phpSheet->getDrawingCollection()) == 0) {
- return;
- }
-
- // create intermediate Escher object
- $escher = new PHPExcel_Shared_Escher();
-
- // dgContainer
- $dgContainer = new PHPExcel_Shared_Escher_DgContainer();
-
- // set the drawing index (we use sheet index + 1)
- $dgContainer->setDgId($this->_phpSheet->getParent()->getIndex($this->_phpSheet) + 1);
- $escher->setDgContainer($dgContainer);
-
- // spgrContainer
- $spgrContainer = new PHPExcel_Shared_Escher_DgContainer_SpgrContainer();
- $dgContainer->setSpgrContainer($spgrContainer);
-
- // add one shape which is the group shape
- $spContainer = new PHPExcel_Shared_Escher_DgContainer_SpgrContainer_SpContainer();
- $spContainer->setSpgr(true);
- $spContainer->setSpType(0);
- $spContainer->setSpId(($this->_phpSheet->getParent()->getIndex($this->_phpSheet) + 1) << 10);
- $spgrContainer->addChild($spContainer);
-
- // add the shapes
-
- // outer loop is for determining BSE index
- $blipIndex = 0; // 1-based index to BstoreContainer
-
- $countShapes = 0; // count number of shapes (minus group shape), in this sheet
-
- foreach ($this->_phpSheet->getParent()->getAllsheets() as $sheet) {
- foreach ($sheet->getDrawingCollection() as $drawing) {
- ++$blipIndex;
-
- if ($sheet === $this->_phpSheet) {
- ++$countShapes;
-
- // add the shape
- $spContainer = new PHPExcel_Shared_Escher_DgContainer_SpgrContainer_SpContainer();
-
- // set the shape type
- $spContainer->setSpType(0x004B);
-
- // set the shape index (we combine 1-based sheet index and $countShapes to create unique shape index)
- $spId = $countShapes
- | ($this->_phpSheet->getParent()->getIndex($this->_phpSheet) + 1) << 10;
- $spContainer->setSpId($spId);
-
- // keep track of last spId
- $lastSpId = $spId;
-
- // set the BLIP index
- $spContainer->setOPT(0x4104, $blipIndex);
-
- // set coordinates and offsets, client anchor
- $coordinates = $drawing->getCoordinates();
- $offsetX = $drawing->getOffsetX();
- $offsetY = $drawing->getOffsetY();
- $width = $drawing->getWidth();
- $height = $drawing->getHeight();
-
- $twoAnchor = PHPExcel_Shared_Excel5::oneAnchor2twoAnchor($this->_phpSheet, $coordinates, $offsetX, $offsetY, $width, $height);
+ return $this->_escher;
+ }
- $spContainer->setStartCoordinates($twoAnchor['startCoordinates']);
- $spContainer->setStartOffsetX($twoAnchor['startOffsetX']);
- $spContainer->setStartOffsetY($twoAnchor['startOffsetY']);
- $spContainer->setEndCoordinates($twoAnchor['endCoordinates']);
- $spContainer->setEndOffsetX($twoAnchor['endOffsetX']);
- $spContainer->setEndOffsetY($twoAnchor['endOffsetY']);
+ /**
+ * Set Escher object
+ *
+ * @param PHPExcel_Shared_Escher $pValue
+ */
+ public function setEscher(PHPExcel_Shared_Escher $pValue = null)
+ {
+ $this->_escher = $pValue;
+ }
- $spgrContainer->addChild($spContainer);
- }
+ /**
+ * Write MSODRAWING record
+ */
+ private function _writeMsoDrawing()
+ {
+ // write the Escher stream if necessary
+ if (isset($this->_escher)) {
+ $writer = new PHPExcel_Writer_Excel5_Escher($this->_escher);
+ $data = $writer->close();
+ $spOffsets = $writer->getSpOffsets();
+
+ // write the neccesary MSODRAWING, OBJ records
+
+ // split the Escher stream
+ $spOffsets[0] = 0;
+ $nm = count($spOffsets) - 1; // number of shapes excluding first shape
+ for ($i = 1; $i <= $nm; ++$i) {
+ // MSODRAWING record
+ $record = 0x00EC; // Record identifier
+
+ // chunk of Escher stream for one shape
+
+ $dataChunk = substr($data, $spOffsets[$i -1], $spOffsets[$i] - $spOffsets[$i - 1]);
+
+ $length = strlen($dataChunk);
+ $header = pack("vv", $record, $length);
+
+ $this->_append($header . $dataChunk);
+
+ // OBJ record
+ $record = 0x005D; // record identifier
+ $objData = '';
+
+ // ftCmo
+ $objData .=
+ pack('vvvvvVVV'
+ , 0x0015 // 0x0015 = ftCmo
+ , 0x0012 // length of ftCmo data
+ , 0x0008 // object type, 0x0008 = picture
+ , $i // object id number, Excel seems to use 1-based index, local for the sheet
+ , 0x6011 // option flags, 0x6011 is what OpenOffice.org uses
+ , 0 // reserved
+ , 0 // reserved
+ , 0 // reserved
+ );
+ // ftEnd
+ $objData .=
+ pack('vv'
+ , 0x0000 // 0x0000 = ftEnd
+ , 0x0000 // length of ftEnd data
+ );
+
+ $length = strlen($objData);
+ $header = pack('vv', $record, $length);
+ $this->_append($header . $objData);
}
}
-
- // set last shape index
- $dgContainer->setLastSpId($lastSpId);
-
- // write the Escher stream
- $writer = new PHPExcel_Writer_Excel5_Escher($escher);
- $data = $writer->close();
- $spOffsets = $writer->getSpOffsets();
-
- // write the neccesary MSODRAWING, OBJ records
-
- // split the Escher stream
- $spOffsets[0] = 0;
- $nm = count($spOffsets) - 1; // number of shapes excluding first shape
- for ($i = 1; $i <= $nm; ++$i) {
- // MSODRAWING record
- $record = 0x00EC; // Record identifier
-
- // chunk of Escher stream for one shape
-
- $dataChunk = substr($data, $spOffsets[$i -1], $spOffsets[$i] - $spOffsets[$i - 1]);
-
- $length = strlen($dataChunk);
- $header = pack("vv", $record, $length);
-
- $this->_append($header . $dataChunk);
-
- // OBJ record
- $record = 0x005D; // record identifier
- $objData = '';
-
- // ftCmo
- $objData .=
- pack('vvvvvVVV'
- , 0x0015 // 0x0015 = ftCmo
- , 0x0012 // length of ftCmo data
- , 0x0008 // object type, 0x0008 = picture
- , $i // object id number, Excel seems to use 1-based index, local for the sheet
- , 0x6011 // option flags, 0x6011 is what OpenOffice.org uses
- , 0 // reserved
- , 0 // reserved
- , 0 // reserved
- );
- // ftEnd
- $objData .=
- pack('vv'
- , 0x0000 // 0x0000 = ftEnd
- , 0x0000 // length of ftEnd data
- );
-
- $length = strlen($objData);
- $header = pack('vv', $record, $length);
- $this->_append($header . $objData);
- }
-
}
/**
@@ -3006,4 +2953,4 @@ class PHPExcel_Writer_Excel5_Worksheet extends PHPExcel_Writer_Excel5_BIFFwriter
return 0;
}
-}
+}
\ No newline at end of file
diff --git a/libraries/PHPExcel/PHPExcel/Writer/Excel5/Xf.php b/libraries/PHPExcel/PHPExcel/Writer/Excel5/Xf.php
index 9246a34..27632f3 100644
--- a/libraries/PHPExcel/PHPExcel/Writer/Excel5/Xf.php
+++ b/libraries/PHPExcel/PHPExcel/Writer/Excel5/Xf.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Writer_Excel5
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
// Original file header of PEAR::Spreadsheet_Excel_Writer_Format (used as the base for this class):
diff --git a/libraries/PHPExcel/PHPExcel/Writer/HTML.php b/libraries/PHPExcel/PHPExcel/Writer/HTML.php
index 3c892cf..b6667f5 100644
--- a/libraries/PHPExcel/PHPExcel/Writer/HTML.php
+++ b/libraries/PHPExcel/PHPExcel/Writer/HTML.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Writer
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
@@ -152,6 +152,8 @@ class PHPExcel_Writer_HTML implements PHPExcel_Writer_IWriter {
// garbage collect
$this->_phpExcel->garbageCollect();
+ $saveDebugLog = PHPExcel_Calculation::getInstance()->writeDebugLog;
+ PHPExcel_Calculation::getInstance()->writeDebugLog = false;
$saveArrayReturnType = PHPExcel_Calculation::getArrayReturnType();
PHPExcel_Calculation::setArrayReturnType(PHPExcel_Calculation::RETURN_ARRAY_AS_VALUE);
@@ -182,6 +184,7 @@ class PHPExcel_Writer_HTML implements PHPExcel_Writer_IWriter {
fclose($fileHandle);
PHPExcel_Calculation::setArrayReturnType($saveArrayReturnType);
+ PHPExcel_Calculation::getInstance()->writeDebugLog = $saveDebugLog;
}
/**
@@ -330,7 +333,7 @@ class PHPExcel_Writer_HTML implements PHPExcel_Writer_IWriter {
// row min,max
$rowMin = $dimension[0][1];
$rowMax = $dimension[1][1];
-
+
// calculate start of <tbody>, <thead>
$tbodyStart = $rowMin;
$tbodyEnd = $rowMax;
@@ -338,7 +341,7 @@ class PHPExcel_Writer_HTML implements PHPExcel_Writer_IWriter {
$theadEnd = 0; // default: no </thead>
if ($sheet->getPageSetup()->isRowsToRepeatAtTopSet()) {
$rowsToRepeatAtTop = $sheet->getPageSetup()->getRowsToRepeatAtTop();
-
+
// we can only support repeating rows that start at top row
if ($rowsToRepeatAtTop[0] == 1) {
$theadStart = $rowsToRepeatAtTop[0];
@@ -346,7 +349,7 @@ class PHPExcel_Writer_HTML implements PHPExcel_Writer_IWriter {
$tbodyStart = $rowsToRepeatAtTop[1] + 1;
}
}
-
+
// Loop through cells
$rowData = null;
for ($row = $rowMin; $row <= $rowMax; ++$row) {
diff --git a/libraries/PHPExcel/PHPExcel/Writer/IWriter.php b/libraries/PHPExcel/PHPExcel/Writer/IWriter.php
index ec5331e..35fd689 100644
--- a/libraries/PHPExcel/PHPExcel/Writer/IWriter.php
+++ b/libraries/PHPExcel/PHPExcel/Writer/IWriter.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Writer
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/Writer/PDF.php b/libraries/PHPExcel/PHPExcel/Writer/PDF.php
index 570ce9d..f588635 100644
--- a/libraries/PHPExcel/PHPExcel/Writer/PDF.php
+++ b/libraries/PHPExcel/PHPExcel/Writer/PDF.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Writer
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/Writer/Serialized.php b/libraries/PHPExcel/PHPExcel/Writer/Serialized.php
index 603c4f7..51616b4 100644
--- a/libraries/PHPExcel/PHPExcel/Writer/Serialized.php
+++ b/libraries/PHPExcel/PHPExcel/Writer/Serialized.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Writer
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
@@ -163,10 +163,10 @@ class PHPExcel_Writer_Serialized implements PHPExcel_Writer_IWriter
// PHPExcel
$objWriter->startElement('PHPExcel');
- $objWriter->writeAttribute('version', '1.7.3c');
+ $objWriter->writeAttribute('version', '1.7.4');
// Comment
- $objWriter->writeComment('This file has been generated using PHPExcel v1.7.3c (http://www.codeplex.com/PHPExcel) It contains a base64 encoded serialized version of the PHPExcel internal object.');
+ $objWriter->writeComment('This file has been generated using PHPExcel v1.7.4 (http://www.codeplex.com/PHPExcel) It contains a base64 encoded serialized version of the PHPExcel internal object.');
// Data
$objWriter->startElement('data');
hooks/post-receive
--
phpMyAdmin
1
0
[Phpmyadmin-git] [SCM] phpMyAdmin branch, QA_3_3, updated. RELEASE_3_3_7-9-gadaa35a
by Dieter Adriaenssens 11 Sep '10
by Dieter Adriaenssens 11 Sep '10
11 Sep '10
The branch, QA_3_3 has been updated
via adaa35a87feeaf079d4178bb471073e0e19a75b6 (commit)
from f5879655d58812b978dc975e5dc8d8497d11a3c3 (commit)
- Log -----------------------------------------------------------------
-----------------------------------------------------------------------
Summary of changes:
ChangeLog | 1 +
libraries/PHPExcel/PHPExcel.php | 4 +-
libraries/PHPExcel/PHPExcel/Autoloader.php | 2 +-
.../PHPExcel/PHPExcel/CachedObjectStorage/APC.php | 45 +++-
.../PHPExcel/CachedObjectStorage/CacheBase.php | 35 ++-
.../PHPExcel/CachedObjectStorage/DiscISAM.php | 28 ++-
.../PHPExcel/CachedObjectStorage/ICache.php | 9 +-
.../PHPExcel/CachedObjectStorage/Memcache.php | 53 +++-
.../PHPExcel/CachedObjectStorage/Memory.php | 2 +-
.../PHPExcel/CachedObjectStorage/MemoryGZip.php | 2 +-
.../CachedObjectStorage/MemorySerialized.php | 2 +-
.../PHPExcel/CachedObjectStorage/PHPTemp.php | 26 ++-
.../PHPExcel/CachedObjectStorage/Wincache.php | 58 +++-
libraries/PHPExcel/PHPExcel/Calculation.php | 105 +++++--
.../PHPExcel/PHPExcel/Calculation/Exception.php | 2 +-
.../PHPExcel/Calculation/ExceptionHandler.php | 2 +-
.../PHPExcel/Calculation/FormulaParser.php | 2 +-
.../PHPExcel/PHPExcel/Calculation/FormulaToken.php | 2 +-
.../PHPExcel/PHPExcel/Calculation/Function.php | 2 +-
.../PHPExcel/PHPExcel/Calculation/Functions.php | 175 ++++++-------
libraries/PHPExcel/PHPExcel/Cell.php | 296 ++++++++++----------
.../PHPExcel/PHPExcel/Cell/AdvancedValueBinder.php | 2 +-
libraries/PHPExcel/PHPExcel/Cell/DataType.php | 2 +-
.../PHPExcel/PHPExcel/Cell/DataValidation.php | 2 +-
.../PHPExcel/PHPExcel/Cell/DefaultValueBinder.php | 2 +-
libraries/PHPExcel/PHPExcel/Cell/Hyperlink.php | 2 +-
libraries/PHPExcel/PHPExcel/Cell/IValueBinder.php | 2 +-
libraries/PHPExcel/PHPExcel/Comment.php | 2 +-
libraries/PHPExcel/PHPExcel/DocumentProperties.php | 93 ++++---
libraries/PHPExcel/PHPExcel/DocumentSecurity.php | 2 +-
libraries/PHPExcel/PHPExcel/HashTable.php | 2 +-
libraries/PHPExcel/PHPExcel/IComparable.php | 2 +-
libraries/PHPExcel/PHPExcel/IOFactory.php | 2 +-
libraries/PHPExcel/PHPExcel/NamedRange.php | 2 +-
libraries/PHPExcel/PHPExcel/Reader/CSV.php | 2 +-
.../PHPExcel/PHPExcel/Reader/DefaultReadFilter.php | 2 +-
.../PHPExcel/PHPExcel/Reader/Excel2003XML.php | 7 +-
libraries/PHPExcel/PHPExcel/Reader/Excel2007.php | 55 +++-
libraries/PHPExcel/PHPExcel/Reader/Excel5.php | 77 +++---
.../PHPExcel/PHPExcel/Reader/Excel5/Escher.php | 2 +-
libraries/PHPExcel/PHPExcel/Reader/IReadFilter.php | 2 +-
libraries/PHPExcel/PHPExcel/Reader/IReader.php | 2 +-
libraries/PHPExcel/PHPExcel/Reader/OOCalc.php | 15 +-
libraries/PHPExcel/PHPExcel/Reader/SYLK.php | 2 +-
libraries/PHPExcel/PHPExcel/Reader/Serialized.php | 2 +-
libraries/PHPExcel/PHPExcel/ReferenceHelper.php | 161 ++++++++---
libraries/PHPExcel/PHPExcel/RichText.php | 2 +-
.../PHPExcel/PHPExcel/RichText/ITextElement.php | 2 +-
libraries/PHPExcel/PHPExcel/RichText/Run.php | 2 +-
.../PHPExcel/PHPExcel/RichText/TextElement.php | 2 +-
libraries/PHPExcel/PHPExcel/Settings.php | 2 +-
libraries/PHPExcel/PHPExcel/Shared/CodePage.php | 2 +-
libraries/PHPExcel/PHPExcel/Shared/Date.php | 2 +-
libraries/PHPExcel/PHPExcel/Shared/Drawing.php | 2 +-
libraries/PHPExcel/PHPExcel/Shared/Escher.php | 2 +-
.../PHPExcel/Shared/Escher/DgContainer.php | 2 +-
.../Shared/Escher/DgContainer/SpgrContainer.php | 2 +-
.../DgContainer/SpgrContainer/SpContainer.php | 2 +-
.../PHPExcel/Shared/Escher/DggContainer.php | 28 ++-
.../Shared/Escher/DggContainer/BstoreContainer.php | 2 +-
.../Escher/DggContainer/BstoreContainer/BSE.php | 2 +-
.../DggContainer/BstoreContainer/BSE/Blip.php | 2 +-
libraries/PHPExcel/PHPExcel/Shared/Excel5.php | 2 +-
libraries/PHPExcel/PHPExcel/Shared/File.php | 21 +-
libraries/PHPExcel/PHPExcel/Shared/Font.php | 2 +-
.../PHPExcel/Shared/OLE/ChainedBlockStream.php | 2 +-
libraries/PHPExcel/PHPExcel/Shared/OLERead.php | 2 +-
.../PHPExcel/PHPExcel/Shared/PasswordHasher.php | 2 +-
libraries/PHPExcel/PHPExcel/Shared/String.php | 4 +-
libraries/PHPExcel/PHPExcel/Shared/XMLWriter.php | 11 +-
.../PHPExcel/PHPExcel/Shared/ZipStreamWrapper.php | 2 +-
.../PHPExcel/Shared/trend/bestFitClass.php | 2 +-
.../Shared/trend/exponentialBestFitClass.php | 2 +-
.../PHPExcel/Shared/trend/linearBestFitClass.php | 2 +-
.../Shared/trend/logarithmicBestFitClass.php | 2 +-
.../Shared/trend/polynomialBestFitClass.php | 2 +-
.../PHPExcel/Shared/trend/powerBestFitClass.php | 2 +-
libraries/PHPExcel/PHPExcel/Style.php | 4 +-
libraries/PHPExcel/PHPExcel/Style/Alignment.php | 4 +-
libraries/PHPExcel/PHPExcel/Style/Border.php | 4 +-
libraries/PHPExcel/PHPExcel/Style/Borders.php | 4 +-
libraries/PHPExcel/PHPExcel/Style/Color.php | 4 +-
libraries/PHPExcel/PHPExcel/Style/Conditional.php | 2 +-
libraries/PHPExcel/PHPExcel/Style/Fill.php | 4 +-
libraries/PHPExcel/PHPExcel/Style/Font.php | 4 +-
libraries/PHPExcel/PHPExcel/Style/NumberFormat.php | 4 +-
libraries/PHPExcel/PHPExcel/Style/Protection.php | 2 +-
libraries/PHPExcel/PHPExcel/Worksheet.php | 15 +-
.../PHPExcel/PHPExcel/Worksheet/BaseDrawing.php | 2 +-
.../PHPExcel/PHPExcel/Worksheet/CellIterator.php | 2 +-
.../PHPExcel/Worksheet/ColumnDimension.php | 2 +-
libraries/PHPExcel/PHPExcel/Worksheet/Drawing.php | 2 +-
.../PHPExcel/PHPExcel/Worksheet/Drawing/Shadow.php | 2 +-
.../PHPExcel/PHPExcel/Worksheet/HeaderFooter.php | 2 +-
.../PHPExcel/Worksheet/HeaderFooterDrawing.php | 2 +-
.../PHPExcel/PHPExcel/Worksheet/MemoryDrawing.php | 2 +-
.../PHPExcel/PHPExcel/Worksheet/PageMargins.php | 2 +-
.../PHPExcel/PHPExcel/Worksheet/PageSetup.php | 213 ++++++++++++---
.../PHPExcel/PHPExcel/Worksheet/Protection.php | 2 +-
libraries/PHPExcel/PHPExcel/Worksheet/Row.php | 2 +-
.../PHPExcel/PHPExcel/Worksheet/RowDimension.php | 2 +-
.../PHPExcel/PHPExcel/Worksheet/RowIterator.php | 2 +-
.../PHPExcel/PHPExcel/Worksheet/SheetView.php | 2 +-
libraries/PHPExcel/PHPExcel/WorksheetIterator.php | 2 +-
libraries/PHPExcel/PHPExcel/Writer/CSV.php | 5 +-
libraries/PHPExcel/PHPExcel/Writer/Excel2007.php | 5 +-
.../PHPExcel/Writer/Excel2007/Comments.php | 2 +-
.../PHPExcel/Writer/Excel2007/ContentTypes.php | 2 +-
.../PHPExcel/Writer/Excel2007/DocProps.php | 2 +-
.../PHPExcel/PHPExcel/Writer/Excel2007/Drawing.php | 2 +-
.../PHPExcel/PHPExcel/Writer/Excel2007/Rels.php | 2 +-
.../PHPExcel/Writer/Excel2007/StringTable.php | 2 +-
.../PHPExcel/PHPExcel/Writer/Excel2007/Style.php | 2 +-
.../PHPExcel/PHPExcel/Writer/Excel2007/Theme.php | 2 +-
.../PHPExcel/Writer/Excel2007/Workbook.php | 2 +-
.../PHPExcel/Writer/Excel2007/Worksheet.php | 15 +-
.../PHPExcel/Writer/Excel2007/WriterPart.php | 2 +-
libraries/PHPExcel/PHPExcel/Writer/Excel5.php | 285 ++++++++++++++++++-
.../PHPExcel/PHPExcel/Writer/Excel5/BIFFwriter.php | 2 +-
.../PHPExcel/PHPExcel/Writer/Excel5/Escher.php | 9 +-
libraries/PHPExcel/PHPExcel/Writer/Excel5/Font.php | 2 +-
.../PHPExcel/PHPExcel/Writer/Excel5/Parser.php | 20 ++-
.../PHPExcel/PHPExcel/Writer/Excel5/Workbook.php | 172 +++---------
.../PHPExcel/PHPExcel/Writer/Excel5/Worksheet.php | 211 ++++++---------
libraries/PHPExcel/PHPExcel/Writer/Excel5/Xf.php | 2 +-
libraries/PHPExcel/PHPExcel/Writer/HTML.php | 11 +-
libraries/PHPExcel/PHPExcel/Writer/IWriter.php | 2 +-
libraries/PHPExcel/PHPExcel/Writer/PDF.php | 2 +-
libraries/PHPExcel/PHPExcel/Writer/Serialized.php | 6 +-
129 files changed, 1563 insertions(+), 917 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index 42030ef..eeebed1 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -7,6 +7,7 @@ $HeadURL: https://phpmyadmin.svn.sourceforge.net/svnroot/phpmyadmin/trunk/phpMyA
3.3.8.0 (not yet released)
- bug #3059311 [import] BIGINT field type added to table analysis
+- [core] Update library PHPExcel to version 1.7.4
3.3.7.0 (2010-09-07)
- patch #3050492 [PDF scratchboard] Cannot drag table box to the edge after
diff --git a/libraries/PHPExcel/PHPExcel.php b/libraries/PHPExcel/PHPExcel.php
index 8b9c71f..c54d421 100644
--- a/libraries/PHPExcel/PHPExcel.php
+++ b/libraries/PHPExcel/PHPExcel.php
@@ -22,7 +22,7 @@
* @package PHPExcel
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
@@ -434,7 +434,7 @@ class PHPExcel
// update the cellXfs
foreach ($pSheet->getCellCollection(false) as $cellID) {
- $cell = $sheet->getCell($cellID);
+ $cell = $pSheet->getCell($cellID);
$cell->setXfIndex( $cell->getXfIndex() + $countCellXfs );
}
diff --git a/libraries/PHPExcel/PHPExcel/Autoloader.php b/libraries/PHPExcel/PHPExcel/Autoloader.php
index 3821d74..e66ce60 100644
--- a/libraries/PHPExcel/PHPExcel/Autoloader.php
+++ b/libraries/PHPExcel/PHPExcel/Autoloader.php
@@ -22,7 +22,7 @@
* @package PHPExcel
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
class PHPExcel_Autoloader
diff --git a/libraries/PHPExcel/PHPExcel/CachedObjectStorage/APC.php b/libraries/PHPExcel/PHPExcel/CachedObjectStorage/APC.php
index 62e3a14..dae46c2 100644
--- a/libraries/PHPExcel/PHPExcel/CachedObjectStorage/APC.php
+++ b/libraries/PHPExcel/PHPExcel/CachedObjectStorage/APC.php
@@ -22,7 +22,7 @@
* @package PHPExcel_CachedObjectStorage
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
@@ -45,7 +45,7 @@ class PHPExcel_CachedObjectStorage_APC extends PHPExcel_CachedObjectStorage_Cach
if (!apc_store($this->_cachePrefix.$this->_currentObjectID.'.cache',serialize($this->_currentObject),$this->_cacheTime)) {
$this->__destruct();
- throw new Exception('Failed to store cell in APC');
+ throw new Exception('Failed to store cell '.$cellID.' in APC');
}
$this->_currentObjectID = $this->_currentObject = null;
} // function _storeData()
@@ -90,7 +90,7 @@ class PHPExcel_CachedObjectStorage_APC extends PHPExcel_CachedObjectStorage_Cach
if ($success === false) {
// Entry no longer exists in APC, so clear it from the cache array
parent::deleteCacheData($pCoord);
- throw new Exception('Cell entry no longer exists in APC');
+ throw new Exception('Cell entry '.$cellID.' no longer exists in APC');
}
return true;
}
@@ -117,7 +117,7 @@ class PHPExcel_CachedObjectStorage_APC extends PHPExcel_CachedObjectStorage_Cach
if ($obj === false) {
// Entry no longer exists in APC, so clear it from the cache array
parent::deleteCacheData($pCoord);
- throw new Exception('Cell entry no longer exists in APC');
+ throw new Exception('Cell entry '.$cellID.' no longer exists in APC');
}
} else {
// Return null if requested entry doesn't exist in cache
@@ -150,6 +150,35 @@ class PHPExcel_CachedObjectStorage_APC extends PHPExcel_CachedObjectStorage_Cach
} // function deleteCacheData()
+ /**
+ * Clone the cell collection
+ *
+ * @return void
+ */
+ public function copyCellCollection(PHPExcel_Worksheet $parent) {
+ parent::copyCellCollection($parent);
+ // Get a new id for the new file name
+ $baseUnique = $this->_getUniqueID();
+ $newCachePrefix = substr(md5($baseUnique),0,8).'.';
+ $cacheList = $this->getCellList();
+ foreach($cacheList as $cellID) {
+ if ($cellID != $this->_currentObjectID) {
+ $obj = apc_fetch($this->_cachePrefix.$cellID.'.cache');
+ if ($obj === false) {
+ // Entry no longer exists in APC, so clear it from the cache array
+ parent::deleteCacheData($cellID);
+ throw new Exception('Cell entry '.$cellID.' no longer exists in APC');
+ }
+ if (!apc_store($newCachePrefix.$cellID.'.cache',$obj,$this->_cacheTime)) {
+ $this->__destruct();
+ throw new Exception('Failed to store cell '.$cellID.' in APC');
+ }
+ }
+ }
+ $this->_cachePrefix = $newCachePrefix;
+ } // function copyCellCollection()
+
+
public function unsetWorksheetCells() {
if(!is_null($this->_currentObject)) {
$this->_currentObject->detach();
@@ -170,12 +199,8 @@ class PHPExcel_CachedObjectStorage_APC extends PHPExcel_CachedObjectStorage_Cach
$cacheTime = (isset($arguments['cacheTime'])) ? $arguments['cacheTime'] : 600;
if (is_null($this->_cachePrefix)) {
- if (function_exists('posix_getpid')) {
- $baseUnique = posix_getpid();
- } else {
- $baseUnique = mt_rand();
- }
- $this->_cachePrefix = substr(md5(uniqid($baseUnique,true)),0,8).'.';
+ $baseUnique = $this->_getUniqueID();
+ $this->_cachePrefix = substr(md5($baseUnique),0,8).'.';
$this->_cacheTime = $cacheTime;
parent::__construct($parent);
diff --git a/libraries/PHPExcel/PHPExcel/CachedObjectStorage/CacheBase.php b/libraries/PHPExcel/PHPExcel/CachedObjectStorage/CacheBase.php
index 9871d90..208ed02 100644
--- a/libraries/PHPExcel/PHPExcel/CachedObjectStorage/CacheBase.php
+++ b/libraries/PHPExcel/PHPExcel/CachedObjectStorage/CacheBase.php
@@ -22,7 +22,7 @@
* @package PHPExcel_CachedObjectStorage
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
@@ -116,7 +116,7 @@ class PHPExcel_CachedObjectStorage_CacheBase {
$this->_currentObjectID = $this->_currentObject = null;
}
- if (isset($this->_cellCache[$pCoord])) {
+ if (is_object($this->_cellCache[$pCoord])) {
$this->_cellCache[$pCoord]->detach();
unset($this->_cellCache[$pCoord]);
}
@@ -141,13 +141,34 @@ class PHPExcel_CachedObjectStorage_CacheBase {
public function getSortedCellList() {
$sortKeys = array();
foreach ($this->_cellCache as $coord => $value) {
- preg_match('/^(\w+)(\d+)$/U',$coord,$matches);
- list(,$colNum,$rowNum) = $matches;
- $sortKeys[$coord] = str_pad($rowNum . str_pad($colNum,3,'@',STR_PAD_LEFT),12,'0',STR_PAD_LEFT);
+ list($colNum,$rowNum) = sscanf($coord,'%[A-Z]%d');
+ $sortKeys[sprintf('%09d%3s',$rowNum,$colNum)] = $coord;
}
- asort($sortKeys);
+ ksort($sortKeys);
- return array_keys($sortKeys);
+ return array_values($sortKeys);
} // function sortCellList()
+
+ protected function _getUniqueID() {
+ if (function_exists('posix_getpid')) {
+ $baseUnique = posix_getpid();
+ } else {
+ $baseUnique = mt_rand();
+ }
+ return uniqid($baseUnique,true);
+ }
+
+ /**
+ * Clone the cell collection
+ *
+ * @return void
+ */
+ public function copyCellCollection(PHPExcel_Worksheet $parent) {
+ $this->_parent = $parent;
+ if ((!is_null($this->_currentObject)) && (is_object($this->_currentObject))) {
+ $this->_currentObject->attach($parent);
+ }
+ } // function copyCellCollection()
+
}
diff --git a/libraries/PHPExcel/PHPExcel/CachedObjectStorage/DiscISAM.php b/libraries/PHPExcel/PHPExcel/CachedObjectStorage/DiscISAM.php
index e685607..dff52fa 100644
--- a/libraries/PHPExcel/PHPExcel/CachedObjectStorage/DiscISAM.php
+++ b/libraries/PHPExcel/PHPExcel/CachedObjectStorage/DiscISAM.php
@@ -22,7 +22,7 @@
* @package PHPExcel_CachedObjectStorage
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
@@ -103,6 +103,24 @@ class PHPExcel_CachedObjectStorage_DiscISAM extends PHPExcel_CachedObjectStorage
} // function getCacheData()
+ /**
+ * Clone the cell collection
+ *
+ * @return void
+ */
+ public function copyCellCollection(PHPExcel_Worksheet $parent) {
+ parent::copyCellCollection($parent);
+ // Get a new id for the new file name
+ $baseUnique = $this->_getUniqueID();
+ $newFileName = sys_get_temp_dir().'/PHPExcel.'.$baseUnique.'.cache';
+ // Copy the existing cell cache file
+ copy ($this->_fileName,$newFileName);
+ $this->_fileName = $newFileName;
+ // Open the copied cell cache file
+ $this->_fileHandle = fopen($this->_fileName,'a+');
+ } // function copyCellCollection()
+
+
public function unsetWorksheetCells() {
if(!is_null($this->_currentObject)) {
$this->_currentObject->detach();
@@ -121,12 +139,8 @@ class PHPExcel_CachedObjectStorage_DiscISAM extends PHPExcel_CachedObjectStorage
public function __construct(PHPExcel_Worksheet $parent) {
parent::__construct($parent);
if (is_null($this->_fileHandle)) {
- if (function_exists('posix_getpid')) {
- $baseUnique = posix_getpid();
- } else {
- $baseUnique = mt_rand();
- }
- $this->_fileName = sys_get_temp_dir().'/PHPExcel.'.uniqid($baseUnique,true).'.cache';
+ $baseUnique = $this->_getUniqueID();
+ $this->_fileName = sys_get_temp_dir().'/PHPExcel.'.$baseUnique.'.cache';
$this->_fileHandle = fopen($this->_fileName,'a+');
}
} // function __construct()
diff --git a/libraries/PHPExcel/PHPExcel/CachedObjectStorage/ICache.php b/libraries/PHPExcel/PHPExcel/CachedObjectStorage/ICache.php
index f3282aa..4731b8e 100644
--- a/libraries/PHPExcel/PHPExcel/CachedObjectStorage/ICache.php
+++ b/libraries/PHPExcel/PHPExcel/CachedObjectStorage/ICache.php
@@ -22,7 +22,7 @@
* @package PHPExcel_CachedObjectStorage
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
@@ -94,4 +94,11 @@ interface PHPExcel_CachedObjectStorage_ICache
*/
public function getSortedCellList();
+ /**
+ * Clone the cell collection
+ *
+ * @return void
+ */
+ public function copyCellCollection(PHPExcel_Worksheet $parent);
+
}
diff --git a/libraries/PHPExcel/PHPExcel/CachedObjectStorage/Memcache.php b/libraries/PHPExcel/PHPExcel/CachedObjectStorage/Memcache.php
index f1fc43c..74df8e8 100644
--- a/libraries/PHPExcel/PHPExcel/CachedObjectStorage/Memcache.php
+++ b/libraries/PHPExcel/PHPExcel/CachedObjectStorage/Memcache.php
@@ -22,7 +22,7 @@
* @package PHPExcel_CachedObjectStorage
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
@@ -49,7 +49,7 @@ class PHPExcel_CachedObjectStorage_Memcache extends PHPExcel_CachedObjectStorage
if (!$this->_memcache->replace($this->_cachePrefix.$this->_currentObjectID.'.cache',$obj,NULL,$this->_cacheTime)) {
if (!$this->_memcache->add($this->_cachePrefix.$this->_currentObjectID.'.cache',$obj,NULL,$this->_cacheTime)) {
$this->__destruct();
- throw new Exception('Failed to store cell in Memcache');
+ throw new Exception('Failed to store cell '.$cellID.' in MemCache');
}
}
$this->_currentObjectID = $this->_currentObject = null;
@@ -90,12 +90,12 @@ class PHPExcel_CachedObjectStorage_Memcache extends PHPExcel_CachedObjectStorage
if ($this->_currentObjectID == $pCoord) {
return true;
}
- // Check if the requested entry still exists in apc
+ // Check if the requested entry still exists in Memcache
$success = $this->_memcache->get($this->_cachePrefix.$pCoord.'.cache');
if ($success === false) {
// Entry no longer exists in Memcache, so clear it from the cache array
parent::deleteCacheData($pCoord);
- throw new Exception('Cell entry no longer exists in Memcache');
+ throw new Exception('Cell entry '.$cellID.' no longer exists in MemCache');
}
return true;
}
@@ -122,7 +122,7 @@ class PHPExcel_CachedObjectStorage_Memcache extends PHPExcel_CachedObjectStorage
if ($obj === false) {
// Entry no longer exists in Memcache, so clear it from the cache array
parent::deleteCacheData($pCoord);
- throw new Exception('Cell entry no longer exists in Memcache');
+ throw new Exception('Cell entry '.$cellID.' no longer exists in MemCache');
}
} else {
// Return null if requested entry doesn't exist in cache
@@ -155,6 +155,35 @@ class PHPExcel_CachedObjectStorage_Memcache extends PHPExcel_CachedObjectStorage
} // function deleteCacheData()
+ /**
+ * Clone the cell collection
+ *
+ * @return void
+ */
+ public function copyCellCollection(PHPExcel_Worksheet $parent) {
+ parent::copyCellCollection($parent);
+ // Get a new id for the new file name
+ $baseUnique = $this->_getUniqueID();
+ $newCachePrefix = substr(md5($baseUnique),0,8).'.';
+ $cacheList = $this->getCellList();
+ foreach($cacheList as $cellID) {
+ if ($cellID != $this->_currentObjectID) {
+ $obj = $this->_memcache->get($this->_cachePrefix.$cellID.'.cache');
+ if ($obj === false) {
+ // Entry no longer exists in Memcache, so clear it from the cache array
+ parent::deleteCacheData($cellID);
+ throw new Exception('Cell entry '.$cellID.' no longer exists in MemCache');
+ }
+ if (!$this->_memcache->add($newCachePrefix.$cellID.'.cache',$obj,NULL,$this->_cacheTime)) {
+ $this->__destruct();
+ throw new Exception('Failed to store cell '.$cellID.' in MemCache');
+ }
+ }
+ }
+ $this->_cachePrefix = $newCachePrefix;
+ } // function copyCellCollection()
+
+
public function unsetWorksheetCells() {
if(!is_null($this->_currentObject)) {
$this->_currentObject->detach();
@@ -177,17 +206,13 @@ class PHPExcel_CachedObjectStorage_Memcache extends PHPExcel_CachedObjectStorage
$cacheTime = (isset($arguments['cacheTime'])) ? $arguments['cacheTime'] : 600;
if (is_null($this->_cachePrefix)) {
- if (function_exists('posix_getpid')) {
- $baseUnique = posix_getpid();
- } else {
- $baseUnique = mt_rand();
- }
- $this->_cachePrefix = substr(md5(uniqid($baseUnique,true)),0,8).'.';
+ $baseUnique = $this->_getUniqueID();
+ $this->_cachePrefix = substr(md5($baseUnique),0,8).'.';
// Set a new Memcache object and connect to the Memcache server
$this->_memcache = new Memcache();
- if (!$this->_memcache->addServer($memcacheServer, $memcachePort, false, 50, 5, 5, true, array($this, 'failureCallback')) {
- throw new Exception('Could not connect to Memcache server at '.$memcacheServer.':'.$memcachePort);
+ if (!$this->_memcache->addServer($memcacheServer, $memcachePort, false, 50, 5, 5, true, array($this, 'failureCallback'))) {
+ throw new Exception('Could not connect to MemCache server at '.$memcacheServer.':'.$memcachePort);
}
$this->_cacheTime = $cacheTime;
@@ -197,7 +222,7 @@ class PHPExcel_CachedObjectStorage_Memcache extends PHPExcel_CachedObjectStorage
public function failureCallback($host, $port) {
- throw new Exception('memcache '.$host.':'.$port' failed');
+ throw new Exception('memcache '.$host.':'.$port.' failed');
}
diff --git a/libraries/PHPExcel/PHPExcel/CachedObjectStorage/Memory.php b/libraries/PHPExcel/PHPExcel/CachedObjectStorage/Memory.php
index be0fade..4b59b91 100644
--- a/libraries/PHPExcel/PHPExcel/CachedObjectStorage/Memory.php
+++ b/libraries/PHPExcel/PHPExcel/CachedObjectStorage/Memory.php
@@ -22,7 +22,7 @@
* @package PHPExcel_CachedObjectStorage
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/CachedObjectStorage/MemoryGZip.php b/libraries/PHPExcel/PHPExcel/CachedObjectStorage/MemoryGZip.php
index c281389..394faf2 100644
--- a/libraries/PHPExcel/PHPExcel/CachedObjectStorage/MemoryGZip.php
+++ b/libraries/PHPExcel/PHPExcel/CachedObjectStorage/MemoryGZip.php
@@ -22,7 +22,7 @@
* @package PHPExcel_CachedObjectStorage
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/CachedObjectStorage/MemorySerialized.php b/libraries/PHPExcel/PHPExcel/CachedObjectStorage/MemorySerialized.php
index 9c29ea2..0b5b997 100644
--- a/libraries/PHPExcel/PHPExcel/CachedObjectStorage/MemorySerialized.php
+++ b/libraries/PHPExcel/PHPExcel/CachedObjectStorage/MemorySerialized.php
@@ -22,7 +22,7 @@
* @package PHPExcel_CachedObjectStorage
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/CachedObjectStorage/PHPTemp.php b/libraries/PHPExcel/PHPExcel/CachedObjectStorage/PHPTemp.php
index 98cd952..54810d8 100644
--- a/libraries/PHPExcel/PHPExcel/CachedObjectStorage/PHPTemp.php
+++ b/libraries/PHPExcel/PHPExcel/CachedObjectStorage/PHPTemp.php
@@ -22,7 +22,7 @@
* @package PHPExcel_CachedObjectStorage
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
@@ -38,6 +38,8 @@ class PHPExcel_CachedObjectStorage_PHPTemp extends PHPExcel_CachedObjectStorage_
private $_fileHandle = null;
+ private $_memoryCacheSize = null;
+
private function _storeData() {
$this->_currentObject->detach();
@@ -102,6 +104,24 @@ class PHPExcel_CachedObjectStorage_PHPTemp extends PHPExcel_CachedObjectStorage_
} // function getCacheData()
+ /**
+ * Clone the cell collection
+ *
+ * @return void
+ */
+ public function copyCellCollection(PHPExcel_Worksheet $parent) {
+ parent::copyCellCollection($parent);
+ // Open a new stream for the cell cache data
+ $newFileHandle = fopen('php://temp/maxmemory:'.$this->_memoryCacheSize,'a+');
+ // Copy the existing cell cache data to the new stream
+ fseek($this->_fileHandle,0);
+ while (!feof($this->_fileHandle)) {
+ fwrite($newFileHandle,fread($this->_fileHandle, 1024));
+ }
+ $this->_fileHandle = $newFileHandle;
+ } // function copyCellCollection()
+
+
public function unsetWorksheetCells() {
if(!is_null($this->_currentObject)) {
$this->_currentObject->detach();
@@ -118,11 +138,11 @@ class PHPExcel_CachedObjectStorage_PHPTemp extends PHPExcel_CachedObjectStorage_
public function __construct(PHPExcel_Worksheet $parent, $memoryCacheSize = '1MB') {
- $memoryCacheSize = (isset($arguments['memoryCacheSize'])) ? $arguments['memoryCacheSize'] : '1MB';
+ $this->_memoryCacheSize = (isset($arguments['memoryCacheSize'])) ? $arguments['memoryCacheSize'] : '1MB';
parent::__construct($parent);
if (is_null($this->_fileHandle)) {
- $this->_fileHandle = fopen('php://temp/maxmemory:'.$memoryCacheSize,'a+');
+ $this->_fileHandle = fopen('php://temp/maxmemory:'.$this->_memoryCacheSize,'a+');
}
} // function __construct()
diff --git a/libraries/PHPExcel/PHPExcel/CachedObjectStorage/Wincache.php b/libraries/PHPExcel/PHPExcel/CachedObjectStorage/Wincache.php
index d759d7c..aa075be 100644
--- a/libraries/PHPExcel/PHPExcel/CachedObjectStorage/Wincache.php
+++ b/libraries/PHPExcel/PHPExcel/CachedObjectStorage/Wincache.php
@@ -22,7 +22,7 @@
* @package PHPExcel_CachedObjectStorage
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
@@ -45,9 +45,15 @@ class PHPExcel_CachedObjectStorage_Wincache extends PHPExcel_CachedObjectStorage
$obj = serialize($this->_currentObject);
if (wincache_ucache_exists($this->_cachePrefix.$this->_currentObjectID.'.cache')) {
- wincache_ucache_set($this->_cachePrefix.$this->_currentObjectID.'.cache', $obj, $this->_cacheTime);
+ if (!wincache_ucache_set($this->_cachePrefix.$this->_currentObjectID.'.cache', $obj, $this->_cacheTime)) {
+ $this->__destruct();
+ throw new Exception('Failed to store cell '.$cellID.' in WinCache');
+ }
} else {
- wincache_ucache_add($this->_cachePrefix.$this->_currentObjectID.'.cache', $obj, $this->_cacheTime);
+ if (!wincache_ucache_add($this->_cachePrefix.$this->_currentObjectID.'.cache', $obj, $this->_cacheTime)) {
+ $this->__destruct();
+ throw new Exception('Failed to store cell '.$cellID.' in WinCache');
+ }
}
$this->_currentObjectID = $this->_currentObject = null;
@@ -93,7 +99,7 @@ class PHPExcel_CachedObjectStorage_Wincache extends PHPExcel_CachedObjectStorage
if ($success === false) {
// Entry no longer exists in Wincache, so clear it from the cache array
parent::deleteCacheData($pCoord);
- throw new Exception('Cell entry no longer exists in Wincache');
+ throw new Exception('Cell entry '.$cellID.' no longer exists in WinCache');
}
return true;
}
@@ -120,9 +126,9 @@ class PHPExcel_CachedObjectStorage_Wincache extends PHPExcel_CachedObjectStorage
$success = false;
$obj = wincache_ucache_get($this->_cachePrefix.$pCoord.'.cache', $success);
if ($success === false) {
- // Entry no longer exists in Wincache, so clear it from the cache array
+ // Entry no longer exists in WinCache, so clear it from the cache array
parent::deleteCacheData($pCoord);
- throw new Exception('Cell entry no longer exists in Wincache');
+ throw new Exception('Cell entry '.$cellID.' no longer exists in WinCache');
}
} else {
// Return null if requested entry doesn't exist in cache
@@ -155,13 +161,43 @@ class PHPExcel_CachedObjectStorage_Wincache extends PHPExcel_CachedObjectStorage
} // function deleteCacheData()
+ /**
+ * Clone the cell collection
+ *
+ * @return void
+ */
+ public function copyCellCollection(PHPExcel_Worksheet $parent) {
+ parent::copyCellCollection($parent);
+ // Get a new id for the new file name
+ $baseUnique = $this->_getUniqueID();
+ $newCachePrefix = substr(md5($baseUnique),0,8).'.';
+ $cacheList = $this->getCellList();
+ foreach($cacheList as $cellID) {
+ if ($cellID != $this->_currentObjectID) {
+ $success = false;
+ $obj = wincache_ucache_get($this->_cachePrefix.$cellID.'.cache', $success);
+ if ($success === false) {
+ // Entry no longer exists in WinCache, so clear it from the cache array
+ parent::deleteCacheData($cellID);
+ throw new Exception('Cell entry '.$cellID.' no longer exists in Wincache');
+ }
+ if (!wincache_ucache_add($newCachePrefix.$cellID.'.cache', $obj, $this->_cacheTime)) {
+ $this->__destruct();
+ throw new Exception('Failed to store cell '.$cellID.' in Wincache');
+ }
+ }
+ }
+ $this->_cachePrefix = $newCachePrefix;
+ } // function copyCellCollection()
+
+
public function unsetWorksheetCells() {
if(!is_null($this->_currentObject)) {
$this->_currentObject->detach();
$this->_currentObject = $this->_currentObjectID = null;
}
- // Flush the Wincache cache
+ // Flush the WinCache cache
$this->__destruct();
$this->_cellCache = array();
@@ -175,12 +211,8 @@ class PHPExcel_CachedObjectStorage_Wincache extends PHPExcel_CachedObjectStorage
$cacheTime = (isset($arguments['cacheTime'])) ? $arguments['cacheTime'] : 600;
if (is_null($this->_cachePrefix)) {
- if (function_exists('posix_getpid')) {
- $baseUnique = posix_getpid();
- } else {
- $baseUnique = mt_rand();
- }
- $this->_cachePrefix = substr(md5(uniqid($baseUnique,true)),0,8).'.';
+ $baseUnique = $this->_getUniqueID();
+ $this->_cachePrefix = substr(md5($baseUnique),0,8).'.';
$this->_cacheTime = $cacheTime;
parent::__construct($parent);
diff --git a/libraries/PHPExcel/PHPExcel/Calculation.php b/libraries/PHPExcel/PHPExcel/Calculation.php
index 6e8499e..e32891a 100644
--- a/libraries/PHPExcel/PHPExcel/Calculation.php
+++ b/libraries/PHPExcel/PHPExcel/Calculation.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Calculation
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
@@ -2248,7 +2248,7 @@ class PHPExcel_Calculation {
}
$this->debugLogStack[] = $wsTitle.'!'.$cellID;
// Parse the formula onto the token stack and calculate the value
- $cellValue = $this->_processTokenStack($this->_parseFormula($formula), $cellID, $pCell);
+ $cellValue = $this->_processTokenStack($this->_parseFormula($formula, $pCell), $cellID, $pCell);
array_pop($this->debugLogStack);
// Save to calculation cache
@@ -2462,31 +2462,24 @@ class PHPExcel_Calculation {
$value = array_pop($testArray);
}
- switch (gettype($value)) {
- case 'double' :
- case 'float' :
- $typeString = 'a floating point number';
- break;
- case 'integer' :
- $typeString = 'an integer number';
- break;
- case 'boolean' :
- $typeString = 'a boolean';
- break;
- case 'array' :
- $typeString = 'a matrix';
- break;
- case 'string' :
- if ($value == '') {
- return 'an empty string';
- } elseif ($value{0} == '#') {
- return 'a '.$value.' error';
- } else {
- $typeString = 'a string';
- }
- break;
- case 'NULL' :
- return 'a null value';
+ if (is_null($value)) {
+ return 'a null value';
+ } elseif (is_float($value)) {
+ $typeString = 'a floating point number';
+ } elseif(is_int($value)) {
+ $typeString = 'an integer number';
+ } elseif(is_bool($value)) {
+ $typeString = 'a boolean';
+ } elseif(is_array($value)) {
+ $typeString = 'a matrix';
+ } else {
+ if ($value == '') {
+ return 'an empty string';
+ } elseif ($value{0} == '#') {
+ return 'a '.$value.' error';
+ } else {
+ $typeString = 'a string';
+ }
}
return $typeString.' with a value of '.self::_showValue($value);
} // function _showTypeDetails()
@@ -2548,11 +2541,15 @@ class PHPExcel_Calculation {
// Convert infix to postfix notation
- private function _parseFormula($formula) {
+ private function _parseFormula($formula, PHPExcel_Cell $pCell = null) {
if (($formula = self::_convertMatrixReferences(trim($formula))) === false) {
return false;
}
+ // If we're using cell caching, then $pCell may well be flushed back to the cache (which detaches the parent worksheet),
+ // so we store the parent worksheet so that we can re-attach it when necessary
+ $pCellParent = (!is_null($pCell)) ? $pCell->getParent() : null;
+
// Binary Operators
// These operators always work on two values
// Array key is the operator, the value indicates whether this is a left or right associative operator
@@ -2774,12 +2771,56 @@ class PHPExcel_Calculation {
// echo 'Element '.$val.' is a Cell reference<br />';
// Watch for this case-change when modifying to allow cell references in different worksheets...
// Should only be applied to the actual cell column, not the worksheet name
+
+ // If the last entry on the stack was a : operator, then we have a cell range reference
+ $testPrevOp = $stack->last(1);
+ if ($testPrevOp['value'] == ':') {
+ // If we have a worksheet reference, then we're playing with a 3D reference
+ if ($matches[2] == '') {
+ // Otherwise, we 'inherit' the worksheet reference from the start cell reference
+ // The start of the cell range reference should be the last entry in $output
+ $startCellRef = $output[count($output)-1]['value'];
+ preg_match('/^'.self::CALCULATION_REGEXP_CELLREF.'$/i', $startCellRef, $startMatches);
+ if ($startMatches[2] > '') {
+ $val = $startMatches[2].'!'.$val;
+ }
+ }
+ }
$cellRef = strtoupper($val);
-// $output[] = $cellRef;
+
$output[] = array('type' => 'Cell Reference', 'value' => $val, 'reference' => $cellRef);
// $expectingOperator = false;
} else { // it's a variable, constant, string, number or boolean
// echo 'Element is a Variable, Constant, String, Number or Boolean<br />';
+ // If the last entry on the stack was a : operator, then we may have a row or column range reference
+ $testPrevOp = $stack->last(1);
+ if ($testPrevOp['value'] == ':') {
+ $startRowColRef = $output[count($output)-1]['value'];
+ $rangeWS1 = '';
+ if (strpos('!',$startRowColRef) !== false) {
+ list($rangeWS1,$startRowColRef) = explode('!',$startRowColRef);
+ }
+ if ($rangeWS1 != '') $rangeWS1 .= '!';
+ $rangeWS2 = $rangeWS1;
+ if (strpos('!',$val) !== false) {
+ list($rangeWS2,$val) = explode('!',$val);
+ }
+ if ($rangeWS2 != '') $rangeWS2 .= '!';
+ if ((is_integer($startRowColRef)) && (ctype_digit($val)) &&
+ ($startRowColRef <= 1048576) && ($val <= 1048576)) {
+ // Row range
+ $endRowColRef = (!is_null($pCellParent)) ? $pCellParent->getHighestColumn() : 'XFD'; // Max 16,384 columns for Excel2007
+ $output[count($output)-1]['value'] = $rangeWS1.'A'.$startRowColRef;
+ $val = $rangeWS2.$endRowColRef.$val;
+ } elseif ((ctype_alpha($startRowColRef)) && (ctype_alpha($val)) &&
+ (strlen($startRowColRef) <= 3) && (strlen($val) <= 3)) {
+ // Column range
+ $endRowColRef = (!is_null($pCellParent)) ? $pCellParent->getHighestRow() : 1048576; // Max 1,048,576 rows for Excel2007
+ $output[count($output)-1]['value'] = $rangeWS1.strtoupper($startRowColRef).'1';
+ $val = $rangeWS2.$val.$endRowColRef;
+ }
+ }
+
$localeConstant = false;
if ($opCharacter == '"') {
// echo 'Element is a String<br />';
@@ -2808,6 +2849,8 @@ class PHPExcel_Calculation {
}
$index += $length;
+ } elseif ($opCharacter == '$') { // absolute row or column range
+ $index++;
} elseif ($opCharacter == ')') { // miscellaneous error checking
if ($expectingOperand) {
$output[] = array('type' => 'Null Value', 'value' => self::$_ExcelConstants['NULL'], 'reference' => NULL);
@@ -3067,7 +3110,7 @@ class PHPExcel_Calculation {
return $this->_raiseFormulaError('Unable to access Cell Reference');
}
$this->_writeDebug('Evaluation Result for cells '.$cellRef.' in worksheet '.$matches[2].' is '.self::_showTypeDetails($cellValue));
- $cellRef = $matches[2].'!'.$cellRef;
+// $cellRef = $matches[2].'!'.$cellRef;
} else {
// echo '$cellRef='.$cellRef.' in current worksheet<br />';
$this->_writeDebug('Evaluating Cell Range '.$cellRef.' in current worksheet');
@@ -3101,7 +3144,7 @@ class PHPExcel_Calculation {
return $this->_raiseFormulaError('Unable to access Cell Reference');
}
$this->_writeDebug('Evaluation Result for cell '.$cellRef.' in worksheet '.$matches[2].' is '.self::_showTypeDetails($cellValue));
- $cellRef = $matches[2].'!'.$cellRef;
+// $cellRef = $matches[2].'!'.$cellRef;
} else {
// echo '$cellRef='.$cellRef.' in current worksheet<br />';
$this->_writeDebug('Evaluating Cell '.$cellRef.' in current worksheet');
diff --git a/libraries/PHPExcel/PHPExcel/Calculation/Exception.php b/libraries/PHPExcel/PHPExcel/Calculation/Exception.php
index 8e77b9d..b94f3f4 100644
--- a/libraries/PHPExcel/PHPExcel/Calculation/Exception.php
+++ b/libraries/PHPExcel/PHPExcel/Calculation/Exception.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Calculation
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/Calculation/ExceptionHandler.php b/libraries/PHPExcel/PHPExcel/Calculation/ExceptionHandler.php
index 9956167..7050260 100644
--- a/libraries/PHPExcel/PHPExcel/Calculation/ExceptionHandler.php
+++ b/libraries/PHPExcel/PHPExcel/Calculation/ExceptionHandler.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Calculation
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
/**
diff --git a/libraries/PHPExcel/PHPExcel/Calculation/FormulaParser.php b/libraries/PHPExcel/PHPExcel/Calculation/FormulaParser.php
index 8fcde41..271aa75 100644
--- a/libraries/PHPExcel/PHPExcel/Calculation/FormulaParser.php
+++ b/libraries/PHPExcel/PHPExcel/Calculation/FormulaParser.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Calculation
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/Calculation/FormulaToken.php b/libraries/PHPExcel/PHPExcel/Calculation/FormulaToken.php
index 69d7f42..8c1396e 100644
--- a/libraries/PHPExcel/PHPExcel/Calculation/FormulaToken.php
+++ b/libraries/PHPExcel/PHPExcel/Calculation/FormulaToken.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Calculation
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/Calculation/Function.php b/libraries/PHPExcel/PHPExcel/Calculation/Function.php
index 783e533..81dfc99 100644
--- a/libraries/PHPExcel/PHPExcel/Calculation/Function.php
+++ b/libraries/PHPExcel/PHPExcel/Calculation/Function.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Calculation
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/Calculation/Functions.php b/libraries/PHPExcel/PHPExcel/Calculation/Functions.php
index 8ce3cfd..805f483 100644
--- a/libraries/PHPExcel/PHPExcel/Calculation/Functions.php
+++ b/libraries/PHPExcel/PHPExcel/Calculation/Functions.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Calculation
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
@@ -1885,7 +1885,7 @@ class PHPExcel_Calculation_Functions {
}
// Return
- if (($aCount > 0) && ($returnValue > 0)) {
+ if (($aCount > 0) && ($returnValue >= 0)) {
return sqrt($returnValue / $aCount);
}
}
@@ -1937,7 +1937,7 @@ class PHPExcel_Calculation_Functions {
}
// Return
- if (($aCount > 0) && ($returnValue > 0)) {
+ if (($aCount > 0) && ($returnValue >= 0)) {
return sqrt($returnValue / $aCount);
}
}
@@ -1984,7 +1984,7 @@ class PHPExcel_Calculation_Functions {
}
// Return
- if (($aCount > 0) && ($returnValue > 0)) {
+ if (($aCount > 0) && ($returnValue >= 0)) {
return sqrt($returnValue / $aCount);
}
}
@@ -2036,7 +2036,7 @@ class PHPExcel_Calculation_Functions {
}
// Return
- if (($aCount > 0) && ($returnValue > 0)) {
+ if (($aCount > 0) && ($returnValue >= 0)) {
return sqrt($returnValue / $aCount);
}
}
@@ -5691,7 +5691,7 @@ class PHPExcel_Calculation_Functions {
* @return string Version information
*/
public static function VERSION() {
- return 'PHPExcel 1.7.3c, 2010-06-01';
+ return 'PHPExcel 1.7.4, 2010-08-26';
} // function VERSION()
@@ -11139,112 +11139,101 @@ class PHPExcel_Calculation_Functions {
* @return integer The relative position of the found item
*/
public static function MATCH($lookup_value, $lookup_array, $match_type=1) {
-
- // flatten the lookup_array
$lookup_array = self::flattenArray($lookup_array);
-
- // flatten lookup_value since it may be a cell reference to a value or the value itself
$lookup_value = self::flattenSingleValue($lookup_value);
-
- // MATCH is not case sensitive
+ $match_type = (is_null($match_type)) ? 1 : (int) self::flattenSingleValue($match_type);
+ // MATCH is not case sensitive
$lookup_value = strtolower($lookup_value);
- /*
- echo "--------------------<br>looking for $lookup_value in <br>";
- print_r($lookup_array);
- echo "<br>";
- //return 1;
- /**/
-
- // **
- // check inputs
- // **
- // lookup_value type has to be number, text, or logical values
- if (!is_numeric($lookup_value) && !is_string($lookup_value) && !is_bool($lookup_value)){
- // error: lookup_array should contain only number, text, or logical values
- //echo "error: lookup_array should contain only number, text, or logical values<br>";
+ // lookup_value type has to be number, text, or logical values
+ if ((!is_numeric($lookup_value)) && (!is_string($lookup_value)) && (!is_bool($lookup_value))) {
return self::$_errorCodes['na'];
}
- // match_type is 0, 1 or -1
- if ($match_type!==0 && $match_type!==-1 && $match_type!==1){
- // error: wrong value for match_type
- //echo "error: wrong value for match_type<br>";
+ // match_type is 0, 1 or -1
+ if (($match_type !== 0) && ($match_type !== -1) && ($match_type !== 1)) {
return self::$_errorCodes['na'];
}
- // lookup_array should not be empty
- if (sizeof($lookup_array)<=0){
- // error: empty range
- //echo "error: empty range ".sizeof($lookup_array)."<br>";
+ // lookup_array should not be empty
+ $lookupArraySize = count($lookup_array);
+ if ($lookupArraySize <= 0) {
return self::$_errorCodes['na'];
}
- // lookup_array should contain only number, text, or logical values
- for ($i=0;$i<sizeof($lookup_array);++$i){
- // check the type of the value
- if (!is_numeric($lookup_array[$i]) && !is_string($lookup_array[$i]) && !is_bool($lookup_array[$i])){
- // error: lookup_array should contain only number, text, or logical values
- //echo "error: lookup_array should contain only number, text, or logical values<br>";
+ // lookup_array should contain only number, text, or logical values, or empty (null) cells
+ foreach($lookup_array as $i => $lookupArrayValue) {
+ // check the type of the value
+ if ((!is_numeric($lookupArrayValue)) && (!is_string($lookupArrayValue)) &&
+ (!is_bool($lookupArrayValue)) && (!is_null($lookupArrayValue))) {
return self::$_errorCodes['na'];
}
- // convert tpo lowercase
- if (is_string($lookup_array[$i]))
- $lookup_array[$i] = strtolower($lookup_array[$i]);
+ // convert strings to lowercase for case-insensitive testing
+ if (is_string($lookupArrayValue)) {
+ $lookup_array[$i] = strtolower($lookupArrayValue);
+ }
+ if ((is_null($lookupArrayValue)) && (($match_type == 1) || ($match_type == -1))) {
+ $lookup_array = array_slice($lookup_array,0,$i-1);
+ }
}
// if match_type is 1 or -1, the list has to be ordered
- if($match_type==1 || $match_type==-1){
- // **
- // iniitialization
- // store the last value
- $iLastValue=$lookup_array[0];
- // **
- // loop on the cells
- for ($i=0;$i<sizeof($lookup_array);++$i){
- // check ascending order
- if(($match_type==1 && $lookup_array[$i]<$iLastValue)
- // OR check descending order
- || ($match_type==-1 && $lookup_array[$i]>$iLastValue)){
- // error: list is not ordered correctly
- //echo "error: list is not ordered correctly<br>";
- return self::$_errorCodes['na'];
- }
- }
+ if ($match_type == 1) {
+ asort($lookup_array);
+ $keySet = array_keys($lookup_array);
+ } elseif($match_type == -1) {
+ arsort($lookup_array);
+ $keySet = array_keys($lookup_array);
}
+
// **
// find the match
// **
// loop on the cells
- for ($i=0; $i < sizeof($lookup_array); ++$i){
- // if match_type is 0 <=> find the first value that is exactly equal to lookup_value
- if ($match_type==0 && $lookup_array[$i]==$lookup_value){
- // this is the exact match
- return $i+1;
- }
- // if match_type is -1 <=> find the smallest value that is greater than or equal to lookup_value
- if ($match_type==-1 && $lookup_array[$i] < $lookup_value){
- if ($i<1){
+// var_dump($lookup_array);
+// echo '<br />';
+ foreach($lookup_array as $i => $lookupArrayValue) {
+ if (($match_type == 0) && ($lookupArrayValue == $lookup_value)) {
+ // exact match
+ return ++$i;
+ } elseif (($match_type == -1) && ($lookupArrayValue <= $lookup_value)) {
+// echo '$i = '.$i.' => ';
+// var_dump($lookupArrayValue);
+// echo '<br />';
+// echo 'Keyset = ';
+// var_dump($keySet);
+// echo '<br />';
+ $i = array_search($i,$keySet);
+// echo '$i='.$i.'<br />';
+ // if match_type is -1 <=> find the smallest value that is greater than or equal to lookup_value
+ if ($i < 1){
// 1st cell was allready smaller than the lookup_value
break;
- }
- else
+ } else {
// the previous cell was the match
- return $i;
- }
- // if match_type is 1 <=> find the largest value that is less than or equal to lookup_value
- if ($match_type==1 && $lookup_array[$i] > $lookup_value){
- if ($i<1){
+ return $keySet[$i-1]+1;
+ }
+ } elseif (($match_type == 1) && ($lookupArrayValue >= $lookup_value)) {
+// echo '$i = '.$i.' => ';
+// var_dump($lookupArrayValue);
+// echo '<br />';
+// echo 'Keyset = ';
+// var_dump($keySet);
+// echo '<br />';
+ $i = array_search($i,$keySet);
+// echo '$i='.$i.'<br />';
+ // if match_type is 1 <=> find the largest value that is less than or equal to lookup_value
+ if ($i < 1){
// 1st cell was allready bigger than the lookup_value
break;
- }
- else
+ } else {
// the previous cell was the match
- return $i;
+ return $keySet[$i-1]+1;
+ }
}
}
- // unsuccessful in finding a match, return #N/A error value
- //echo "unsuccessful in finding a match<br>";
+
+ // unsuccessful in finding a match, return #N/A error value
return self::$_errorCodes['na'];
} // function MATCH()
@@ -11378,25 +11367,19 @@ class PHPExcel_Calculation_Functions {
}
$value = self::flattenSingleValue($value);
- switch (gettype($value)) {
- case 'double' :
- case 'float' :
- case 'integer' :
+ if ((is_float($value)) || (is_int($value))) {
return 1;
- break;
- case 'boolean' :
+ } elseif(is_bool($value)) {
return 4;
- break;
- case 'array' :
+ } elseif(is_array($value)) {
return 64;
break;
- case 'string' :
- // Errors
- if ((strlen($value) > 0) && ($value{0} == '#')) {
- return 16;
- }
- return 2;
- break;
+ } elseif(is_string($value)) {
+ // Errors
+ if ((strlen($value) > 0) && ($value{0} == '#')) {
+ return 16;
+ }
+ return 2;
}
return 0;
} // function TYPE()
diff --git a/libraries/PHPExcel/PHPExcel/Cell.php b/libraries/PHPExcel/PHPExcel/Cell.php
index f8ebf86..b805b8d 100644
--- a/libraries/PHPExcel/PHPExcel/Cell.php
+++ b/libraries/PHPExcel/PHPExcel/Cell.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Cell
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
@@ -91,6 +91,13 @@ class PHPExcel_Cell
*/
private $_xfIndex;
+ /**
+ * Attributes of the formula
+ *
+ *
+ */
+ private $_formulaAttributes;
+
/**
* Send notification to the cache controller
@@ -98,6 +105,7 @@ class PHPExcel_Cell
**/
public function notifyCacheController() {
$this->_parent->getCellCacheController()->updateCacheData($this);
+ return $this;
}
public function detach() {
@@ -112,11 +120,11 @@ class PHPExcel_Cell
/**
* Create a new Cell
*
- * @param string $pColumn
- * @param int $pRow
- * @param mixed $pValue
- * @param string $pDataType
- * @param PHPExcel_Worksheet $pSheet
+ * @param string $pColumn
+ * @param int $pRow
+ * @param mixed $pValue
+ * @param string $pDataType
+ * @param PHPExcel_Worksheet $pSheet
* @throws Exception
*/
public function __construct($pColumn = 'A', $pRow = 1, $pValue = null, $pDataType = null, PHPExcel_Worksheet $pSheet = null)
@@ -189,7 +197,7 @@ class PHPExcel_Cell
*
* This clears the cell formula.
*
- * @param mixed $pValue Value
+ * @param mixed $pValue Value
* @return PHPExcel_Cell
*/
public function setValue($pValue = null)
@@ -203,7 +211,7 @@ class PHPExcel_Cell
/**
* Set cell value (with explicit data type given)
*
- * @param mixed $pValue Value
+ * @param mixed $pValue Value
* @param string $pDataType Explicit data type
* @return PHPExcel_Cell
* @throws Exception
@@ -242,8 +250,7 @@ class PHPExcel_Cell
// set the datatype
$this->_dataType = $pDataType;
- $this->notifyCacheController();
- return $this;
+ return $this->notifyCacheController();
}
/**
@@ -254,7 +261,7 @@ class PHPExcel_Cell
public function getCalculatedValue($resetLog=true)
{
// echo 'Cell '.$this->getCoordinate().' value is a '.$this->_dataType.' with a value of '.$this->getValue().'<br />';
- if (!is_null($this->_calculatedValue) && $this->_dataType == PHPExcel_Cell_DataType::TYPE_FORMULA) {
+ if ($this->_dataType == PHPExcel_Cell_DataType::TYPE_FORMULA) {
try {
// echo 'Cell value for '.$this->getCoordinate().' is a formula: Calculating value<br />';
$result = PHPExcel_Calculation::getInstance()->calculateCellValue($this,$resetLog);
@@ -262,28 +269,23 @@ class PHPExcel_Cell
} catch ( Exception $ex ) {
// echo 'Calculation Exception: '.$ex->getMessage().'<br />';
$result = '#N/A';
- throw(new Exception($ex->getMessage()));
+ throw(new Exception($this->getParent()->getTitle().'!'.$this->getCoordinate().' -> '.$ex->getMessage()));
}
- if ((is_string($result)) && ($result == '#Not Yet Implemented')) {
+ if ($result === '#Not Yet Implemented') {
// echo 'Returning fallback value of '.$this->_calculatedValue.' for cell '.$this->getCoordinate().'<br />';
return $this->_calculatedValue; // Fallback if calculation engine does not support the formula.
- } else {
-// echo 'Returning calculated value of '.$result.' for cell '.$this->getCoordinate().'<br />';
- return $result;
}
+// echo 'Returning calculated value of '.$result.' for cell '.$this->getCoordinate().'<br />';
+ return $result;
}
if (is_null($this->_value)) {
// echo 'Cell '.$this->getCoordinate().' has no value, formula or otherwise<br />';
return null;
- } else if ($this->_dataType != PHPExcel_Cell_DataType::TYPE_FORMULA) {
-// echo 'Cell value for '.$this->getCoordinate().' is not a formula: Returning data value of '.$this->_value.'<br />';
- return $this->_value;
- } else {
-// echo 'Cell value is a formula: Calculating value<br />';
- return PHPExcel_Calculation::getInstance()->calculateCellValue($this,$resetLog);
}
+// echo 'Cell value for '.$this->getCoordinate().' is not a formula: Returning data value of '.$this->_value.'<br />';
+ return $this->_value;
}
/**
@@ -298,8 +300,7 @@ class PHPExcel_Cell
$this->_calculatedValue = $pValue;
}
- $this->notifyCacheController();
- return $this;
+ return $this->notifyCacheController();
}
/**
@@ -332,8 +333,7 @@ class PHPExcel_Cell
{
$this->_dataType = $pDataType;
- $this->notifyCacheController();
- return $this;
+ return $this->notifyCacheController();
}
/**
@@ -361,15 +361,14 @@ class PHPExcel_Cell
throw new Exception('Cannot get data validation for cell that is not bound to a worksheet');
}
- $dataValidation = $this->_parent->getDataValidation($this->getCoordinate());
- return $dataValidation;
+ return $this->_parent->getDataValidation($this->getCoordinate());
}
/**
* Set Data validation
*
- * @param PHPExcel_Cell_DataValidation $pDataValidation
- * @throws Exception
+ * @param PHPExcel_Cell_DataValidation $pDataValidation
+ * @throws Exception
* @return PHPExcel_Cell
*/
public function setDataValidation(PHPExcel_Cell_DataValidation $pDataValidation = null)
@@ -380,45 +379,43 @@ class PHPExcel_Cell
$this->_parent->setDataValidation($this->getCoordinate(), $pDataValidation);
- $this->notifyCacheController();
- return $this;
+ return $this->notifyCacheController();
}
- /**
- * Has Hyperlink
- *
- * @return boolean
- */
- public function hasHyperlink()
- {
+ /**
+ * Has Hyperlink
+ *
+ * @return boolean
+ */
+ public function hasHyperlink()
+ {
if (!isset($this->_parent)) {
throw new Exception('Cannot check for hyperlink when cell is not bound to a worksheet');
}
return $this->_parent->hyperlinkExists($this->getCoordinate());
- }
-
- /**
- * Get Hyperlink
- *
- * @throws Exception
- * @return PHPExcel_Cell_Hyperlink
- */
- public function getHyperlink()
- {
+ }
+
+ /**
+ * Get Hyperlink
+ *
+ * @throws Exception
+ * @return PHPExcel_Cell_Hyperlink
+ */
+ public function getHyperlink()
+ {
if (!isset($this->_parent)) {
throw new Exception('Cannot get hyperlink for cell that is not bound to a worksheet');
}
- $hyperlink = $this->_parent->getHyperlink($this->getCoordinate());
- return $hyperlink;
- }
+ return $this->_parent->getHyperlink($this->getCoordinate());
+ }
/**
* Set Hyperlink
*
- * @param PHPExcel_Cell_Hyperlink $pHyperlink
- * @throws Exception
+ * @param PHPExcel_Cell_Hyperlink $pHyperlink
+ * @throws Exception
* @return PHPExcel_Cell
*/
public function setHyperlink(PHPExcel_Cell_Hyperlink $pHyperlink = null)
@@ -429,9 +426,8 @@ class PHPExcel_Cell
$this->_parent->setHyperlink($this->getCoordinate(), $pHyperlink);
- $this->notifyCacheController();
- return $this;
- }
+ return $this->notifyCacheController();
+ }
/**
* Get parent
@@ -451,94 +447,63 @@ class PHPExcel_Cell
public function rebindParent(PHPExcel_Worksheet $parent) {
$this->_parent = $parent;
- $this->notifyCacheController();
- return $this;
+ return $this->notifyCacheController();
}
/**
* Is cell in a specific range?
*
- * @param string $pRange Cell range (e.g. A1:A1)
- * @return boolean
+ * @param string $pRange Cell range (e.g. A1:A1)
+ * @return boolean
*/
public function isInRange($pRange = 'A1:A1')
{
- // Uppercase coordinate
- $pRange = strtoupper($pRange);
-
- // Extract range
- $rangeA = '';
- $rangeB = '';
- if (strpos($pRange, ':') === false) {
- $rangeA = $pRange;
- $rangeB = $pRange;
- } else {
- list($rangeA, $rangeB) = explode(':', $pRange);
- }
-
- // Calculate range outer borders
- $rangeStart = PHPExcel_Cell::coordinateFromString($rangeA);
- $rangeEnd = PHPExcel_Cell::coordinateFromString($rangeB);
+ list($rangeStart,$rangeEnd) = PHPExcel_Cell::rangeBoundaries($pRange);
- // Translate column into index
- $rangeStart[0] = PHPExcel_Cell::columnIndexFromString($rangeStart[0]) - 1;
- $rangeEnd[0] = PHPExcel_Cell::columnIndexFromString($rangeEnd[0]) - 1;
-
- // Translate properties
- $myColumn = PHPExcel_Cell::columnIndexFromString($this->getColumn()) - 1;
- $myRow = $this->getRow();
+ // Translate properties
+ $myColumn = PHPExcel_Cell::columnIndexFromString($this->getColumn()) - 1;
+ $myRow = $this->getRow();
// Verify if cell is in range
- return (
- ($rangeStart[0] <= $myColumn && $rangeEnd[0] >= $myColumn) &&
- ($rangeStart[1] <= $myRow && $rangeEnd[1] >= $myRow)
- );
+ return (($rangeStart[0] <= $myColumn) && ($rangeEnd[0] >= $myColumn) &&
+ ($rangeStart[1] <= $myRow) && ($rangeEnd[1] >= $myRow)
+ );
}
/**
* Coordinate from string
*
- * @param string $pCoordinateString
- * @return array Array containing column and row (indexes 0 and 1)
+ * @param string $pCoordinateString
+ * @return array Array containing column and row (indexes 0 and 1)
* @throws Exception
*/
public static function coordinateFromString($pCoordinateString = 'A1')
{
if (strpos($pCoordinateString,':') !== false) {
throw new Exception('Cell coordinate string can not be a range of cells.');
-
} else if ($pCoordinateString == '') {
throw new Exception('Cell coordinate can not be zero-length string.');
-
} else if (preg_match("/([$]?[A-Z]+)([$]?\d+)/", $pCoordinateString, $matches)) {
list(, $column, $row) = $matches;
return array($column, $row);
-
} else {
throw new Exception('Invalid cell coordinate.');
-
}
}
/**
* Make string coordinate absolute
*
- * @param string $pCoordinateString
- * @return string Absolute coordinate
+ * @param string $pCoordinateString
+ * @return string Absolute coordinate
* @throws Exception
*/
public static function absoluteCoordinate($pCoordinateString = 'A1')
{
if (strpos($pCoordinateString,':') === false && strpos($pCoordinateString,',') === false) {
- // Return value
- $returnValue = '';
-
// Create absolute coordinate
list($column, $row) = PHPExcel_Cell::coordinateFromString($pCoordinateString);
- $returnValue = '$' . $column . '$' . $row;
-
- // Return
- return $returnValue;
+ return '$' . $column . '$' . $row;
} else {
throw new Exception("Coordinate string should not be a cell range.");
}
@@ -547,8 +512,8 @@ class PHPExcel_Cell
/**
* Split range into coordinate strings
*
- * @param string $pRange
- * @return array Array containg one or more arrays containing one or two coordinate strings
+ * @param string $pRange
+ * @return array Array containg one or more arrays containing one or two coordinate strings
*/
public static function splitRange($pRange = 'A1:A1')
{
@@ -562,7 +527,7 @@ class PHPExcel_Cell
/**
* Build range from coordinate strings
*
- * @param array $pRange Array containg one or more arrays containing one or two coordinate strings
+ * @param array $pRange Array containg one or more arrays containing one or two coordinate strings
* @return string String representation of $pRange
* @throws Exception
*/
@@ -584,67 +549,76 @@ class PHPExcel_Cell
}
/**
- * Calculate range dimension
+ * Calculate range boundaries
*
- * @param string $pRange Cell range (e.g. A1:A1)
- * @return array Range dimension (width, height)
+ * @param string $pRange Cell range (e.g. A1:A1)
+ * @return array Range coordinates (Start Cell, End Cell) where Start Cell and End Cell are arrays (Column Number, Row Number)
*/
- public static function rangeDimension($pRange = 'A1:A1')
+ public static function rangeBoundaries($pRange = 'A1:A1')
{
// Uppercase coordinate
$pRange = strtoupper($pRange);
- // Extract range
- $rangeA = '';
- $rangeB = '';
- if (strpos($pRange, ':') === false) {
- $rangeA = $pRange;
- $rangeB = $pRange;
- } else {
- list($rangeA, $rangeB) = explode(':', $pRange);
- }
+ // Extract range
+ if (strpos($pRange, ':') === false) {
+ $rangeA = $rangeB = $pRange;
+ } else {
+ list($rangeA, $rangeB) = explode(':', $pRange);
+ }
- // Calculate range outer borders
- $rangeStart = PHPExcel_Cell::coordinateFromString($rangeA);
- $rangeEnd = PHPExcel_Cell::coordinateFromString($rangeB);
+ // Calculate range outer borders
+ $rangeStart = PHPExcel_Cell::coordinateFromString($rangeA);
+ $rangeEnd = PHPExcel_Cell::coordinateFromString($rangeB);
- // Translate column into index
- $rangeStart[0] = PHPExcel_Cell::columnIndexFromString($rangeStart[0]);
- $rangeEnd[0] = PHPExcel_Cell::columnIndexFromString($rangeEnd[0]);
+ // Translate column into index
+ $rangeStart[0] = PHPExcel_Cell::columnIndexFromString($rangeStart[0]);
+ $rangeEnd[0] = PHPExcel_Cell::columnIndexFromString($rangeEnd[0]);
- return array( ($rangeEnd[0] - $rangeStart[0] + 1), ($rangeEnd[1] - $rangeStart[1] + 1) );
+ return array($rangeStart, $rangeEnd);
+ }
+
+ /**
+ * Calculate range dimension
+ *
+ * @param string $pRange Cell range (e.g. A1:A1)
+ * @return array Range dimension (width, height)
+ */
+ public static function rangeDimension($pRange = 'A1:A1')
+ {
+ // Calculate range outer borders
+ list($rangeStart,$rangeEnd) = PHPExcel_Cell::rangeBoundaries($pRange);
+
+ return array( ($rangeEnd[0] - $rangeStart[0] + 1), ($rangeEnd[1] - $rangeStart[1] + 1) );
}
/**
* Calculate range boundaries
*
- * @param string $pRange Cell range (e.g. A1:A1)
- * @return array Range boundaries (staring Column, starting Row, Final Column, Final Row)
+ * @param string $pRange Cell range (e.g. A1:A1)
+ * @return array Range boundaries (staring Column, starting Row, Final Column, Final Row)
*/
public static function getRangeBoundaries($pRange = 'A1:A1')
{
// Uppercase coordinate
$pRange = strtoupper($pRange);
- // Extract range
- $rangeA = '';
- $rangeB = '';
- if (strpos($pRange, ':') === false) {
- $rangeA = $pRange;
- $rangeB = $pRange;
- } else {
- list($rangeA, $rangeB) = explode(':', $pRange);
- }
+ // Extract range
+ if (strpos($pRange, ':') === false) {
+ $rangeA = $pRange;
+ $rangeB = $pRange;
+ } else {
+ list($rangeA, $rangeB) = explode(':', $pRange);
+ }
- return array( self::coordinateFromString($rangeA), self::coordinateFromString($rangeB));
+ return array( self::coordinateFromString($rangeA), self::coordinateFromString($rangeB));
}
/**
* Column index from string
*
- * @param string $pString
- * @return int Column index (base 1 !!!)
- * @throws Exception
+ * @param string $pString
+ * @return int Column index (base 1 !!!)
+ * @throws Exception
*/
public static function columnIndexFromString($pString = 'A')
{
@@ -684,14 +658,14 @@ class PHPExcel_Cell
if ($pColumnIndex < 26) {
return chr(65 + $pColumnIndex);
}
- return PHPExcel_Cell::stringFromColumnIndex((int)($pColumnIndex / 26) -1).chr(65 + $pColumnIndex%26) ;
+ return PHPExcel_Cell::stringFromColumnIndex((int)($pColumnIndex / 26) -1).chr(65 + $pColumnIndex%26) ;
}
/**
* Extract all cell references in range
*
- * @param string $pRange Range (e.g. A1 or A1:A10 or A1:A10 A100:A1000)
- * @return array Array containing single cell references
+ * @param string $pRange Range (e.g. A1 or A1:A10 or A1:A10 A100:A1000)
+ * @return array Array containing single cell references
*/
public static function extractAllCellReferencesInRange($pRange = 'A1') {
// Returnvalue
@@ -731,17 +705,17 @@ class PHPExcel_Cell
$rangeStart = $rangeEnd = '';
$startingCol = $startingRow = $endingCol = $endingRow = 0;
- list($rangeStart, $rangeEnd) = $range[$i];
+ list($rangeStart, $rangeEnd) = $range[$i];
list($startingCol, $startingRow) = PHPExcel_Cell::coordinateFromString($rangeStart);
- list($endingCol, $endingRow) = PHPExcel_Cell::coordinateFromString($rangeEnd);
+ list($endingCol, $endingRow) = PHPExcel_Cell::coordinateFromString($rangeEnd);
// Conversions...
- $startingCol = PHPExcel_Cell::columnIndexFromString($startingCol);
- $endingCol = PHPExcel_Cell::columnIndexFromString($endingCol);
+ $startingCol = PHPExcel_Cell::columnIndexFromString($startingCol);
+ $endingCol = PHPExcel_Cell::columnIndexFromString($endingCol);
// Current data
- $currentCol = --$startingCol;
- $currentRow = $startingRow;
+ $currentCol = --$startingCol;
+ $currentRow = $startingRow;
// Loop cells
while ($currentCol < $endingCol) {
@@ -763,9 +737,9 @@ class PHPExcel_Cell
/**
* Compare 2 cells
*
- * @param PHPExcel_Cell $a Cell a
- * @param PHPExcel_Cell $a Cell b
- * @return int Result of comparison (always -1 or 1, never zero!)
+ * @param PHPExcel_Cell $a Cell a
+ * @param PHPExcel_Cell $a Cell b
+ * @return int Result of comparison (always -1 or 1, never zero!)
*/
public static function compareCells(PHPExcel_Cell $a, PHPExcel_Cell $b)
{
@@ -813,7 +787,7 @@ class PHPExcel_Cell
public function __clone() {
$vars = get_object_vars($this);
foreach ($vars as $key => $value) {
- if (is_object($value)) {
+ if ((is_object($value)) && ($key != '_parent')) {
$this->$key = clone $value;
} else {
$this->$key = $value;
@@ -841,8 +815,20 @@ class PHPExcel_Cell
{
$this->_xfIndex = $pValue;
- $this->notifyCacheController();
+ return $this->notifyCacheController();
+ }
+
+
+ public function setFormulaAttributes($pAttributes)
+ {
+ $this->_formulaAttributes = $pAttributes;
return $this;
}
+ public function getFormulaAttributes()
+ {
+ return $this->_formulaAttributes;
+ }
+
}
+
diff --git a/libraries/PHPExcel/PHPExcel/Cell/AdvancedValueBinder.php b/libraries/PHPExcel/PHPExcel/Cell/AdvancedValueBinder.php
index 7e305c5..5126811 100644
--- a/libraries/PHPExcel/PHPExcel/Cell/AdvancedValueBinder.php
+++ b/libraries/PHPExcel/PHPExcel/Cell/AdvancedValueBinder.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Cell
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/Cell/DataType.php b/libraries/PHPExcel/PHPExcel/Cell/DataType.php
index 1496d83..d542cab 100644
--- a/libraries/PHPExcel/PHPExcel/Cell/DataType.php
+++ b/libraries/PHPExcel/PHPExcel/Cell/DataType.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Cell
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/Cell/DataValidation.php b/libraries/PHPExcel/PHPExcel/Cell/DataValidation.php
index 2c3913c..db1b497 100644
--- a/libraries/PHPExcel/PHPExcel/Cell/DataValidation.php
+++ b/libraries/PHPExcel/PHPExcel/Cell/DataValidation.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Cell
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/Cell/DefaultValueBinder.php b/libraries/PHPExcel/PHPExcel/Cell/DefaultValueBinder.php
index e49449f..ad5ae46 100644
--- a/libraries/PHPExcel/PHPExcel/Cell/DefaultValueBinder.php
+++ b/libraries/PHPExcel/PHPExcel/Cell/DefaultValueBinder.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Cell
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/Cell/Hyperlink.php b/libraries/PHPExcel/PHPExcel/Cell/Hyperlink.php
index eab9297..994cef5 100644
--- a/libraries/PHPExcel/PHPExcel/Cell/Hyperlink.php
+++ b/libraries/PHPExcel/PHPExcel/Cell/Hyperlink.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Cell
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/Cell/IValueBinder.php b/libraries/PHPExcel/PHPExcel/Cell/IValueBinder.php
index 4bd1ef2..c14d630 100644
--- a/libraries/PHPExcel/PHPExcel/Cell/IValueBinder.php
+++ b/libraries/PHPExcel/PHPExcel/Cell/IValueBinder.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Cell
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/Comment.php b/libraries/PHPExcel/PHPExcel/Comment.php
index 735e78c..432cfe1 100644
--- a/libraries/PHPExcel/PHPExcel/Comment.php
+++ b/libraries/PHPExcel/PHPExcel/Comment.php
@@ -22,7 +22,7 @@
* @package PHPExcel
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/DocumentProperties.php b/libraries/PHPExcel/PHPExcel/DocumentProperties.php
index 64b0c2a..d6d928e 100644
--- a/libraries/PHPExcel/PHPExcel/DocumentProperties.php
+++ b/libraries/PHPExcel/PHPExcel/DocumentProperties.php
@@ -8,12 +8,12 @@
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
- *
+ *
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
- *
+ *
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
@@ -22,7 +22,7 @@
* @package PHPExcel
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
@@ -41,70 +41,70 @@ class PHPExcel_DocumentProperties
* @var string
*/
private $_creator;
-
+
/**
* LastModifiedBy
*
* @var string
*/
private $_lastModifiedBy;
-
+
/**
* Created
*
* @var datetime
*/
private $_created;
-
+
/**
* Modified
*
* @var datetime
*/
private $_modified;
-
+
/**
* Title
*
* @var string
*/
private $_title;
-
+
/**
* Description
*
* @var string
*/
private $_description;
-
+
/**
* Subject
*
* @var string
*/
private $_subject;
-
+
/**
* Keywords
*
* @var string
*/
private $_keywords;
-
+
/**
* Category
*
* @var string
*/
private $_category;
-
+
/**
* Company
- *
+ *
* @var string
*/
private $_company;
-
+
/**
* Create a new PHPExcel_DocumentProperties
*/
@@ -120,9 +120,10 @@ class PHPExcel_DocumentProperties
$this->_description = '';
$this->_keywords = '';
$this->_category = '';
+ $this->_manager = '';
$this->_company = 'Microsoft Corporation';
}
-
+
/**
* Get Creator
*
@@ -131,7 +132,7 @@ class PHPExcel_DocumentProperties
public function getCreator() {
return $this->_creator;
}
-
+
/**
* Set Creator
*
@@ -142,7 +143,7 @@ class PHPExcel_DocumentProperties
$this->_creator = $pValue;
return $this;
}
-
+
/**
* Get Last Modified By
*
@@ -151,7 +152,7 @@ class PHPExcel_DocumentProperties
public function getLastModifiedBy() {
return $this->_lastModifiedBy;
}
-
+
/**
* Set Last Modified By
*
@@ -162,7 +163,7 @@ class PHPExcel_DocumentProperties
$this->_lastModifiedBy = $pValue;
return $this;
}
-
+
/**
* Get Created
*
@@ -171,7 +172,7 @@ class PHPExcel_DocumentProperties
public function getCreated() {
return $this->_created;
}
-
+
/**
* Set Created
*
@@ -185,7 +186,7 @@ class PHPExcel_DocumentProperties
$this->_created = $pValue;
return $this;
}
-
+
/**
* Get Modified
*
@@ -194,7 +195,7 @@ class PHPExcel_DocumentProperties
public function getModified() {
return $this->_modified;
}
-
+
/**
* Set Modified
*
@@ -208,7 +209,7 @@ class PHPExcel_DocumentProperties
$this->_modified = $pValue;
return $this;
}
-
+
/**
* Get Title
*
@@ -217,7 +218,7 @@ class PHPExcel_DocumentProperties
public function getTitle() {
return $this->_title;
}
-
+
/**
* Set Title
*
@@ -228,7 +229,7 @@ class PHPExcel_DocumentProperties
$this->_title = $pValue;
return $this;
}
-
+
/**
* Get Description
*
@@ -237,7 +238,7 @@ class PHPExcel_DocumentProperties
public function getDescription() {
return $this->_description;
}
-
+
/**
* Set Description
*
@@ -248,7 +249,7 @@ class PHPExcel_DocumentProperties
$this->_description = $pValue;
return $this;
}
-
+
/**
* Get Subject
*
@@ -257,7 +258,7 @@ class PHPExcel_DocumentProperties
public function getSubject() {
return $this->_subject;
}
-
+
/**
* Set Subject
*
@@ -268,7 +269,7 @@ class PHPExcel_DocumentProperties
$this->_subject = $pValue;
return $this;
}
-
+
/**
* Get Keywords
*
@@ -277,7 +278,7 @@ class PHPExcel_DocumentProperties
public function getKeywords() {
return $this->_keywords;
}
-
+
/**
* Set Keywords
*
@@ -288,7 +289,7 @@ class PHPExcel_DocumentProperties
$this->_keywords = $pValue;
return $this;
}
-
+
/**
* Get Category
*
@@ -297,7 +298,7 @@ class PHPExcel_DocumentProperties
public function getCategory() {
return $this->_category;
}
-
+
/**
* Set Category
*
@@ -308,7 +309,7 @@ class PHPExcel_DocumentProperties
$this->_category = $pValue;
return $this;
}
-
+
/**
* Get Company
*
@@ -317,18 +318,38 @@ class PHPExcel_DocumentProperties
public function getCompany() {
return $this->_company;
}
-
+
/**
* Set Company
*
* @param string $pValue
- * @return PHPPowerPoint_DocumentProperties
+ * @return PHPExcel_DocumentProperties
*/
public function setCompany($pValue = '') {
$this->_company = $pValue;
return $this;
}
-
+
+ /**
+ * Get Manager
+ *
+ * @return string
+ */
+ public function getManager() {
+ return $this->_manager;
+ }
+
+ /**
+ * Set Manager
+ *
+ * @param string $pValue
+ * @return PHPExcel_DocumentProperties
+ */
+ public function setManager($pValue = '') {
+ $this->_manager = $pValue;
+ return $this;
+ }
+
/**
* Implement PHP __clone to create a deep clone, not just a shallow copy.
*/
diff --git a/libraries/PHPExcel/PHPExcel/DocumentSecurity.php b/libraries/PHPExcel/PHPExcel/DocumentSecurity.php
index 1522189..a6de9ee 100644
--- a/libraries/PHPExcel/PHPExcel/DocumentSecurity.php
+++ b/libraries/PHPExcel/PHPExcel/DocumentSecurity.php
@@ -22,7 +22,7 @@
* @package PHPExcel
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/HashTable.php b/libraries/PHPExcel/PHPExcel/HashTable.php
index bd526b6..2191672 100644
--- a/libraries/PHPExcel/PHPExcel/HashTable.php
+++ b/libraries/PHPExcel/PHPExcel/HashTable.php
@@ -22,7 +22,7 @@
* @package PHPExcel
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/IComparable.php b/libraries/PHPExcel/PHPExcel/IComparable.php
index 3c175d1..0a51b06 100644
--- a/libraries/PHPExcel/PHPExcel/IComparable.php
+++ b/libraries/PHPExcel/PHPExcel/IComparable.php
@@ -20,7 +20,7 @@
* @package PHPExcel
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/IOFactory.php b/libraries/PHPExcel/PHPExcel/IOFactory.php
index 21fd23c..a3650be 100644
--- a/libraries/PHPExcel/PHPExcel/IOFactory.php
+++ b/libraries/PHPExcel/PHPExcel/IOFactory.php
@@ -22,7 +22,7 @@
* @package PHPExcel
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/NamedRange.php b/libraries/PHPExcel/PHPExcel/NamedRange.php
index 1aa5236..992c2fa 100644
--- a/libraries/PHPExcel/PHPExcel/NamedRange.php
+++ b/libraries/PHPExcel/PHPExcel/NamedRange.php
@@ -22,7 +22,7 @@
* @package PHPExcel
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/Reader/CSV.php b/libraries/PHPExcel/PHPExcel/Reader/CSV.php
index 5fa83bd..086c948 100644
--- a/libraries/PHPExcel/PHPExcel/Reader/CSV.php
+++ b/libraries/PHPExcel/PHPExcel/Reader/CSV.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Reader
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/Reader/DefaultReadFilter.php b/libraries/PHPExcel/PHPExcel/Reader/DefaultReadFilter.php
index c6620e7..e83ac9a 100644
--- a/libraries/PHPExcel/PHPExcel/Reader/DefaultReadFilter.php
+++ b/libraries/PHPExcel/PHPExcel/Reader/DefaultReadFilter.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Reader
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/Reader/Excel2003XML.php b/libraries/PHPExcel/PHPExcel/Reader/Excel2003XML.php
index 96e3436..99f00ed 100644
--- a/libraries/PHPExcel/PHPExcel/Reader/Excel2003XML.php
+++ b/libraries/PHPExcel/PHPExcel/Reader/Excel2003XML.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Reader
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
@@ -557,6 +557,11 @@ class PHPExcel_Reader_Excel2003XML implements PHPExcel_Reader_IReader
$cellDataFormula = '';
if (isset($cell_ss['Formula'])) {
$cellDataFormula = $cell_ss['Formula'];
+ // added this as a check for array formulas
+ if (isset($cell_ss['ArrayRange'])) {
+ $cellDataCSEFormula = $cell_ss['ArrayRange'];
+// echo "found an array formula at ".$columnID.$rowID."<br />";
+ }
$hasCalculatedValue = true;
}
if (isset($cell->Data)) {
diff --git a/libraries/PHPExcel/PHPExcel/Reader/Excel2007.php b/libraries/PHPExcel/PHPExcel/Reader/Excel2007.php
index 031dee5..c4e3e41 100644
--- a/libraries/PHPExcel/PHPExcel/Reader/Excel2007.php
+++ b/libraries/PHPExcel/PHPExcel/Reader/Excel2007.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Reader
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
@@ -71,6 +71,9 @@ class PHPExcel_Reader_Excel2007 implements PHPExcel_Reader_IReader
*/
private $_readFilter = null;
+
+ private $_referenceHelper = null;
+
/**
* Read data only?
*
@@ -150,6 +153,7 @@ class PHPExcel_Reader_Excel2007 implements PHPExcel_Reader_IReader
*/
public function __construct() {
$this->_readFilter = new PHPExcel_Reader_DefaultReadFilter();
+ $this->_referenceHelper = PHPExcel_ReferenceHelper::getInstance();
}
/**
@@ -245,12 +249,11 @@ class PHPExcel_Reader_Excel2007 implements PHPExcel_Reader_IReader
$difference[0] = PHPExcel_Cell::columnIndexFromString($current[0]) - PHPExcel_Cell::columnIndexFromString($master[0]);
$difference[1] = $current[1] - $master[1];
- $helper = PHPExcel_ReferenceHelper::getInstance();
- $value = $helper->updateFormulaReferences( $sharedFormulas[$instance]['formula'],
- 'A1',
- $difference[0],
- $difference[1]
- );
+ $value = $this->_referenceHelper->updateFormulaReferences( $sharedFormulas[$instance]['formula'],
+ 'A1',
+ $difference[0],
+ $difference[1]
+ );
// echo 'Adjusted Formula is '.$value.'<br />';
}
}
@@ -311,7 +314,7 @@ class PHPExcel_Reader_Excel2007 implements PHPExcel_Reader_IReader
switch ($rel["Type"]) {
case "http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-…":
$xmlCore = simplexml_load_string($this->_getFromZipArchive($zip, "{$rel['Target']}"));
- if ($xmlCore) {
+ if (is_object($xmlCore)) {
$xmlCore->registerXPathNamespace("dc", "http://purl.org/dc/elements/1.1/");
$xmlCore->registerXPathNamespace("dcterms", "http://purl.org/dc/terms/");
$xmlCore->registerXPathNamespace("cp", "http://schemas.openxmlformats.org/package/2006/metadata/core-properties");
@@ -328,6 +331,25 @@ class PHPExcel_Reader_Excel2007 implements PHPExcel_Reader_IReader
}
break;
+ case "http://schemas.openxmlformats.org/officeDocument/2006/relationships/extende…":
+ $xmlCore = simplexml_load_string($this->_getFromZipArchive($zip, "{$rel['Target']}"));
+ if (is_object($xmlCore)) {
+ $docProps = $excel->getProperties();
+ if (isset($xmlCore->Company))
+ $docProps->setCompany((string) $xmlCore->Company);
+ if (isset($xmlCore->Manager))
+ $docProps->setManager((string) $xmlCore->Manager);
+ }
+ break;
+
+ case "http://schemas.openxmlformats.org/officeDocument/2006/relationships/custom-…":
+ $xmlCore = simplexml_load_string($this->_getFromZipArchive($zip, "{$rel['Target']}"));
+ if (is_object($xmlCore)) {
+ $xmlCore->registerXPathNamespace("vt", "http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes");
+ $docProps = $excel->getProperties();
+ }
+ break;
+
case "http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeD…":
$dir = dirname($rel["Target"]);
$relsWorkbook = simplexml_load_string($this->_getFromZipArchive($zip, "$dir/_rels/" . basename($rel["Target"]) . ".rels")); //~ http://schemas.openxmlformats.org/package/2006/relationships");
@@ -692,6 +714,11 @@ class PHPExcel_Reader_Excel2007 implements PHPExcel_Reader_IReader
} else {
// Formula
$this->_castToFormula($c,$r,$cellDataType,$value,$calculatedValue,$sharedFormulas,'_castToBool');
+ if (isset($c->f['t'])) {
+ $att = array();
+ $att = $c->f;
+ $docSheet->getCell($r)->setFormulaAttributes($att);
+ }
// echo '$calculatedValue = '.$calculatedValue.'<br />';
}
break;
@@ -1276,10 +1303,14 @@ class PHPExcel_Reader_Excel2007 implements PHPExcel_Reader_IReader
break;
case '_xlnm.Print_Area':
- $range = explode('!', $extractedRange);
- $extractedRange = isset($range[1]) ? $range[1] : $range[0];
-
- $docSheet->getPageSetup()->setPrintArea($extractedRange);
+ $rangeSets = explode(',', $extractedRange); // FIXME: what if sheetname contains comma?
+ $newRangeSets = array();
+ for
each($rangeSets as $rangeSet) {
+ $range = explode('!', $rangeSet); // FIXME: what if sheetname contains exclamation mark?
+ $rangeSet = isset($range[1]) ? $range[1] : $range[0];
+ $newRangeSets[] = str_replace('$', '', $rangeSet);
+ }
+ $docSheet->getPageSetup()->setPrintArea(implode(',',$newRangeSets));
break;
default:
diff --git a/libraries/PHPExcel/PHPExcel/Reader/Excel5.php b/libraries/PHPExcel/PHPExcel/Reader/Excel5.php
index a4f20e7..5c71ee8 100644
--- a/libraries/PHPExcel/PHPExcel/Reader/Excel5.php
+++ b/libraries/PHPExcel/PHPExcel/Reader/Excel5.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Reader_Excel5
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
// Original file header of ParseXL (used as the base for this class):
@@ -834,7 +834,7 @@ class PHPExcel_Reader_Excel5 implements PHPExcel_Reader_IReader
// Foo!$C$7:$J$66
// Bar!$A$1:$IV$2
- $explodes = explode('!', $range);
+ $explodes = explode('!', $range); // FIXME: what if sheetname contains exclamation mark?
$sheetName = $explodes[0];
if (count($explodes) == 2) {
@@ -4202,22 +4202,22 @@ class PHPExcel_Reader_Excel5 implements PHPExcel_Reader_IReader
// 1. BITMAPCOREHEADER
// offset: 0; size: 4; bcSize, Specifies the number of bytes required by the structure
$bcSize = $this->_GetInt4d($iData, 0);
- var_dump($bcSize);
+// var_dump($bcSize);
// offset: 4; size: 2; bcWidth, specifies the width of the bitmap, in pixels
$bcWidth = $this->_GetInt2d($iData, 4);
- var_dump($bcWidth);
+// var_dump($bcWidth);
// offset: 6; size: 2; bcHeight, specifies the height of the bitmap, in pixels.
$bcHeight = $this->_GetInt2d($iData, 6);
- var_dump($bcHeight);
+// var_dump($bcHeight);
$ih = imagecreatetruecolor($bcWidth, $bcHeight);
// offset: 8; size: 2; bcPlanes, specifies the number of planes for the target device. This value must be 1
// offset: 10; size: 2; bcBitCount specifies the number of bits-per-pixel. This value must be 1, 4, 8, or 24
$bcBitCount = $this->_GetInt2d($iData, 10);
- var_dump($bcBitCount);
+// var_dump($bcBitCount);
$rgbString = substr($iData, 12);
$rgbTriples = array();
@@ -4602,24 +4602,24 @@ class PHPExcel_Reader_Excel5 implements PHPExcel_Reader_IReader
case 0x12: $name = 'tUplus'; $size = 1; $data = '+'; break;
case 0x13: $name = 'tUminus'; $size = 1; $data = '-'; break;
case 0x14: $name = 'tPercent'; $size = 1; $data = '%'; break;
- case 0x15: // parenthesis
+ case 0x15: // parenthesis
$name = 'tParen';
$size = 1;
$data = null;
break;
- case 0x16: // missing argument
+ case 0x16: // missing argument
$name = 'tMissArg';
$size = 1;
$data = '';
break;
- case 0x17: // string
+ case 0x17: // string
$name = 'tStr';
// offset: 1; size: var; Unicode string, 8-bit string length
$string = $this->_readUnicodeStringShort(substr($formulaData, 1));
$size = 1 + $string['size'];
$data = $this->_UTF8toExcelDoubleQuoted($string['value']);
break;
- case 0x19: // Special attribute
+ case 0x19: // Special attribute
// offset: 1; size: 1; attribute type flags:
switch (ord($formulaData[1])) {
case 0x01:
@@ -4689,39 +4689,42 @@ class PHPExcel_Reader_Excel5 implements PHPExcel_Reader_IReader
break;
}
break;
- case 0x1C: // error code
+ case 0x1C: // error code
// offset: 1; size: 1; error code
$name = 'tErr';
$size = 2;
$data = $this->_mapErrorCode(ord($formulaData[1]));
break;
- case 0x1D: // boolean
+ case 0x1D: // boolean
// offset: 1; size: 1; 0 = false, 1 = true;
$name = 'tBool';
$size = 2;
$data = ord($formulaData[1]) ? 'TRUE' : 'FALSE';
break;
- case 0x1E: // integer
+ case 0x1E: // integer
// offset: 1; size: 2; unsigned 16-bit integer
$name = 'tInt';
$size = 3;
$data = $this->_GetInt2d($formulaData, 1);
break;
- case 0x1F: // number
+ case 0x1F: // number
// offset: 1; size: 8;
$name = 'tNum';
$size = 9;
$data = $this->_extractNumber(substr($formulaData, 1));
$data = str_replace(',', '.', (string)$data); // in case non-English locale
break;
- case 0x40: // array constant
- case 0x60: // array constant
+ case 0x20: // array constant
+ case 0x40:
+ case 0x60:
// offset: 1; size: 7; not used
$name = 'tArray';
$size = 8;
$data = null;
break;
- case 0x41: // function with fixed number of arguments
+ case 0x21: // function with fixed number of arguments
+ case 0x41:
+ case 0x61:
$name = 'tFunc';
$size = 3;
// offset: 1; size: 2; index to built-in sheet function
@@ -4891,9 +4894,9 @@ class PHPExcel_Reader_Excel5 implements PHPExcel_Reader_IReader
}
$data = array('function' => $function, 'args' => $args);
break;
- case 0x22: // function with variable number of arguments
- case 0x42: // function with variable number of arguments
- case 0x62: // function with variable number of arguments
+ case 0x22: // function with variable number of arguments
+ case 0x42:
+ case 0x62:
$name = 'tFuncV';
$size = 4;
// offset: 1; size: 1; number of arguments
@@ -4995,8 +4998,9 @@ class PHPExcel_Reader_Excel5 implements PHPExcel_Reader_IReader
}
$data = array('function' => $function, 'args' => $args);
break;
- case 0x23: // index to defined name
+ case 0x23: // index to defined name
case 0x43:
+ case 0x63:
$name = 'tName';
$size = 5;
// offset: 1; size: 2; one-based index to definedname record
@@ -5004,22 +5008,23 @@ class PHPExcel_Reader_Excel5 implements PHPExcel_Reader_IReader
// offset: 2; size: 2; not used
$data = $this->_definedname[$definedNameIndex]['name'];
break;
- case 0x24: // single cell reference e.g. A5
+ case 0x24: // single cell reference e.g. A5
case 0x44:
case 0x64:
$name = 'tRef';
$size = 5;
$data = $this->_readBIFF8CellAddress(substr($formulaData, 1, 4));
break;
- case 0x25: // cell range reference to cells in the same sheet
+ case 0x25: // cell range reference to cells in the same sheet (2d)
case 0x45:
case 0x65:
$name = 'tArea';
$size = 9;
$data = $this->_readBIFF8CellRangeAddress(substr($formulaData, 1, 8));
break;
- case 0x26:
+ case 0x26: // Constant reference sub-expression
case 0x46:
+ case 0x66:
$name = 'tMemArea';
// offset: 1; size: 4; not used
// offset: 5; size: 2; size of the following subexpression
@@ -5027,7 +5032,9 @@ class PHPExcel_Reader_Excel5 implements PHPExcel_Reader_IReader
$size = 7 + $subSize;
$data = $this->_getFormulaFromData(substr($formulaData, 7, $subSize));
break;
+ case 0x27: // Deleted constant reference sub-expression
case 0x47:
+ case 0x67:
$name = 'tMemErr';
// offset: 1; size: 4; not used
// offset: 5; size: 2; size of the following subexpression
@@ -5035,16 +5042,17 @@ class PHPExcel_Reader_Excel5 implements PHPExcel_Reader_IReader
$size = 7 + $subSize;
$data = $this->_getFormulaFromData(substr($formulaData, 7, $subSize));
break;
- case 0x29:
+ case 0x29: // Variable reference sub-expression
case 0x49:
+ case 0x69:
$name = 'tMemFunc';
- // offset: 1; size: 2; size of the following subexpression
+ // offset: 1; size: 2; size of the following sub-expression
$subSize = $this->_GetInt2d($formulaData, 1);
$size = 3 + $subSize;
$data = $this->_getFormulaFromData(substr($formulaData, 3, $subSize));
break;
- case 0x2C: // Relative reference, used in shared formulas and some other places
+ case 0x2C: // Relative 2d cell reference reference, used in shared formulas and some other places
case 0x4C:
case 0x6C:
$name = 'tRefN';
@@ -5052,7 +5060,7 @@ class PHPExcel_Reader_Excel5 implements PHPExcel_Reader_IReader
$data = $this->_readBIFF8CellAddressB(substr($formulaData, 1, 4), $baseCell);
break;
- case 0x2D:
+ case 0x2D: // Relative 2d range reference
case 0x4D:
case 0x6D:
$name = 'tAreaN';
@@ -5060,7 +5068,7 @@ class PHPExcel_Reader_Excel5 implements PHPExcel_Reader_IReader
$data = $this->_readBIFF8CellRangeAddressB(substr($formulaData, 1, 8), $baseCell);
break;
- case 0x39:
+ case 0x39: // External name
case 0x59:
case 0x79:
$name = 'tNameX';
@@ -5073,8 +5081,9 @@ class PHPExcel_Reader_Excel5 implements PHPExcel_Reader_IReader
// offset: 5; size: 2; not used
break;
- case 0x3A: // 3d reference to cell
+ case 0x3A: // 3d reference to cell
case 0x5A:
+ case 0x7A:
$name = 'tRef3d';
$size = 7;
@@ -5085,15 +5094,15 @@ class PHPExcel_Reader_Excel5 implements PHPExcel_Reader_IReader
$cellAddress = $this->_readBIFF8CellAddress(substr($formulaData, 3, 4));
$data = "$sheetRange!$cellAddress";
-
} catch (Exception $e) {
// deleted sheet reference
$data = '#REF!';
}
break;
- case 0x3B: // 3d reference to cell range
+ case 0x3B: // 3d reference to cell range
case 0x5B:
+ case 0x7B:
$name = 'tArea3d';
$size = 11;
@@ -5104,15 +5113,13 @@ class PHPExcel_Reader_Excel5 implements PHPExcel_Reader_IReader
$cellRangeAddress = $this->_readBIFF8CellRangeAddress(substr($formulaData, 3, 8));
$data = "$sheetRange!$cellRangeAddress";
-
} catch (Exception $e) {
// deleted sheet reference
$data = '#REF!';
-
}
break;
- // case 0x39: // don't know how to deal with
+ // Unknown cases // don't know how to deal with
default:
throw new Exception('Unrecognized token ' . sprintf('%02X', $id) . ' in formula');
break;
diff --git a/libraries/PHPExcel/PHPExcel/Reader/Excel5/Escher.php b/libraries/PHPExcel/PHPExcel/Reader/Excel5/Escher.php
index 0418dd7..b7c67e9 100644
--- a/libraries/PHPExcel/PHPExcel/Reader/Excel5/Escher.php
+++ b/libraries/PHPExcel/PHPExcel/Reader/Excel5/Escher.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Reader_Excel5
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
/**
diff --git a/libraries/PHPExcel/PHPExcel/Reader/IReadFilter.php b/libraries/PHPExcel/PHPExcel/Reader/IReadFilter.php
index c397d56..00fa2e8 100644
--- a/libraries/PHPExcel/PHPExcel/Reader/IReadFilter.php
+++ b/libraries/PHPExcel/PHPExcel/Reader/IReadFilter.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Reader
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/Reader/IReader.php b/libraries/PHPExcel/PHPExcel/Reader/IReader.php
index ef5beac..e1cdc43 100644
--- a/libraries/PHPExcel/PHPExcel/Reader/IReader.php
+++ b/libraries/PHPExcel/PHPExcel/Reader/IReader.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Reader
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/Reader/OOCalc.php b/libraries/PHPExcel/PHPExcel/Reader/OOCalc.php
index 8a1407a..a1ddf91 100644
--- a/libraries/PHPExcel/PHPExcel/Reader/OOCalc.php
+++ b/libraries/PHPExcel/PHPExcel/Reader/OOCalc.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Reader
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
@@ -242,6 +242,9 @@ class PHPExcel_Reader_OOCalc implements PHPExcel_Reader_IReader
throw new Exception("Could not open " . $pFilename . " for reading! File does not exist.");
}
+ $timezoneObj = new DateTimeZone('Europe/London');
+ $GMT = new DateTimeZone('UTC');
+
$zip = new ZipArchive;
if ($zip->open($pFilename) === true) {
// echo '<h1>Meta Information</h1>';
@@ -338,6 +341,11 @@ class PHPExcel_Reader_OOCalc implements PHPExcel_Reader_IReader
foreach($worksheetData as $key => $rowData) {
// echo '<b>'.$key.'</b><br />';
switch ($key) {
+ case 'table-header-rows':
+ foreach ($rowData as $key=>$cellData) {
+ $rowData = $cellData;
+ break;
+ }
case 'table-row' :
$columnID = 'A';
foreach($rowData as $key => $cellData) {
@@ -387,7 +395,8 @@ class PHPExcel_Reader_OOCalc implements PHPExcel_Reader_IReader
break;
case 'date' :
$type = PHPExcel_Cell_DataType::TYPE_NUMERIC;
- $dateObj = date_create($cellDataOfficeAttributes['date-value']);
+ $dateObj = new DateTime($cellDataOfficeAttributes['date-value'], $GMT);
+ $dateObj->setTimeZone($timezoneObj);
list($year,$month,$day,$hour,$minute,$second) = explode(' ',$dateObj->format('Y m d H i s'));
$dataValue = PHPExcel_Shared_Date::FormattedPHPToExcel($year,$month,$day,$hour,$minute,$second);
if ($dataValue != floor($dataValue)) {
@@ -418,7 +427,7 @@ class PHPExcel_Reader_OOCalc implements PHPExcel_Reader_IReader
if (($key % 2) == 0) {
$value = preg_replace('/\[\.(.*):\.(.*)\]/Ui','$1:$2',$value);
$value = preg_replace('/\[\.(.*)\]/Ui','$1',$value);
- $value = PHPExcel_Calculation::_translateSeparator(';',',',$value);
+ $value = PHPExcel_Calculation::_translateSeparator(';',',',$value,$inBraces);
}
}
unset($value);
diff --git a/libraries/PHPExcel/PHPExcel/Reader/SYLK.php b/libraries/PHPExcel/PHPExcel/Reader/SYLK.php
index ec8a4d4..790aa2f 100644
--- a/libraries/PHPExcel/PHPExcel/Reader/SYLK.php
+++ b/libraries/PHPExcel/PHPExcel/Reader/SYLK.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Reader
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/Reader/Serialized.php b/libraries/PHPExcel/PHPExcel/Reader/Serialized.php
index 88f2892..04b14f2 100644
--- a/libraries/PHPExcel/PHPExcel/Reader/Serialized.php
+++ b/libraries/PHPExcel/PHPExcel/Reader/Serialized.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Reader
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/ReferenceHelper.php b/libraries/PHPExcel/PHPExcel/ReferenceHelper.php
index cb9673c..7a37ed0 100644
--- a/libraries/PHPExcel/PHPExcel/ReferenceHelper.php
+++ b/libraries/PHPExcel/PHPExcel/ReferenceHelper.php
@@ -22,7 +22,7 @@
* @package PHPExcel
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
@@ -35,6 +35,13 @@
*/
class PHPExcel_ReferenceHelper
{
+ /** Constants */
+ /** Regular Expressions */
+ const REFHELPER_REGEXP_CELLREF = '((\w*|\'[^!]*\')!)?(?<![:a-z\$])(\$?[a-z]{1,3}\$?\d+)(?=[^:!\d\'])';
+ const REFHELPER_REGEXP_CELLRANGE = '((\w*|\'[^!]*\')!)?(\$?[a-z]{1,3}\$?\d+):(\$?[a-z]{1,3}\$?\d+)';
+ const REFHELPER_REGEXP_ROWRANGE = '((\w*|\'[^!]*\')!)?(\$?\d+):(\$?\d+)';
+ const REFHELPER_REGEXP_COLRANGE = '((\w*|\'[^!]*\')!)?(\$?[a-z]{1,3}):(\$?[a-z]{1,3})';
+
/**
* Instance of this class
*
@@ -119,10 +126,8 @@ class PHPExcel_ReferenceHelper
$newCoordinates = PHPExcel_Cell::stringFromColumnIndex( PHPExcel_Cell::columnIndexFromString($cell->getColumn()) - 1 + $pNumCols ) . ($cell->getRow() + $pNumRows);
// Should the cell be updated? Move value and cellXf index from one cell to another.
- if (
- (PHPExcel_Cell::columnIndexFromString( $cell->getColumn() ) >= PHPExcel_Cell::columnIndexFromString($beforeColumn)) &&
- ($cell->getRow() >= $beforeRow)
- ) {
+ if ((PHPExcel_Cell::columnIndexFromString( $cell->getColumn() ) >= PHPExcel_Cell::columnIndexFromString($beforeColumn)) &&
+ ($cell->getRow() >= $beforeRow)) {
// Update cell styles
$pSheet->getCell($newCoordinates)->setXfIndex($cell->getXfIndex());
@@ -132,7 +137,7 @@ class PHPExcel_ReferenceHelper
if ($cell->getDataType() == PHPExcel_Cell_DataType::TYPE_FORMULA) {
// Formula should be adjusted
$pSheet->getCell($newCoordinates)
- ->setValue($this->updateFormulaReferences($cell->getValue(), $pBefore, $pNumCols, $pNumRows));
+ ->setValue($this->updateFormulaReferences($cell->getValue(), $pBefore, $pNumCols, $pNumRows, $pSheet->getTitle()));
} else {
// Formula should not be adjusted
$pSheet->getCell($newCoordinates)->setValue($cell->getValue());
@@ -340,43 +345,121 @@ class PHPExcel_ReferenceHelper
* @return string Updated formula
* @throws Exception
*/
- public function updateFormulaReferences($pFormula = '', $pBefore = 'A1', $pNumCols = 0, $pNumRows = 0) {
- // Parse formula into a tree of tokens
- $tokenisedFormula = PHPExcel_Calculation::getInstance()->parseFormula($pFormula);
-
- $newCellTokens = $cellTokens = array();
- $adjustCount = 0;
- // Build the translation table of cell tokens
- foreach($tokenisedFormula as $token) {
- $token = $token['value'];
- if (preg_match('/^'.PHPExcel_Calculation::CALCULATION_REGEXP_CELLREF.'$/i', $token, $matches)) {
- list($column,$row) = PHPExcel_Cell::coordinateFromString($token);
- // Max worksheet size is 1,048,576 rows by 16,384 columns in Excel 2007, so our adjustments need to be at least one digit more
- $column = PHPExcel_Cell::columnIndexFromString($column) + 100000;
- $row += 10000000;
- $cellIndex = $column.$row;
- if (!isset($cellTokens[$cellIndex])) {
- $newReference = $this->updateCellReference($token, $pBefore, $pNumCols, $pNumRows);
- if ($newReference !== $token) {
- $newCellTokens[$cellIndex] = preg_quote($newReference);
- $cellTokens[$cellIndex] = '/(?<![A-Z])'.preg_quote($token).'(?!\d)/i';
- ++$adjustCount;
- }
- }
- }
- }
- if ($adjustCount == 0) {
- return $pFormula;
- }
- krsort($cellTokens);
- krsort($newCellTokens);
-
+ public function updateFormulaReferences($pFormula = '', $pBefore = 'A1', $pNumCols = 0, $pNumRows = 0, $sheetName = '') {
// Update cell references in the formula
$formulaBlocks = explode('"',$pFormula);
foreach($formulaBlocks as $i => &$formulaBlock) {
- // Only count/replace in alternate array entries
+ // Ignore blocks that were enclosed in quotes (even entries in the $formulaBlocks array after the explode)
if (($i % 2) == 0) {
- $formulaBlock = preg_replace($cellTokens,$newCellTokens,$formulaBlock);
+ $adjustCount = 0;
+ $newCellTokens = $cellTokens = array();
+ // Search for row ranges (e.g. 'Sheet1'!3:5 or 3:5) with or without $ absolutes (e.g. $3:5)
+ $matchCount = preg_match_all('/'.self::REFHELPER_REGEXP_ROWRANGE.'/i', ' '.$formulaBlock.' ', $matches, PREG_SET_ORDER);
+ if ($matchCount > 0) {
+ foreach($matches as $match) {
+ $fromString = ($match[2] > '') ? $match[2].'!' : '';
+ $fromString .= $match[3].':'.$match[4];
+ $modified3 = substr($this->updateCellReference('$A'.$match[3],$pBefore,$pNumCols,$pNumRows),2);
+ $modified4 = substr($this->updateCellReference('$A'.$match[4],$pBefore,$pNumCols,$pNumRows),2);
+
+ if ($match[3].':'.$match[4] !== $modified3.':'.$modified4) {
+ if (($match[2] == '') || (trim($match[2],"'") == $sheetName)) {
+ $toString = ($match[2] > '') ? $match[2].'!' : '';
+ $toString .= $modified3.':'.$modified4;
+ // Max worksheet size is 1,048,576 rows by 16,384 columns in Excel 2007, so our adjustments need to be at least one digit more
+ $column = 100000;
+ $row = 10000000+trim($match[3],'$');
+ $cellIndex = $column.$row;
+
+ $newCellTokens[$cellIndex] = preg_quote($toString);
+ $cellTokens[$cellIndex] = '/(?<!\d)'.preg_quote($fromString).'(?!\d)/i';
+ ++$adjustCount;
+ }
+ }
+ }
+ }
+ // Search for column ranges (e.g. 'Sheet1'!C:E or C:E) with or without $ absolutes (e.g. $C:E)
+ $matchCount = preg_match_all('/'.self::REFHELPER_REGEXP_COLRANGE.'/i', ' '.$formulaBlock.' ', $matches, PREG_SET_ORDER);
+ if ($matchCount > 0) {
+ foreach($matches as $match) {
+ $fromString = ($match[2] > '') ? $match[2].'!' : '';
+ $fromString .= $match[3].':'.$match[4];
+ $modified3 = substr($this->updateCellReference($match[3].'$1',$pBefore,$pNumCols,$pNumRows),0,-2);
+ $modified4 = substr($this->updateCellReference($match[4].'$1',$pBefore,$pNumCols,$pNumRows),0,-2);
+
+ if ($match[3].':'.$match[4] !== $modified3.':'.$modified4) {
+ if (($match[2] == '') || (trim($match[2],"'") == $sheetName)) {
+ $toString = ($match[2] > '') ? $match[2].'!' : '';
+ $toString .= $modified3.':'.$modified4;
+ // Max worksheet size is 1,048,576 rows by 16,384 columns in Excel 2007, so our adjustments need to be at least one digit more
+ $column = PHPExcel_Cell::columnIndexFromString(trim($match[3],'$')) + 100000;
+ $row = 10000000;
+ $cellIndex = $column.$row;
+
+ $newCellTokens[$cellIndex] = preg_quote($toString);
+ $cellTokens[$cellIndex] = '/(?<![A-Z])'.preg_quote($fromString).'(?![A-Z])/i';
+ ++$adjustCount;
+ }
+ }
+ }
+ }
+ // Search for cell ranges (e.g. 'Sheet1'!A3:C5 or A3:C5) with or without $ absolutes (e.g. $A1:C$5)
+ $matchCount = preg_match_all('/'.self::REFHELPER_REGEXP_CELLRANGE.'/i', ' '.$formulaBlock.' ', $matches, PREG_SET_ORDER);
+ if ($matchCount > 0) {
+ foreach($matches as $match) {
+ $fromString = ($match[2] > '') ? $match[2].'!' : '';
+ $fromString .= $match[3].':'.$match[4];
+ $modified3 = $this->updateCellReference($match[3],$pBefore,$pNumCols,$pNumRows);
+ $modified4 = $this->updateCellReference($match[4],$pBefore,$pNumCols,$pNumRows);
+
+ if ($match[3].$match[4] !== $modified3.$modified4) {
+ if (($match[2] == '') || (trim($match[2],"'") == $sheetName)) {
+ $toString = ($match[2] > '') ? $match[2].'!' : '';
+ $toString .= $modified3.':'.$modified4;
+ list($column,$row) = PHPExcel_Cell::coordinateFromString($match[3]);
+ // Max worksheet size is 1,048,576 rows by 16,384 columns in Excel 2007, so our adjustments need to be at least one digit more
+ $column = PHPExcel_Cell::columnIndexFromString(trim($column,'$')) + 100000;
+ $row = trim($row,'$') + 10000000;
+ $cellIndex = $column.$row;
+
+ $newCellTokens[$cellIndex] = preg_quote($toString);
+ $cellTokens[$cellIndex] = '/(?<![A-Z])'.preg_quote($fromString).'(?!\d)/i';
+ ++$adjustCount;
+ }
+ }
+ }
+ }
+ // Search for cell references (e.g. 'Sheet1'!A3 or C5) with or without $ absolutes (e.g. $A1 or C$5)
+ $matchCount = preg_match_all('/'.self::REFHELPER_REGEXP_CELLREF.'/i', ' '.$formulaBlock.' ', $matches, PREG_SET_ORDER);
+ if ($matchCount > 0) {
+ foreach($matches as $match) {
+ $fromString = ($match[2] > '') ? $match[2].'!' : '';
+ $fromString .= $match[3];
+ $modified3 = $this->updateCellReference($match[3],$pBefore,$pNumCols,$pNumRows);
+
+ if ($match[3] !== $modified3) {
+ if (($match[2] == '') || (trim($match[2],"'") == $sheetName)) {
+ $toString = ($match[2] > '') ? $match[2].'!' : '';
+ $toString .= $modified3;
+ list($column,$row) = PHPExcel_Cell::coordinateFromString($match[3]);
+ // Max worksheet size is 1,048,576 rows by 16,384 columns in Excel 2007, so our adjustments need to be at least one digit more
+ $column = PHPExcel_Cell::columnIndexFromString(trim($column,'$')) + 100000;
+ $row = trim($row,'$') + 10000000;
+ $cellIndex = $column.$row;
+
+ $newCellTokens[$cellIndex] = preg_quote($toString);
+ $cellTokens[$cellIndex] = '/(?<![A-Z])'.preg_quote($fromString).'(?!\d)/i';
+ ++$adjustCount;
+ }
+ }
+ }
+ }
+ if ($adjustCount > 0) {
+ krsort($cellTokens);
+ krsort($newCellTokens);
+ // Update cell references in the formula
+ $formulaBlock = str_replace('\\','',preg_replace($cellTokens,$newCellTokens,$formulaBlock));
+ }
}
}
unset($formulaBlock);
diff --git a/libraries/PHPExcel/PHPExcel/RichText.php b/libraries/PHPExcel/PHPExcel/RichText.php
index c938c62..588e643 100644
--- a/libraries/PHPExcel/PHPExcel/RichText.php
+++ b/libraries/PHPExcel/PHPExcel/RichText.php
@@ -22,7 +22,7 @@
* @package PHPExcel_RichText
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/RichText/ITextElement.php b/libraries/PHPExcel/PHPExcel/RichText/ITextElement.php
index 613028f..3f1aa7a 100644
--- a/libraries/PHPExcel/PHPExcel/RichText/ITextElement.php
+++ b/libraries/PHPExcel/PHPExcel/RichText/ITextElement.php
@@ -20,7 +20,7 @@
* @package PHPExcel_RichText
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/RichText/Run.php b/libraries/PHPExcel/PHPExcel/RichText/Run.php
index 209af21..aac7676 100644
--- a/libraries/PHPExcel/PHPExcel/RichText/Run.php
+++ b/libraries/PHPExcel/PHPExcel/RichText/Run.php
@@ -20,7 +20,7 @@
* @package PHPExcel_RichText
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/RichText/TextElement.php b/libraries/PHPExcel/PHPExcel/RichText/TextElement.php
index 3a24482..f5ce8e0 100644
--- a/libraries/PHPExcel/PHPExcel/RichText/TextElement.php
+++ b/libraries/PHPExcel/PHPExcel/RichText/TextElement.php
@@ -20,7 +20,7 @@
* @package PHPExcel_RichText
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/Settings.php b/libraries/PHPExcel/PHPExcel/Settings.php
index 7a1d57e..52d7880 100644
--- a/libraries/PHPExcel/PHPExcel/Settings.php
+++ b/libraries/PHPExcel/PHPExcel/Settings.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Settings
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
/** PHPExcel root directory */
diff --git a/libraries/PHPExcel/PHPExcel/Shared/CodePage.php b/libraries/PHPExcel/PHPExcel/Shared/CodePage.php
index 10f82e4..f209838 100644
--- a/libraries/PHPExcel/PHPExcel/Shared/CodePage.php
+++ b/libraries/PHPExcel/PHPExcel/Shared/CodePage.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Shared
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/Shared/Date.php b/libraries/PHPExcel/PHPExcel/Shared/Date.php
index c45c23f..334e8df 100644
--- a/libraries/PHPExcel/PHPExcel/Shared/Date.php
+++ b/libraries/PHPExcel/PHPExcel/Shared/Date.php
@@ -23,7 +23,7 @@
* @package PHPExcel_Shared
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/Shared/Drawing.php b/libraries/PHPExcel/PHPExcel/Shared/Drawing.php
index a89c94e..a24f963 100644
--- a/libraries/PHPExcel/PHPExcel/Shared/Drawing.php
+++ b/libraries/PHPExcel/PHPExcel/Shared/Drawing.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Shared
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/Shared/Escher.php b/libraries/PHPExcel/PHPExcel/Shared/Escher.php
index c230d99..11c19b2 100644
--- a/libraries/PHPExcel/PHPExcel/Shared/Escher.php
+++ b/libraries/PHPExcel/PHPExcel/Shared/Escher.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Shared_Escher
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
/**
diff --git a/libraries/PHPExcel/PHPExcel/Shared/Escher/DgContainer.php b/libraries/PHPExcel/PHPExcel/Shared/Escher/DgContainer.php
index c78485b..6cbd2f0 100644
--- a/libraries/PHPExcel/PHPExcel/Shared/Escher/DgContainer.php
+++ b/libraries/PHPExcel/PHPExcel/Shared/Escher/DgContainer.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Shared_Escher
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
/**
diff --git a/libraries/PHPExcel/PHPExcel/Shared/Escher/DgContainer/SpgrContainer.php b/libraries/PHPExcel/PHPExcel/Shared/Escher/DgContainer/SpgrContainer.php
index c659fd5..919cf1a 100644
--- a/libraries/PHPExcel/PHPExcel/Shared/Escher/DgContainer/SpgrContainer.php
+++ b/libraries/PHPExcel/PHPExcel/Shared/Escher/DgContainer/SpgrContainer.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Shared_Escher
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
/**
diff --git a/libraries/PHPExcel/PHPExcel/Shared/Escher/DgContainer/SpgrContainer/SpContainer.php b/libraries/PHPExcel/PHPExcel/Shared/Escher/DgContainer/SpgrContainer/SpContainer.php
index 83e3193..454b7ee 100644
--- a/libraries/PHPExcel/PHPExcel/Shared/Escher/DgContainer/SpgrContainer/SpContainer.php
+++ b/libraries/PHPExcel/PHPExcel/Shared/Escher/DgContainer/SpgrContainer/SpContainer.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Shared_Escher
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
/**
diff --git a/libraries/PHPExcel/PHPExcel/Shared/Escher/DggContainer.php b/libraries/PHPExcel/PHPExcel/Shared/Escher/DggContainer.php
index 59d34cf..61eab5d 100644
--- a/libraries/PHPExcel/PHPExcel/Shared/Escher/DggContainer.php
+++ b/libraries/PHPExcel/PHPExcel/Shared/Escher/DggContainer.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Shared_Escher
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
/**
@@ -70,6 +70,13 @@ class PHPExcel_Shared_Escher_DggContainer
private $_OPT = array();
/**
+ * Array of identifier clusters containg information about the maximum shape identifiers
+ *
+ * @var array
+ */
+ private $_IDCLs = array();
+
+ /**
* Get maximum shape index of all shapes in all drawings (plus one)
*
* @return int
@@ -174,4 +181,23 @@ class PHPExcel_Shared_Escher_DggContainer
return null;
}
+ /**
+ * Get identifier clusters
+ *
+ * @return array
+ */
+ public function getIDCLs()
+ {
+ return $this->_IDCLs;
+ }
+
+ /**
+ * Set identifier clusters. array(<drawingId> => <max shape id>, ...)
+ *
+ * @param array $pValue
+ */
+ public function setIDCLs($pValue)
+ {
+ $this->_IDCLs = $pValue;
+ }
}
diff --git a/libraries/PHPExcel/PHPExcel/Shared/Escher/DggContainer/BstoreContainer.php b/libraries/PHPExcel/PHPExcel/Shared/Escher/DggContainer/BstoreContainer.php
index 9292f2d..6040fb2 100644
--- a/libraries/PHPExcel/PHPExcel/Shared/Escher/DggContainer/BstoreContainer.php
+++ b/libraries/PHPExcel/PHPExcel/Shared/Escher/DggContainer/BstoreContainer.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Shared_Escher
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
/**
diff --git a/libraries/PHPExcel/PHPExcel/Shared/Escher/DggContainer/BstoreContainer/BSE.php b/libraries/PHPExcel/PHPExcel/Shared/Escher/DggContainer/BstoreContainer/BSE.php
index 820e703..00ccb6d 100644
--- a/libraries/PHPExcel/PHPExcel/Shared/Escher/DggContainer/BstoreContainer/BSE.php
+++ b/libraries/PHPExcel/PHPExcel/Shared/Escher/DggContainer/BstoreContainer/BSE.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Shared_Escher
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
/**
diff --git a/libraries/PHPExcel/PHPExcel/Shared/Escher/DggContainer/BstoreContainer/BSE/Blip.php b/libraries/PHPExcel/PHPExcel/Shared/Escher/DggContainer/BstoreContainer/BSE/Blip.php
index 35003dd..7f13632 100644
--- a/libraries/PHPExcel/PHPExcel/Shared/Escher/DggContainer/BstoreContainer/BSE/Blip.php
+++ b/libraries/PHPExcel/PHPExcel/Shared/Escher/DggContainer/BstoreContainer/BSE/Blip.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Shared_Escher
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
/**
diff --git a/libraries/PHPExcel/PHPExcel/Shared/Excel5.php b/libraries/PHPExcel/PHPExcel/Shared/Excel5.php
index 05af633..6469c52 100644
--- a/libraries/PHPExcel/PHPExcel/Shared/Excel5.php
+++ b/libraries/PHPExcel/PHPExcel/Shared/Excel5.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Shared
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
/**
diff --git a/libraries/PHPExcel/PHPExcel/Shared/File.php b/libraries/PHPExcel/PHPExcel/Shared/File.php
index dc2c3fd..23169ce 100644
--- a/libraries/PHPExcel/PHPExcel/Shared/File.php
+++ b/libraries/PHPExcel/PHPExcel/Shared/File.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Shared
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
@@ -75,7 +75,9 @@ class PHPExcel_Shared_File
$returnValue = '';
// Try using realpath()
- $returnValue = realpath($pFilename);
+ if (file_exists($pFilename)) {
+ $returnValue = realpath($pFilename);
+ }
// Found something?
if ($returnValue == '' || is_null($returnValue)) {
@@ -107,14 +109,14 @@ class PHPExcel_Shared_File
// http://php.net/manual/en/function.sys-get-temp-dir.php#94119
if ( !function_exists('sys_get_temp_dir')) {
- if( $temp = getenv('TMP') ) {
- return realpath($temp);
+ if ($temp = getenv('TMP') ) {
+ if (file_exists($temp)) { return realpath($temp); }
}
- if( $temp = getenv('TEMP') ) {
- return realpath($temp);
+ if ($temp = getenv('TEMP') ) {
+ if (file_exists($temp)) { return realpath($temp); }
}
- if( $temp = getenv('TMPDIR') ) {
- return realpath($temp);
+ if ($temp = getenv('TMPDIR') ) {
+ if (file_exists($temp)) { return realpath($temp); }
}
// trick for creating a file in system's temporary dir
@@ -126,10 +128,11 @@ class PHPExcel_Shared_File
}
return null;
-
}
// use ordinary built-in PHP function
+ // There should be no problem with the 5.2.4 Suhosin realpath() bug, because this line should only
+ // be called if we're running 5.2.1 or earlier
return realpath(sys_get_temp_dir());
}
diff --git a/libraries/PHPExcel/PHPExcel/Shared/Font.php b/libraries/PHPExcel/PHPExcel/Shared/Font.php
index 1759e87..24d78be 100644
--- a/libraries/PHPExcel/PHPExcel/Shared/Font.php
+++ b/libraries/PHPExcel/PHPExcel/Shared/Font.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Shared
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/Shared/OLE/ChainedBlockStream.php b/libraries/PHPExcel/PHPExcel/Shared/OLE/ChainedBlockStream.php
index 7b6f845..af757d0 100644
--- a/libraries/PHPExcel/PHPExcel/Shared/OLE/ChainedBlockStream.php
+++ b/libraries/PHPExcel/PHPExcel/Shared/OLE/ChainedBlockStream.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Shared_OLE
* @copyright Copyright (c) 2006 - 2007 Christian Schmidt
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
/**
diff --git a/libraries/PHPExcel/PHPExcel/Shared/OLERead.php b/libraries/PHPExcel/PHPExcel/Shared/OLERead.php
index b747e13..6aebbf0 100644
--- a/libraries/PHPExcel/PHPExcel/Shared/OLERead.php
+++ b/libraries/PHPExcel/PHPExcel/Shared/OLERead.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Shared
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
define('IDENTIFIER_OLE', pack('CCCCCCCC', 0xd0, 0xcf, 0x11, 0xe0, 0xa1, 0xb1, 0x1a, 0xe1));
diff --git a/libraries/PHPExcel/PHPExcel/Shared/PasswordHasher.php b/libraries/PHPExcel/PHPExcel/Shared/PasswordHasher.php
index 6b7b312..7fb4934 100644
--- a/libraries/PHPExcel/PHPExcel/Shared/PasswordHasher.php
+++ b/libraries/PHPExcel/PHPExcel/Shared/PasswordHasher.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Shared
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/Shared/String.php b/libraries/PHPExcel/PHPExcel/Shared/String.php
index 32766df..c033b9a 100644
--- a/libraries/PHPExcel/PHPExcel/Shared/String.php
+++ b/libraries/PHPExcel/PHPExcel/Shared/String.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Shared
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
@@ -507,7 +507,7 @@ class PHPExcel_Shared_String
* @author Rasmus Andersson {@link http://rasmusandersson.se/}
* @author vadik56
*/
- function utf16_decode( $str, $bom_be=true ) {
+ public static function utf16_decode( $str, $bom_be=true ) {
if( strlen($str) < 2 ) return $str;
$c0 = ord($str{0});
$c1 = ord($str{1});
diff --git a/libraries/PHPExcel/PHPExcel/Shared/XMLWriter.php b/libraries/PHPExcel/PHPExcel/Shared/XMLWriter.php
index 223d3dd..8514847 100644
--- a/libraries/PHPExcel/PHPExcel/Shared/XMLWriter.php
+++ b/libraries/PHPExcel/PHPExcel/Shared/XMLWriter.php
@@ -22,13 +22,18 @@
* @package PHPExcel_Shared
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
if (!defined('DATE_W3C')) {
define('DATE_W3C', 'Y-m-d\TH:i:sP');
}
+if (!defined('DEBUGMODE_ENABLED')) {
+ define('DEBUGMODE_ENABLED', false);
+}
+
+
/**
* PHPExcel_Shared_XMLWriter
*
@@ -80,7 +85,9 @@ class PHPExcel_Shared_XMLWriter {
}
// Set default values
- $this->_xmlWriter->setIndent(true);
+ if (DEBUGMODE_ENABLED) {
+ $this->_xmlWriter->setIndent(true);
+ }
}
/**
diff --git a/libraries/PHPExcel/PHPExcel/Shared/ZipStreamWrapper.php b/libraries/PHPExcel/PHPExcel/Shared/ZipStreamWrapper.php
index 77661c6..b79bfc8 100644
--- a/libraries/PHPExcel/PHPExcel/Shared/ZipStreamWrapper.php
+++ b/libraries/PHPExcel/PHPExcel/Shared/ZipStreamWrapper.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Shared
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/Shared/trend/bestFitClass.php b/libraries/PHPExcel/PHPExcel/Shared/trend/bestFitClass.php
index 27fecd5..28fe725 100644
--- a/libraries/PHPExcel/PHPExcel/Shared/trend/bestFitClass.php
+++ b/libraries/PHPExcel/PHPExcel/Shared/trend/bestFitClass.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Shared_Best_Fit
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/Shared/trend/exponentialBestFitClass.php b/libraries/PHPExcel/PHPExcel/Shared/trend/exponentialBestFitClass.php
index a0717ea..0ff98cc 100644
--- a/libraries/PHPExcel/PHPExcel/Shared/trend/exponentialBestFitClass.php
+++ b/libraries/PHPExcel/PHPExcel/Shared/trend/exponentialBestFitClass.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Shared_Best_Fit
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/Shared/trend/linearBestFitClass.php b/libraries/PHPExcel/PHPExcel/Shared/trend/linearBestFitClass.php
index 99f358c..71219a0 100644
--- a/libraries/PHPExcel/PHPExcel/Shared/trend/linearBestFitClass.php
+++ b/libraries/PHPExcel/PHPExcel/Shared/trend/linearBestFitClass.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Shared_Best_Fit
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/Shared/trend/logarithmicBestFitClass.php b/libraries/PHPExcel/PHPExcel/Shared/trend/logarithmicBestFitClass.php
index a59c879..03c7dc3 100644
--- a/libraries/PHPExcel/PHPExcel/Shared/trend/logarithmicBestFitClass.php
+++ b/libraries/PHPExcel/PHPExcel/Shared/trend/logarithmicBestFitClass.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Shared_Best_Fit
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/Shared/trend/polynomialBestFitClass.php b/libraries/PHPExcel/PHPExcel/Shared/trend/polynomialBestFitClass.php
index 02ff0a5..6947c11 100644
--- a/libraries/PHPExcel/PHPExcel/Shared/trend/polynomialBestFitClass.php
+++ b/libraries/PHPExcel/PHPExcel/Shared/trend/polynomialBestFitClass.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Shared_Best_Fit
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/Shared/trend/powerBestFitClass.php b/libraries/PHPExcel/PHPExcel/Shared/trend/powerBestFitClass.php
index 9328fcb..6d2281c 100644
--- a/libraries/PHPExcel/PHPExcel/Shared/trend/powerBestFitClass.php
+++ b/libraries/PHPExcel/PHPExcel/Shared/trend/powerBestFitClass.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Shared_Best_Fit
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/Style.php b/libraries/PHPExcel/PHPExcel/Style.php
index d0cbcb0..3e84f9f 100644
--- a/libraries/PHPExcel/PHPExcel/Style.php
+++ b/libraries/PHPExcel/PHPExcel/Style.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Style
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
@@ -675,7 +675,7 @@ class PHPExcel_Style implements PHPExcel_IComparable
public function __clone() {
$vars = get_object_vars($this);
foreach ($vars as $key => $value) {
- if (is_object($value)) {
+ if ((is_object($value)) && ($key != '_parent')) {
$this->$key = clone $value;
} else {
$this->$key = $value;
diff --git a/libraries/PHPExcel/PHPExcel/Style/Alignment.php b/libraries/PHPExcel/PHPExcel/Style/Alignment.php
index 412c603..15b6c87 100644
--- a/libraries/PHPExcel/PHPExcel/Style/Alignment.php
+++ b/libraries/PHPExcel/PHPExcel/Style/Alignment.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Style
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
@@ -479,7 +479,7 @@ class PHPExcel_Style_Alignment implements PHPExcel_IComparable
public function __clone() {
$vars = get_object_vars($this);
foreach ($vars as $key => $value) {
- if (is_object($value)) {
+ if ((is_object($value)) && ($key != '_parent')) {
$this->$key = clone $value;
} else {
$this->$key = $value;
diff --git a/libraries/PHPExcel/PHPExcel/Style/Border.php b/libraries/PHPExcel/PHPExcel/Style/Border.php
index 1af31d6..166ccb2 100644
--- a/libraries/PHPExcel/PHPExcel/Style/Border.php
+++ b/libraries/PHPExcel/PHPExcel/Style/Border.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Style
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
@@ -372,7 +372,7 @@ class PHPExcel_Style_Border implements PHPExcel_IComparable
public function __clone() {
$vars = get_object_vars($this);
foreach ($vars as $key => $value) {
- if (is_object($value)) {
+ if ((is_object($value)) && ($key != '_parent')) {
$this->$key = clone $value;
} else {
$this->$key = $value;
diff --git a/libraries/PHPExcel/PHPExcel/Style/Borders.php b/libraries/PHPExcel/PHPExcel/Style/Borders.php
index ffd66af..dc32c50 100644
--- a/libraries/PHPExcel/PHPExcel/Style/Borders.php
+++ b/libraries/PHPExcel/PHPExcel/Style/Borders.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Style
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
@@ -489,7 +489,7 @@ class PHPExcel_Style_Borders implements PHPExcel_IComparable
public function __clone() {
$vars = get_object_vars($this);
foreach ($vars as $key => $value) {
- if (is_object($value)) {
+ if ((is_object($value)) && ($key != '_parent')) {
$this->$key = clone $value;
} else {
$this->$key = $value;
diff --git a/libraries/PHPExcel/PHPExcel/Style/Color.php b/libraries/PHPExcel/PHPExcel/Style/Color.php
index 8a25af0..9734d62 100644
--- a/libraries/PHPExcel/PHPExcel/Style/Color.php
+++ b/libraries/PHPExcel/PHPExcel/Style/Color.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Style
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
@@ -398,7 +398,7 @@ class PHPExcel_Style_Color implements PHPExcel_IComparable
public function __clone() {
$vars = get_object_vars($this);
foreach ($vars as $key => $value) {
- if (is_object($value)) {
+ if ((is_object($value)) && ($key != '_parent')) {
$this->$key = clone $value;
} else {
$this->$key = $value;
diff --git a/libraries/PHPExcel/PHPExcel/Style/Conditional.php b/libraries/PHPExcel/PHPExcel/Style/Conditional.php
index 8ec5f92..4602b53 100644
--- a/libraries/PHPExcel/PHPExcel/Style/Conditional.php
+++ b/libraries/PHPExcel/PHPExcel/Style/Conditional.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Style
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/Style/Fill.php b/libraries/PHPExcel/PHPExcel/Style/Fill.php
index 3ebf380..1357e47 100644
--- a/libraries/PHPExcel/PHPExcel/Style/Fill.php
+++ b/libraries/PHPExcel/PHPExcel/Style/Fill.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Style
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
@@ -391,7 +391,7 @@ class PHPExcel_Style_Fill implements PHPExcel_IComparable
public function __clone() {
$vars = get_object_vars($this);
foreach ($vars as $key => $value) {
- if (is_object($value)) {
+ if ((is_object($value)) && ($key != '_parent')) {
$this->$key = clone $value;
} else {
$this->$key = $value;
diff --git a/libraries/PHPExcel/PHPExcel/Style/Font.php b/libraries/PHPExcel/PHPExcel/Style/Font.php
index de39cf2..b58dbf5 100644
--- a/libraries/PHPExcel/PHPExcel/Style/Font.php
+++ b/libraries/PHPExcel/PHPExcel/Style/Font.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Style
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
@@ -609,7 +609,7 @@ class PHPExcel_Style_Font implements PHPExcel_IComparable
public function __clone() {
$vars = get_object_vars($this);
foreach ($vars as $key => $value) {
- if (is_object($value)) {
+ if ((is_object($value)) && ($key != '_parent')) {
$this->$key = clone $value;
} else {
$this->$key = $value;
diff --git a/libraries/PHPExcel/PHPExcel/Style/NumberFormat.php b/libraries/PHPExcel/PHPExcel/Style/NumberFormat.php
index 9ff1a97..0f0dcdc 100644
--- a/libraries/PHPExcel/PHPExcel/Style/NumberFormat.php
+++ b/libraries/PHPExcel/PHPExcel/Style/NumberFormat.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Style
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
@@ -443,7 +443,7 @@ class PHPExcel_Style_NumberFormat implements PHPExcel_IComparable
{
$vars = get_object_vars($this);
foreach ($vars as $key => $value) {
- if (is_object($value)) {
+ if ((is_object($value)) && ($key != '_parent')) {
$this->$key = clone $value;
} else {
$this->$key = $value;
diff --git a/libraries/PHPExcel/PHPExcel/Style/Protection.php b/libraries/PHPExcel/PHPExcel/Style/Protection.php
index 1c70702..29832da 100644
--- a/libraries/PHPExcel/PHPExcel/Style/Protection.php
+++ b/libraries/PHPExcel/PHPExcel/Style/Protection.php
@@ -271,7 +271,7 @@ class PHPExcel_Style_Protection implements PHPExcel_IComparable
public function __clone() {
$vars = get_object_vars($this);
foreach ($vars as $key => $value) {
- if (is_object($value)) {
+ if ((is_object($value)) && ($key != '_parent')) {
$this->$key = clone $value;
} else {
$this->$key = $value;
diff --git a/libraries/PHPExcel/PHPExcel/Worksheet.php b/libraries/PHPExcel/PHPExcel/Worksheet.php
index dc401fd..fb7cc0a 100644
--- a/libraries/PHPExcel/PHPExcel/Worksheet.php
+++ b/libraries/PHPExcel/PHPExcel/Worksheet.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Worksheet
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
@@ -2180,9 +2180,8 @@ class PHPExcel_Worksheet implements PHPExcel_IComparable
$highestRow = 1;
// Find cells that can be cleaned
- foreach ($this->_cellCollection->getCellList() as $coordinate) {
- preg_match('/^(\w+)(\d+)$/U',$coordinate,$matches);
- list(,$col,$row) = $matches;
+ foreach ($this->_cellCollection->getCellList() as $coord) {
+ list($col,$row) = sscanf($coord,'%[A-Z]%d');
$column = PHPExcel_Cell::columnIndexFromString($col);
// Determine highest column and row
@@ -2468,7 +2467,13 @@ class PHPExcel_Worksheet implements PHPExcel_IComparable
}
if (is_object($val) || (is_array($val))) {
- $this->{$key} = unserialize(serialize($val));
+ if ($key == '_cellCollection') {
+ $newCollection = clone $this->_cellCollection;
+ $newCollection->copyCellCollection($this);
+ $this->_cellCollection = $newCollection;
+ } else {
+ $this->{$key} = unserialize(serialize($val));
+ }
}
}
}
diff --git a/libraries/PHPExcel/PHPExcel/Worksheet/BaseDrawing.php b/libraries/PHPExcel/PHPExcel/Worksheet/BaseDrawing.php
index e2c65c3..511643b 100644
--- a/libraries/PHPExcel/PHPExcel/Worksheet/BaseDrawing.php
+++ b/libraries/PHPExcel/PHPExcel/Worksheet/BaseDrawing.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Worksheet
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/Worksheet/CellIterator.php b/libraries/PHPExcel/PHPExcel/Worksheet/CellIterator.php
index 4a6589f..630e089 100644
--- a/libraries/PHPExcel/PHPExcel/Worksheet/CellIterator.php
+++ b/libraries/PHPExcel/PHPExcel/Worksheet/CellIterator.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Worksheet
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/Worksheet/ColumnDimension.php b/libraries/PHPExcel/PHPExcel/Worksheet/ColumnDimension.php
index f42ef31..30b0035 100644
--- a/libraries/PHPExcel/PHPExcel/Worksheet/ColumnDimension.php
+++ b/libraries/PHPExcel/PHPExcel/Worksheet/ColumnDimension.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Worksheet
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/Worksheet/Drawing.php b/libraries/PHPExcel/PHPExcel/Worksheet/Drawing.php
index 7d362c0..537f9f3 100644
--- a/libraries/PHPExcel/PHPExcel/Worksheet/Drawing.php
+++ b/libraries/PHPExcel/PHPExcel/Worksheet/Drawing.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Worksheet_Drawing
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/Worksheet/Drawing/Shadow.php b/libraries/PHPExcel/PHPExcel/Worksheet/Drawing/Shadow.php
index f83c26d..053ab0d 100644
--- a/libraries/PHPExcel/PHPExcel/Worksheet/Drawing/Shadow.php
+++ b/libraries/PHPExcel/PHPExcel/Worksheet/Drawing/Shadow.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Worksheet_Drawing
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/Worksheet/HeaderFooter.php b/libraries/PHPExcel/PHPExcel/Worksheet/HeaderFooter.php
index 4e39339..9d2708d 100644
--- a/libraries/PHPExcel/PHPExcel/Worksheet/HeaderFooter.php
+++ b/libraries/PHPExcel/PHPExcel/Worksheet/HeaderFooter.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Worksheet
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/Worksheet/HeaderFooterDrawing.php b/libraries/PHPExcel/PHPExcel/Worksheet/HeaderFooterDrawing.php
index 9f2b25d..f614261 100644
--- a/libraries/PHPExcel/PHPExcel/Worksheet/HeaderFooterDrawing.php
+++ b/libraries/PHPExcel/PHPExcel/Worksheet/HeaderFooterDrawing.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Worksheet
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/Worksheet/MemoryDrawing.php b/libraries/PHPExcel/PHPExcel/Worksheet/MemoryDrawing.php
index 0bd37f5..a43e6a9 100644
--- a/libraries/PHPExcel/PHPExcel/Worksheet/MemoryDrawing.php
+++ b/libraries/PHPExcel/PHPExcel/Worksheet/MemoryDrawing.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Worksheet
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/Worksheet/PageMargins.php b/libraries/PHPExcel/PHPExcel/Worksheet/PageMargins.php
index 6fc8f1a..155b976 100644
--- a/libraries/PHPExcel/PHPExcel/Worksheet/PageMargins.php
+++ b/libraries/PHPExcel/PHPExcel/Worksheet/PageMargins.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Worksheet
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/Worksheet/PageSetup.php b/libraries/PHPExcel/PHPExcel/Worksheet/PageSetup.php
index ffbd573..8e615f7 100644
--- a/libraries/PHPExcel/PHPExcel/Worksheet/PageSetup.php
+++ b/libraries/PHPExcel/PHPExcel/Worksheet/PageSetup.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Worksheet
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
@@ -179,6 +179,11 @@ class PHPExcel_Worksheet_PageSetup
const ORIENTATION_LANDSCAPE = 'landscape';
const ORIENTATION_PORTRAIT = 'portrait';
+ /* Print Range Set Method */
+ const SETPRINTRANGE_OVERWRITE = 'O';
+ const SETPRINTRANGE_INSERT = 'I';
+
+
/**
* Paper size
*
@@ -261,7 +266,7 @@ class PHPExcel_Worksheet_PageSetup
* @var string
*/
private $_printArea = null;
-
+
/**
* First page number
*
@@ -570,55 +575,197 @@ class PHPExcel_Worksheet_PageSetup
}
/**
- * Get print area
+ * Get print area
*
- * @return string
+ * @param int $index Identifier for a specific print area range if several ranges have been set
+ * Default behaviour, or a index value of 0, will return all ranges as a comma-separated string
+ * Otherwise, the specific range identified by the value of $index will be returned
+ * Print areas are numbered from 1
+ * @throws Exception
+ * @return string
*/
- public function getPrintArea() {
- return $this->_printArea;
+ public function getPrintArea($index = 0) {
+ if ($index == 0) {
+ return $this->_printArea;
+ }
+ $printAreas = explode(',',$this->_printArea);
+ if (isset($printAreas[$index-1])) {
+ return $printAreas[$index-1];
+ }
+ throw new Exception("Requested Print Area does not exist");
}
/**
- * Is print area set?
+ * Is print area set?
*
- * @return boolean
+ * @param int $index Identifier for a specific print area range if several ranges have been set
+ * Default behaviour, or an index value of 0, will identify whether any print range is set
+ * Otherwise, existence of the range identified by the value of $index will be returned
+ * Print areas are numbered from 1
+ * @return boolean
*/
- public function isPrintAreaSet() {
- return !is_null($this->_printArea);
+ public function isPrintAreaSet($index = 0) {
+ if ($index == 0) {
+ return !is_null($this->_printArea);
+ }
+ $printAreas = explode(',',$this->_printArea);
+ return isset($printAreas[$index-1]);
}
/**
- * Set print area. E.g. 'A1:D10' or 'A1:D10,G5:M20'
+ * Clear a print area
*
- * @param string $value
- * @throws Exception
- * @return PHPExcel_Worksheet_PageSetup
+ * @param int $index Identifier for a specific print area range if several ranges have been set
+ * Default behaviour, or an index value of 0, will clear all print ranges that are set
+ * Otherwise, the range identified by the value of $index will be removed from the series
+ * Print areas are numbered from 1
+ * @return PHPExcel_Worksheet_PageSetup
*/
- public function setPrintArea($value) {
- if (strpos($value,':') === false) {
- throw new Exception('Cell coordinate must be a range of cells.');
- } elseif (strpos($value,'$') !== false) {
- throw new Exception('Cell coordinate must not be absolute.');
- } else {
- $this->_printArea = strtoupper($value);
- }
+ public function clearPrintArea($index = 0) {
+ if ($index == 0) {
+ $this->_printArea = NULL;
+ } else {
+ $printAreas = explode(',',$this->_printArea);
+ if (isset($printAreas[$index-1])) {
+ unset($printAreas[$index-1]);
+ $this->_printArea = implode(',',$printAreas);
+ }
+ }
+
+ return $this;
+ }
+
+ /**
+ * Set print area. e.g. 'A1:D10' or 'A1:D10,G5:M20'
+ *
+ * @param string $value
+ * @param int $index Identifier for a specific print area range allowing several ranges to be set
+ * When the method is "O"verwrite, then a positive integer index will overwrite that indexed
+ * entry in the print areas list; a negative index value will identify which entry to
+ * overwrite working bacward through the print area to the list, with the last entry as -1.
+ * Specifying an index value of 0, will overwrite <b>all</b> existing print ranges.
+ * When the method is "I"nsert, then a positive index will insert after that indexed entry in
+ * the print areas list, while a negative index will insert before the indexed entry.
+ * Specifying an index value of 0, will always append the new print range at the end of the
+ * list.
+ * Print areas are numbered from 1
+ * @param string $method Determines the method used when setting multiple print areas
+ * Default behaviour, or the "O" method, overwrites existing print area
+ * The "I" method, inserts the new print area before any specified index, or at the end of the list
+ * @throws Exception
+ * @return PHPExcel_Worksheet_PageSetup
+ */
+ public function setPrintArea($value, $index = 0, $method = self::SETPRINTRANGE_OVERWRITE) {
+ if (strpos($value,'!') !== false) {
+ throw new Exception('Cell coordinate must not specify a worksheet.');
+ } elseif (strpos($value,':') === false) {
+ throw new Exception('Cell coordinate must be a range of cells.');
+ } elseif (strpos($value,'$') !== false) {
+ throw new Exception('Cell coordinate must not be absolute.');
+ }
+ $value = strtoupper($value);
+
+ if ($method == self::SETPRINTRANGE_OVERWRITE) {
+ if ($index == 0) {
+ $this->_printArea = $value;
+ } else {
+ $printAreas = explode(',',$this->_printArea);
+ if($index < 0) {
+ $index = count($printAreas) - abs($index) + 1;
+ }
+ if (($index <= 0) || ($index > count($printAreas))) {
+ throw new Exception('Invalid index for setting print range.');
+ }
+ $printAreas[$index-1] = $value;
+ $this->_printArea = implode(',',$printAreas);
+ }
+ } elseif($method == self::SETPRINTRANGE_INSERT) {
+ if ($index == 0) {
+ $this->_printArea .= ($this->_printArea == '') ? $value : ','.$value;
+ } else {
+ $printAreas = explode(',',$this->_printArea);
+ if($index < 0) {
+ $index = abs($index) - 1;
+ }
+ if ($index > count($printAreas)) {
+ throw new Exception('Invalid index for setting print range.');
+ }
+ $printAreas = array_merge(array_slice($printAreas,0,$index),array($value),array_slice($printAreas,$index));
+ $this->_printArea = implode(',',$printAreas);
+ }
+ } else {
+ throw new Exception('Invalid method for setting print range.');
+ }
+
return $this;
}
/**
- * Set print area
+ * Add a new print area (e.g. 'A1:D10' or 'A1:D10,G5:M20') to the list of print areas
*
- * @param int $column1 Column 1
- * @param int $row1 Row 1
- * @param int $column2 Column 2
- * @param int $row2 Row 2
- * @return PHPExcel_Worksheet_PageSetup
+ * @param string $value
+ * @param int $index Identifier for a specific print area range allowing several ranges to be set
+ * A positive index will insert after that indexed entry in the print areas list, while a
+ * negative index will insert before the indexed entry.
+ * Specifying an index value of 0, will always append the new print range at the end of the
+ * list.
+ * Print areas are numbered from 1
+ * @throws Exception
+ * @return PHPExcel_Worksheet_PageSetup
*/
- public function setPrintAreaByColumnAndRow($column1, $row1, $column2, $row2)
+ public function addPrintArea($value, $index = -1) {
+ return $this->setPrintArea($value, $index, self::SETPRINTRANGE_INSERT);
+ }
+
+ /**
+ * Set print area
+ *
+ * @param int $column1 Column 1
+ * @param int $row1 Row 1
+ * @param int $column2 Column 2
+ * @param int $row2 Row 2
+ * @param int $index Identifier for a specific print area range allowing several ranges to be set
+ * When the method is "O"verwrite, then a positive integer index will overwrite that indexed
+ * entry in the print areas list; a negative index value will identify which entry to
+ * overwrite working bacward through the print area to the list, with the last entry as -1.
+ * Specifying an index value of 0, will overwrite <b>all</b> existing print ranges.
+ * When the method is "I"nsert, then a positive index will insert after that indexed entry in
+ * the print areas list, while a negative index will insert before the indexed entry.
+ * Specifying an index value of 0, will always append the new print range at the end of the
+ * list.
+ * Print areas are numbered from 1
+ * @param string $method Determines the method used when setting multiple print areas
+ * Default behaviour, or the "O" method, overwrites existing print area
+ * The "I" method, inserts the new print area before any specified index, or at the end of the list
+ * @throws Exception
+ * @return PHPExcel_Worksheet_PageSetup
+ */
+ public function setPrintAreaByColumnAndRow($column1, $row1, $column2, $row2, $index = 0, $method = self::SETPRINTRANGE_OVERWRITE)
{
- return $this->setPrintArea(PHPExcel_Cell::stringFromColumnIndex($column1) . $row1 . ':' . PHPExcel_Cell::stringFromColumnIndex($column2) . $row2);
+ return $this->setPrintArea(PHPExcel_Cell::stringFromColumnIndex($column1) . $row1 . ':' . PHPExcel_Cell::stringFromColumnIndex($column2) . $row2, $index, $method);
}
-
+
+ /**
+ * Add a new print area to the list of print areas
+ *
+ * @param int $column1 Column 1
+ * @param int $row1 Row 1
+ * @param int $column2 Column 2
+ * @param int $row2 Row 2
+ * @param int $index Identifier for a specific print area range allowing several ranges to be set
+ * A positive index will insert after that indexed entry in the print areas list, while a
+ * negative index will insert before the indexed entry.
+ * Specifying an index value of 0, will always append the new print range at the end of the
+ * list.
+ * Print areas are numbered from 1
+ * @throws Exception
+ * @return PHPExcel_Worksheet_PageSetup
+ */
+ public function addPrintAreaByColumnAndRow($column1, $row1, $column2, $row2, $index = -1)
+ {
+ return $this->setPrintArea(PHPExcel_Cell::stringFromColumnIndex($column1) . $row1 . ':' . PHPExcel_Cell::stringFromColumnIndex($column2) . $row2, $index, self::SETPRINTRANGE_INSERT);
+ }
+
/**
* Get first page number
*
@@ -627,7 +774,7 @@ class PHPExcel_Worksheet_PageSetup
public function getFirstPageNumber() {
return $this->_firstPageNumber;
}
-
+
/**
* Set first page number
*
@@ -638,7 +785,7 @@ class PHPExcel_Worksheet_PageSetup
$this->_firstPageNumber = $value;
return $this;
}
-
+
/**
* Reset first page number
*
diff --git a/libraries/PHPExcel/PHPExcel/Worksheet/Protection.php b/libraries/PHPExcel/PHPExcel/Worksheet/Protection.php
index 0e7bc4f..f60a265 100644
--- a/libraries/PHPExcel/PHPExcel/Worksheet/Protection.php
+++ b/libraries/PHPExcel/PHPExcel/Worksheet/Protection.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Worksheet
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/Worksheet/Row.php b/libraries/PHPExcel/PHPExcel/Worksheet/Row.php
index c5cb33a..7311721 100644
--- a/libraries/PHPExcel/PHPExcel/Worksheet/Row.php
+++ b/libraries/PHPExcel/PHPExcel/Worksheet/Row.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Worksheet
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/Worksheet/RowDimension.php b/libraries/PHPExcel/PHPExcel/Worksheet/RowDimension.php
index 8b1277d..153024f 100644
--- a/libraries/PHPExcel/PHPExcel/Worksheet/RowDimension.php
+++ b/libraries/PHPExcel/PHPExcel/Worksheet/RowDimension.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Worksheet
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/Worksheet/RowIterator.php b/libraries/PHPExcel/PHPExcel/Worksheet/RowIterator.php
index d21bd51..e0f91fc 100644
--- a/libraries/PHPExcel/PHPExcel/Worksheet/RowIterator.php
+++ b/libraries/PHPExcel/PHPExcel/Worksheet/RowIterator.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Worksheet
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/Worksheet/SheetView.php b/libraries/PHPExcel/PHPExcel/Worksheet/SheetView.php
index c7e04ae..fdfe001 100644
--- a/libraries/PHPExcel/PHPExcel/Worksheet/SheetView.php
+++ b/libraries/PHPExcel/PHPExcel/Worksheet/SheetView.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Worksheet
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/WorksheetIterator.php b/libraries/PHPExcel/PHPExcel/WorksheetIterator.php
index f6f6a6f..87f8b29 100644
--- a/libraries/PHPExcel/PHPExcel/WorksheetIterator.php
+++ b/libraries/PHPExcel/PHPExcel/WorksheetIterator.php
@@ -22,7 +22,7 @@
* @package PHPExcel
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/Writer/CSV.php b/libraries/PHPExcel/PHPExcel/Writer/CSV.php
index 03e1a6e..765244d 100644
--- a/libraries/PHPExcel/PHPExcel/Writer/CSV.php
+++ b/libraries/PHPExcel/PHPExcel/Writer/CSV.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Writer
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
@@ -106,6 +106,8 @@ class PHPExcel_Writer_CSV implements PHPExcel_Writer_IWriter {
// Fetch sheet
$sheet = $this->_phpExcel->getSheet($this->_sheetIndex);
+ $saveDebugLog = PHPExcel_Calculation::getInstance()->writeDebugLog;
+ PHPExcel_Calculation::getInstance()->writeDebugLog = false;
$saveArrayReturnType = PHPExcel_Calculation::getArrayReturnType();
PHPExcel_Calculation::setArrayReturnType(PHPExcel_Calculation::RETURN_ARRAY_AS_VALUE);
@@ -132,6 +134,7 @@ class PHPExcel_Writer_CSV implements PHPExcel_Writer_IWriter {
fclose($fileHandle);
PHPExcel_Calculation::setArrayReturnType($saveArrayReturnType);
+ PHPExcel_Calculation::getInstance()->writeDebugLog = $saveDebugLog;
}
/**
diff --git a/libraries/PHPExcel/PHPExcel/Writer/Excel2007.php b/libraries/PHPExcel/PHPExcel/Writer/Excel2007.php
index 1963ab9..b9f7464 100644
--- a/libraries/PHPExcel/PHPExcel/Writer/Excel2007.php
+++ b/libraries/PHPExcel/PHPExcel/Writer/Excel2007.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Writer_Excel2007
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
@@ -201,6 +201,8 @@ class PHPExcel_Writer_Excel2007 implements PHPExcel_Writer_IWriter
}
}
+ $saveDebugLog = PHPExcel_Calculation::getInstance()->writeDebugLog;
+ PHPExcel_Calculation::getInstance()->writeDebugLog = false;
$saveDateReturnType = PHPExcel_Calculation_Functions::getReturnDateType();
PHPExcel_Calculation_Functions::setReturnDateType(PHPExcel_Calculation_Functions::RETURNDATE_EXCEL);
@@ -331,6 +333,7 @@ class PHPExcel_Writer_Excel2007 implements PHPExcel_Writer_IWriter
}
PHPExcel_Calculation_Functions::setReturnDateType($saveDateReturnType);
+ PHPExcel_Calculation::getInstance()->writeDebugLog = $saveDebugLog;
// Close file
if ($objZip->close() === false) {
diff --git a/libraries/PHPExcel/PHPExcel/Writer/Excel2007/Comments.php b/libraries/PHPExcel/PHPExcel/Writer/Excel2007/Comments.php
index ddb7958..3a6ad37 100644
--- a/libraries/PHPExcel/PHPExcel/Writer/Excel2007/Comments.php
+++ b/libraries/PHPExcel/PHPExcel/Writer/Excel2007/Comments.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Writer_Excel2007
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/Writer/Excel2007/ContentTypes.php b/libraries/PHPExcel/PHPExcel/Writer/Excel2007/ContentTypes.php
index d27e386..84de96d 100644
--- a/libraries/PHPExcel/PHPExcel/Writer/Excel2007/ContentTypes.php
+++ b/libraries/PHPExcel/PHPExcel/Writer/Excel2007/ContentTypes.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Writer_Excel2007
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/Writer/Excel2007/DocProps.php b/libraries/PHPExcel/PHPExcel/Writer/Excel2007/DocProps.php
index 68e0f04..21fc3a4 100644
--- a/libraries/PHPExcel/PHPExcel/Writer/Excel2007/DocProps.php
+++ b/libraries/PHPExcel/PHPExcel/Writer/Excel2007/DocProps.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Writer_Excel2007
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/Writer/Excel2007/Drawing.php b/libraries/PHPExcel/PHPExcel/Writer/Excel2007/Drawing.php
index 670b835..f1551da 100644
--- a/libraries/PHPExcel/PHPExcel/Writer/Excel2007/Drawing.php
+++ b/libraries/PHPExcel/PHPExcel/Writer/Excel2007/Drawing.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Writer_Excel2007
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/Writer/Excel2007/Rels.php b/libraries/PHPExcel/PHPExcel/Writer/Excel2007/Rels.php
index d133621..7ffdd6d 100644
--- a/libraries/PHPExcel/PHPExcel/Writer/Excel2007/Rels.php
+++ b/libraries/PHPExcel/PHPExcel/Writer/Excel2007/Rels.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Writer_Excel2007
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/Writer/Excel2007/StringTable.php b/libraries/PHPExcel/PHPExcel/Writer/Excel2007/StringTable.php
index 8ab1c52..98a3c45 100644
--- a/libraries/PHPExcel/PHPExcel/Writer/Excel2007/StringTable.php
+++ b/libraries/PHPExcel/PHPExcel/Writer/Excel2007/StringTable.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Writer_Excel2007
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/Writer/Excel2007/Style.php b/libraries/PHPExcel/PHPExcel/Writer/Excel2007/Style.php
index dd7621d..5354936 100644
--- a/libraries/PHPExcel/PHPExcel/Writer/Excel2007/Style.php
+++ b/libraries/PHPExcel/PHPExcel/Writer/Excel2007/Style.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Writer_Excel2007
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/Writer/Excel2007/Theme.php b/libraries/PHPExcel/PHPExcel/Writer/Excel2007/Theme.php
index 9dbee16..e8ffe7b 100644
--- a/libraries/PHPExcel/PHPExcel/Writer/Excel2007/Theme.php
+++ b/libraries/PHPExcel/PHPExcel/Writer/Excel2007/Theme.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Writer_Excel2007
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/Writer/Excel2007/Workbook.php b/libraries/PHPExcel/PHPExcel/Writer/Excel2007/Workbook.php
index 245fb87..d2c51fb 100644
--- a/libraries/PHPExcel/PHPExcel/Writer/Excel2007/Workbook.php
+++ b/libraries/PHPExcel/PHPExcel/Writer/Excel2007/Workbook.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Writer_Excel2007
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/Writer/Excel2007/Worksheet.php b/libraries/PHPExcel/PHPExcel/Writer/Excel2007/Worksheet.php
index 411b42a..327e542 100644
--- a/libraries/PHPExcel/PHPExcel/Writer/Excel2007/Worksheet.php
+++ b/libraries/PHPExcel/PHPExcel/Writer/Excel2007/Worksheet.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Writer_Excel2007
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
@@ -1002,7 +1002,18 @@ class PHPExcel_Writer_Excel2007_Worksheet extends PHPExcel_Writer_Excel2007_Writ
break;
case 'f': // Formula
- $objWriter->writeElement('f', substr($pCell->getValue(), 1));
+ $attributes = $pCell->getFormulaAttributes();
+ if($attributes['t'] == 'array') {
+ $objWriter->startElement('f');
+ $objWriter->writeAttribute('t', 'array');
+ $objWriter->writeAttribute('ref', $pCell->getCoordinate());
+ $objWriter->writeAttribute('aca', '1');
+ $objWriter->writeAttribute('ca', '1');
+ $objWriter->text(substr($pCell->getValue(), 1));
+ $objWriter->endElement();
+ } else {
+ $objWriter->writeElement('f', substr($pCell->getValue(), 1));
+ }
if ($this->getParentWriter()->getOffice2003Compatibility() === false) {
if ($this->getParentWriter()->getPreCalculateFormulas()) {
$calculatedValue = $pCell->getCalculatedValue();
diff --git a/libraries/PHPExcel/PHPExcel/Writer/Excel2007/WriterPart.php b/libraries/PHPExcel/PHPExcel/Writer/Excel2007/WriterPart.php
index c153237..97d56e1 100644
--- a/libraries/PHPExcel/PHPExcel/Writer/Excel2007/WriterPart.php
+++ b/libraries/PHPExcel/PHPExcel/Writer/Excel2007/WriterPart.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Writer_Excel2007
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/Writer/Excel5.php b/libraries/PHPExcel/PHPExcel/Writer/Excel5.php
index 0bb5571..4d69d91 100644
--- a/libraries/PHPExcel/PHPExcel/Writer/Excel5.php
+++ b/libraries/PHPExcel/PHPExcel/Writer/Excel5.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Writer_Excel5
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
@@ -91,6 +91,13 @@ class PHPExcel_Writer_Excel5 implements PHPExcel_Writer_IWriter
*/
private $_parser;
+ /**
+ * Identifier clusters for drawings. Used in MSODRAWINGGROUP record.
+ *
+ * @var array
+ */
+ private $_IDCLs;
+
/**
* Create a new PHPExcel_Writer_Excel5
@@ -120,6 +127,8 @@ class PHPExcel_Writer_Excel5 implements PHPExcel_Writer_IWriter
// garbage collect
$this->_phpExcel->garbageCollect();
+ $saveDebugLog = PHPExcel_Calculation::getInstance()->writeDebugLog;
+ PHPExcel_Calculation::getInstance()->writeDebugLog = false;
$saveDateReturnType = PHPExcel_Calculation_Functions::getReturnDateType();
PHPExcel_Calculation_Functions::setReturnDateType(PHPExcel_Calculation_Functions::RETURNDATE_EXCEL);
@@ -130,6 +139,21 @@ class PHPExcel_Writer_Excel5 implements PHPExcel_Writer_IWriter
$this->_writerWorkbook = new PHPExcel_Writer_Excel5_Workbook($this->_phpExcel, $this->_BIFF_version,
$this->_str_total, $this->_str_unique, $this->_str_table, $this->_colors, $this->_parser);
+ // Initialise worksheet writers
+ $countSheets = $this->_phpExcel->getSheetCount();
+ for ($i = 0; $i < $countSheets; ++$i) {
+ $this->_writerWorksheets[$i] = new PHPExcel_Writer_Excel5_Worksheet($this->_BIFF_version,
+ $this->_str_total, $this->_str_unique,
+ $this->_str_table, $this->_colors,
+ $this->_parser,
+ $this->_preCalculateFormulas,
+ $this->_phpExcel->getSheet($i));
+ }
+
+ // build Escher objects. Escher objects for workbooks needs to be build before Escher object for workbook.
+ $this->_buildWorksheetEschers();
+ $this->_buildWorkbookEscher();
+
// add 15 identical cell style Xfs
// for now, we use the first cellXf instead of cellStyleXf
$cellXfCollection = $this->_phpExcel->getCellXfCollection();
@@ -146,19 +170,10 @@ class PHPExcel_Writer_Excel5 implements PHPExcel_Writer_IWriter
$workbookStreamName = ($this->_BIFF_version == 0x0600) ? 'Workbook' : 'Book';
$OLE = new PHPExcel_Shared_OLE_PPS_File(PHPExcel_Shared_OLE::Asc2Ucs($workbookStreamName));
- // Initialise worksheet writers
- $countSheets = $this->_phpExcel->getSheetCount();
// Write the worksheet streams before the global workbook stream,
// because the byte sizes of these are needed in the global workbook stream
$worksheetSizes = array();
for ($i = 0; $i < $countSheets; ++$i) {
- $this->_writerWorksheets[$i] = new PHPExcel_Writer_Excel5_Worksheet($this->_BIFF_version,
- $this->_str_total, $this->_str_unique,
- $this->_str_table, $this->_colors,
- $this->_parser,
- $this->_preCalculateFormulas,
- $this->_phpExcel->getSheet($i));
-
$this->_writerWorksheets[$i]->close();
$worksheetSizes[] = $this->_writerWorksheets[$i]->_datasize;
}
@@ -176,6 +191,7 @@ class PHPExcel_Writer_Excel5 implements PHPExcel_Writer_IWriter
$res = $root->save($pFilename);
PHPExcel_Calculation_Functions::setReturnDateType($saveDateReturnType);
+ PHPExcel_Calculation::getInstance()->writeDebugLog = $saveDebugLog;
}
/**
@@ -208,4 +224,253 @@ class PHPExcel_Writer_Excel5 implements PHPExcel_Writer_IWriter
$this->_preCalculateFormulas = $pValue;
}
+ private function _buildWorksheetEschers()
+ {
+ // 1-based index to BstoreContainer
+ $blipIndex = 0;
+
+ foreach ($this->_phpExcel->getAllsheets() as $sheet) {
+ // sheet index
+ $sheetIndex = $sheet->getParent()->getIndex($sheet);
+
+ $escher = null;
+
+ // check if there are any shapes for this sheet
+ if (count($sheet->getDrawingCollection()) == 0) {
+ continue;
+ }
+
+ // create intermediate Escher object
+ $escher = new PHPExcel_Shared_Escher();
+
+ // dgContainer
+ $dgContainer = new PHPExcel_Shared_Escher_DgContainer();
+
+ // set the drawing index (we use sheet index + 1)
+ $dgId = $sheet->getParent()->getIndex($sheet) + 1;
+ $dgContainer->setDgId($dgId);
+ $escher->setDgContainer($dgContainer);
+
+ // spgrContainer
+ $spgrContainer = new PHPExcel_Shared_Escher_DgContainer_SpgrContainer();
+ $dgContainer->setSpgrContainer($spgrContainer);
+
+ // add one shape which is the group shape
+ $spContainer = new PHPExcel_Shared_Escher_DgContainer_SpgrContainer_SpContainer();
+ $spContainer->setSpgr(true);
+ $spContainer->setSpType(0);
+ $spContainer->setSpId(($sheet->getParent()->getIndex($sheet) + 1) << 10);
+ $spgrContainer->addChild($spContainer);
+
+ // add the shapes
+
+ $countShapes[$sheetIndex] = 0; // count number of shapes (minus group shape), in sheet
+
+ foreach ($sheet->getDrawingCollection() as $drawing) {
+ ++$blipIndex;
+
+ ++$countShapes[$sheetIndex];
+
+ // add the shape
+ $spContainer = new PHPExcel_Shared_Escher_DgContainer_SpgrContainer_SpContainer();
+
+ // set the shape type
+ $spContainer->setSpType(0x004B);
+
+ // set the shape index (we combine 1-based sheet index and $countShapes to create unique shape index)
+ $reducedSpId = $countShapes[$sheetIndex];
+ $spId = $reducedSpId
+ | ($sheet->getParent()->getIndex($sheet) + 1) << 10;
+ $spContainer->setSpId($spId);
+
+ // keep track of last reducedSpId
+ $lastReducedSpId = $reducedSpId;
+
+ // keep track of last spId
+ $lastSpId = $spId;
+
+ // set the BLIP index
+ $spContainer->setOPT(0x4104, $blipIndex);
+
+ // set coordinates and offsets, client anchor
+ $coordinates = $drawing->getCoordinates();
+ $offsetX = $drawing->getOffsetX();
+ $offsetY = $drawing->getOffsetY();
+ $width = $drawing->getWidth();
+ $height = $drawing->getHeight();
+
+ $twoAnchor = PHPExcel_Shared_Excel5::oneAnchor2twoAnchor($sheet, $coordinates, $offsetX, $offsetY, $width, $height);
+
+ $spContainer->setStartCoordinates($twoAnchor['startCoordinates']);
+ $spContainer->setStartOffsetX($twoAnchor['startOffsetX']);
+ $spContainer->setStartOffsetY($twoAnchor['startOffsetY']);
+ $spContainer->setEndCoordinates($twoAnchor['endCoordinates']);
+ $spContainer->setEndOffsetX($twoAnchor['endOffsetX']);
+ $spContainer->setEndOffsetY($twoAnchor['endOffsetY']);
+
+ $spgrContainer->addChild($spContainer);
+ }
+
+ // identifier clusters, used for workbook Escher object
+ $this->_IDCLs[$dgId] = $lastReducedSpId;
+
+ // set last shape index
+ $dgContainer->setLastSpId($lastSpId);
+
+ // set the Escher object
+ $this->_writerWorksheets[$sheetIndex]->setEscher($escher);
+ }
+ }
+
+ /**
+ * Build the Escher object corresponding to the MSODRAWINGGROUP record
+ */
+ private function _buildWorkbookEscher()
+ {
+ $escher = null;
+
+ // any drawings in this workbook?
+ $found = false;
+ foreach ($this->_phpExcel->getAllSheets() as $sheet) {
+ if (count($sheet->getDrawingCollection()) > 0) {
+ $found = true;
+ }
+ }
+
+ // nothing to do if there are no drawings
+ if (!$found) {
+ return;
+ }
+
+ // if we reach here, then there are drawings in the workbook
+ $escher = new PHPExcel_Shared_Escher();
+
+ // dggContainer
+ $dggContainer = new PHPExcel_Shared_Escher_DggContainer();
+ $escher->setDggContainer($dggContainer);
+
+ // set IDCLs (identifier clusters)
+ $dggContainer->setIDCLs($this->_IDCLs);
+
+ // this loop is for determining maximum shape identifier of all drawing
+ $spIdMax = 0;
+ $totalCountShapes = 0;
+ $countDrawings = 0;
+
+ foreach ($this->_phpExcel->getAllsheets() as $sheet) {
+ $sheetCountShapes = 0; // count number of shapes (minus group shape), in sheet
+
+ if (count($sheet->getDrawingCollection()) > 0) {
+ ++$countDrawings;
+
+ foreach ($sheet->getDrawingCollection() as $drawing) {
+ ++$sheetCountShapes;
+ ++$totalCountShapes;
+
+ $spId = $sheetCountShapes
+ | ($this->_phpExcel->getIndex($sheet) + 1) << 10;
+ $spIdMax = max($spId, $spIdMax);
+ }
+ }
+ }
+
+ $dggContainer->setSpIdMax($spIdMax + 1);
+ $dggContainer->setCDgSaved($countDrawings);
+ $dggContainer->setCSpSaved($totalCountShapes + $countDrawings); // total number of shapes incl. one group shapes per drawing
+
+ // bstoreContainer
+ $bstoreContainer = new PHPExcel_Shared_Escher_DggContainer_BstoreContainer();
+ $dggContainer->setBstoreContainer($bstoreContainer);
+
+ // the BSE's (all the images)
+ foreach ($this->_phpExcel->getAllsheets() as $sheet) {
+ foreach ($sheet->getDrawingCollection() as $drawing) {
+ if ($drawing instanceof PHPExcel_Worksheet_Drawing) {
+
+ $filename = $drawing->getPath();
+
+ list($imagesx, $imagesy, $imageFormat) = getimagesize($filename);
+
+ switch ($imageFormat) {
+
+ case 1: // GIF, not supported by BIFF8, we convert to PNG
+ $blipType = PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE::BLIPTYPE_PNG;
+ $imageResource = imagecreatefromgif($filename);
+ ob_start();
+ imagepng($imageResource);
+ $blipData = ob_get_contents();
+ ob_end_clean();
+ break;
+
+ case 2: // JPEG
+ $blipType = PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE::BLIPTYPE_JPEG;
+ $blipData = file_get_contents($filename);
+ break;
+
+ case 3: // PNG
+ $blipType = PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE::BLIPTYPE_PNG;
+ $blipData = file_get_contents($filename);
+ break;
+
+ case 6: // Windows DIB (BMP), we convert to PNG
+ $blipType = PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE::BLIPTYPE_PNG;
+ $imageResource = PHPExcel_Shared_Drawing::imagecreatefrombmp($filename);
+ ob_start();
+ imagepng($imageResource);
+ $blipData = ob_get_contents();
+ ob_end_clean();
+ break;
+
+ default: continue 2;
+
+ }
+
+ $blip = new PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE_Blip();
+ $blip->setData($blipData);
+
+ $BSE = new PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE();
+ $BSE->setBlipType($blipType);
+ $BSE->setBlip($blip);
+
+ $bstoreContainer->addBSE($BSE);
+
+ } else if ($drawing instanceof PHPExcel_Worksheet_MemoryDrawing) {
+
+ switch ($drawing->getRenderingFunction()) {
+
+ case PHPExcel_Worksheet_MemoryDrawing::RENDERING_JPEG:
+ $blipType = PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE::BLIPTYPE_JPEG;
+ $renderingFunction = 'imagejpeg';
+ break;
+
+ case PHPExcel_Worksheet_MemoryDrawing::RENDERING_GIF:
+ case PHPExcel_Worksheet_MemoryDrawing::RENDERING_PNG:
+ case PHPExcel_Worksheet_MemoryDrawing::RENDERING_DEFAULT:
+ $blipType = PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE::BLIPTYPE_PNG;
+ $renderingFunction = 'imagepng';
+ break;
+
+ }
+
+ ob_start();
+ call_user_func($renderingFunction, $drawing->getImageResource());
+ $blipData = ob_get_contents();
+ ob_end_clean();
+
+ $blip = new PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE_Blip();
+ $blip->setData($blipData);
+
+ $BSE = new PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE();
+ $BSE->setBlipType($blipType);
+ $BSE->setBlip($blip);
+
+ $bstoreContainer->addBSE($BSE);
+ }
+ }
+ }
+
+ // Set the Escher object
+ $this->_writerWorkbook->setEscher($escher);
+ }
+
}
diff --git a/libraries/PHPExcel/PHPExcel/Writer/Excel5/BIFFwriter.php b/libraries/PHPExcel/PHPExcel/Writer/Excel5/BIFFwriter.php
index 2c0a2d1..e758aeb 100644
--- a/libraries/PHPExcel/PHPExcel/Writer/Excel5/BIFFwriter.php
+++ b/libraries/PHPExcel/PHPExcel/Writer/Excel5/BIFFwriter.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Writer_Excel5
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
// Original file header of PEAR::Spreadsheet_Excel_Writer_BIFFwriter (used as the base for this class):
diff --git a/libraries/PHPExcel/PHPExcel/Writer/Excel5/Escher.php b/libraries/PHPExcel/PHPExcel/Writer/Excel5/Escher.php
index 402bd19..3c9c29f 100644
--- a/libraries/PHPExcel/PHPExcel/Writer/Excel5/Escher.php
+++ b/libraries/PHPExcel/PHPExcel/Writer/Excel5/Escher.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Writer_Excel5
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
@@ -106,9 +106,12 @@ class PHPExcel_Writer_Excel5_Escher
, $this->_object->getCSpSaved()
, $this->_object->getCDgSaved() // count total number of drawings saved
);
+
// add file identifier clusters (one per drawing)
- for ($i = 0; $i < $this->_object->getCDgSaved(); ++$i) {
- $dggData .= pack('VV', 0, 0);
+ $IDCLs = $this->_object->getIDCLs();
+
+ foreach ($IDCLs as $dgId => $maxReducedSpId) {
+ $dggData .= pack('VV', $dgId, $maxReducedSpId + 1);
}
$header = pack('vvV', $recVerInstance, $recType, strlen($dggData));
diff --git a/libraries/PHPExcel/PHPExcel/Writer/Excel5/Font.php b/libraries/PHPExcel/PHPExcel/Writer/Excel5/Font.php
index bb4d201..2928070 100644
--- a/libraries/PHPExcel/PHPExcel/Writer/Excel5/Font.php
+++ b/libraries/PHPExcel/PHPExcel/Writer/Excel5/Font.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Writer_Excel5
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/Writer/Excel5/Parser.php b/libraries/PHPExcel/PHPExcel/Writer/Excel5/Parser.php
index cef650f..eb9891e 100644
--- a/libraries/PHPExcel/PHPExcel/Writer/Excel5/Parser.php
+++ b/libraries/PHPExcel/PHPExcel/Writer/Excel5/Parser.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Writer_Excel5
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
// Original file header of PEAR::Spreadsheet_Excel_Writer_Parser (used as the base for this class):
@@ -1148,6 +1148,9 @@ class PHPExcel_Writer_Excel5_Parser
case "<>":
return $token;
break;
+ case "^":
+ return $token;
+ break;
default:
// if it's a reference A1 or $A$1 or $A1 or A$1
if (preg_match('/^\$?[A-Ia-i]?[A-Za-z]\$?[0-9]+$/',$token) and
@@ -1288,19 +1291,30 @@ class PHPExcel_Writer_Excel5_Parser
$result2 = $this->_expression();
$result = $this->_createTree('ptgUminus', $result2, '');
return $result;
+ } elseif ($this->_current_token == "+") {
+ // catch "+" Term
+ $this->_advance();
+ $result2 = $this->_expression();
+ $result = $this->_createTree('ptgUplus', $result2, '');
+ return $result;
}
$result = $this->_term();
while (($this->_current_token == "+") or
- ($this->_current_token == "-")) {
+ ($this->_current_token == "-") or
+ ($this->_current_token == "^")) {
/**/
if ($this->_current_token == "+") {
$this->_advance();
$result2 = $this->_term();
$result = $this->_createTree('ptgAdd', $result, $result2);
- } else {
+ } elseif ($this->_current_token == "-") {
$this->_advance();
$result2 = $this->_term();
$result = $this->_createTree('ptgSub', $result, $result2);
+ } else {
+ $this->_advance();
+ $result2 = $this->_term();
+ $result = $this->_createTree('ptgPower', $result, $result2);
}
}
return $result;
diff --git a/libraries/PHPExcel/PHPExcel/Writer/Excel5/Workbook.php b/libraries/PHPExcel/PHPExcel/Writer/Excel5/Workbook.php
index d26ddee..6e517e6 100644
--- a/libraries/PHPExcel/PHPExcel/Writer/Excel5/Workbook.php
+++ b/libraries/PHPExcel/PHPExcel/Writer/Excel5/Workbook.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Writer_Excel5
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
// Original file header of PEAR::Spreadsheet_Excel_Writer_Workbook (used as the base for this class):
@@ -182,6 +182,13 @@ class PHPExcel_Writer_Excel5_Workbook extends PHPExcel_Writer_Excel5_BIFFwriter
*/
private $_colors;
+ /**
+ * Escher object corresponding to MSODRAWINGGROUP
+ *
+ * @var PHPExcel_Shared_Escher
+ */
+ private $_escher;
+
/**
* Class constructor
@@ -1400,143 +1407,9 @@ class PHPExcel_Writer_Excel5_Workbook extends PHPExcel_Writer_Excel5_BIFFwriter
*/
private function _writeMsoDrawingGroup()
{
- // any drawings in this workbook?
- $found = false;
- foreach ($this->_phpExcel->getAllSheets() as $sheet) {
- if (count($sheet->getDrawingCollection()) > 0) {
- $found = true;
- }
- }
-
- // if there are drawings, then we need to write MSODRAWINGGROUP record
- if ($found) {
-
- // create intermediate Escher object
- $escher = new PHPExcel_Shared_Escher();
-
- // dggContainer
- $dggContainer = new PHPExcel_Shared_Escher_DggContainer();
- $escher->setDggContainer($dggContainer);
-
- // this loop is for determining maximum shape identifier of all drawing
- $spIdMax = 0;
- $totalCountShapes = 0;
- $countDrawings = 0;
-
- foreach ($this->_phpExcel->getAllsheets() as $sheet) {
- $sheetCountShapes = 0; // count number of shapes (minus group shape), in sheet
-
- if (count($sheet->getDrawingCollection()) > 0) {
- ++$countDrawings;
-
- foreach ($sheet->getDrawingCollection() as $drawing) {
- ++$sheetCountShapes;
- ++$totalCountShapes;
-
- $spId = $sheetCountShapes
- | ($this->_phpExcel->getIndex($sheet) + 1) << 10;
- $spIdMax = max($spId, $spIdMax);
- }
- }
- }
-
- $dggContainer->setSpIdMax($spIdMax + 1);
- $dggContainer->setCDgSaved($countDrawings);
- $dggContainer->setCSpSaved($totalCountShapes + $countDrawings); // total number of shapes incl. one group shapes per drawing
-
- // bstoreContainer
- $bstoreContainer = new PHPExcel_Shared_Escher_DggContainer_BstoreContainer();
- $dggContainer->setBstoreContainer($bstoreContainer);
-
- // the BSE's (all the images)
- foreach ($this->_phpExcel->getAllsheets() as $sheet) {
- foreach ($sheet->getDrawingCollection() as $drawing) {
- if ($drawing instanceof PHPExcel_Worksheet_Drawing) {
-
- $filename = $drawing->getPath();
-
- list($imagesx, $imagesy, $imageFormat) = getimagesize($filename);
-
- switch ($imageFormat) {
-
- case 1: // GIF, not supported by BIFF8, we convert to PNG
- $blipType = PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE::BLIPTYPE_PNG;
- $imageResource = imagecreatefromgif($filename);
- ob_start();
- imagepng($imageResource);
- $blipData = ob_get_contents();
- ob_end_clean();
- break;
-
- case 2: // JPEG
- $blipType = PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE::BLIPTYPE_JPEG;
- $blipData = file_get_contents($filename);
- break;
-
- case 3: // PNG
- $blipType = PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE::BLIPTYPE_PNG;
- $blipData = file_get_contents($filename);
- break;
-
- case 6: // Windows DIB (BMP), we convert to PNG
- $blipType = PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE::BLIPTYPE_PNG;
- $imageResource = PHPExcel_Shared_Drawing::imagecreatefrombmp($filename);
- ob_start();
- imagepng($imageResource);
- $blipData = ob_get_contents();
- ob_end_clean();
- break;
-
- default: continue 2;
-
- }
-
- $blip = new PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE_Blip();
- $blip->setData($blipData);
-
- $BSE = new PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE();
- $BSE->setBlipType($blipType);
- $BSE->setBlip($blip);
-
- $bstoreContainer->addBSE($BSE);
-
- } else if ($drawing instanceof PHPExcel_Worksheet_MemoryDrawing) {
-
- switch ($drawing->getRenderingFunction()) {
-
- case PHPExcel_Worksheet_MemoryDrawing::RENDERING_JPEG:
- $blipType = PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE::BLIPTYPE_JPEG;
- $renderingFunction = 'imagejpeg';
- break;
-
- case PHPExcel_Worksheet_MemoryDrawing::RENDERING_GIF:
- case PHPExcel_Worksheet_MemoryDrawing::RENDERING_PNG:
- case PHPExcel_Worksheet_MemoryDrawing::RENDERING_DEFAULT:
- $blipType = PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE::BLIPTYPE_PNG;
- $renderingFunction = 'imagepng';
- break;
-
- }
-
- ob_start();
- call_user_func($renderingFunction, $drawing->getImageResource());
- $blipData = ob_get_contents();
- ob_end_clean();
-
- $blip = new PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE_Blip();
- $blip->setData($blipData);
-
- $BSE = new PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE();
- $BSE->setBlipType($blipType);
- $BSE->setBlip($blip);
-
- $bstoreContainer->addBSE($BSE);
- }
- }
- }
-
- // write the Escher stream from the intermediate Escher object
- $writer = new PHPExcel_Writer_Excel5_Escher($escher);
+ // write the Escher stream if necessary
+ if (isset($this->_escher)) {
+ $writer = new PHPExcel_Writer_Excel5_Escher($this->_escher);
$data = $writer->close();
$record = 0x00EB;
@@ -1544,7 +1417,30 @@ class PHPExcel_Writer_Excel5_Workbook extends PHPExcel_Writer_Excel5_BIFFwriter
$header = pack("vv", $record, $length);
return $this->writeData($header . $data);
+
+ } else {
+ return '';
}
}
+ /**
+ * Get Escher object
+ *
+ * @return PHPExcel_Shared_Escher
+ */
+ public function getEscher()
+ {
+ return $this->_escher;
+ }
+
+ /**
+ * Set Escher object
+ *
+ * @param PHPExcel_Shared_Escher $pValue
+ */
+ public function setEscher(PHPExcel_Shared_Escher $pValue = null)
+ {
+ $this->_escher = $pValue;
+ }
+
}
diff --git a/libraries/PHPExcel/PHPExcel/Writer/Excel5/Worksheet.php b/libraries/PHPExcel/PHPExcel/Writer/Excel5/Worksheet.php
index 646101a..0dd2b00 100644
--- a/libraries/PHPExcel/PHPExcel/Writer/Excel5/Worksheet.php
+++ b/libraries/PHPExcel/PHPExcel/Writer/Excel5/Worksheet.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Writer_Excel5
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
// Original file header of PEAR::Spreadsheet_Excel_Writer_Worksheet (used as the base for this class):
@@ -186,6 +186,13 @@ class PHPExcel_Writer_Excel5_Worksheet extends PHPExcel_Writer_Excel5_BIFFwriter
private $_countCellStyleXfs;
/**
+ * Escher object corresponding to MSODRAWING
+ *
+ * @var PHPExcel_Shared_Escher
+ */
+ private $_escher;
+
+ /**
* Constructor
*
* @param int $BIFF_version BIFF version
@@ -2694,142 +2701,82 @@ class PHPExcel_Writer_Excel5_Worksheet extends PHPExcel_Writer_Excel5_BIFFwriter
}
/**
- * Write MSODRAWING record
+ * Get Escher object
+ *
+ * @return PHPExcel_Shared_Escher
*/
- private function _writeMsoDrawing()
+ public function getEscher()
{
- // check if there are any shapes for this sheet
- if (count($this->_phpSheet->getDrawingCollection()) == 0) {
- return;
- }
-
- // create intermediate Escher object
- $escher = new PHPExcel_Shared_Escher();
-
- // dgContainer
- $dgContainer = new PHPExcel_Shared_Escher_DgContainer();
-
- // set the drawing index (we use sheet index + 1)
- $dgContainer->setDgId($this->_phpSheet->getParent()->getIndex($this->_phpSheet) + 1);
- $escher->setDgContainer($dgContainer);
-
- // spgrContainer
- $spgrContainer = new PHPExcel_Shared_Escher_DgContainer_SpgrContainer();
- $dgContainer->setSpgrContainer($spgrContainer);
-
- // add one shape which is the group shape
- $spContainer = new PHPExcel_Shared_Escher_DgContainer_SpgrContainer_SpContainer();
- $spContainer->setSpgr(true);
- $spContainer->setSpType(0);
- $spContainer->setSpId(($this->_phpSheet->getParent()->getIndex($this->_phpSheet) + 1) << 10);
- $spgrContainer->addChild($spContainer);
-
- // add the shapes
-
- // outer loop is for determining BSE index
- $blipIndex = 0; // 1-based index to BstoreContainer
-
- $countShapes = 0; // count number of shapes (minus group shape), in this sheet
-
- foreach ($this->_phpSheet->getParent()->getAllsheets() as $sheet) {
- foreach ($sheet->getDrawingCollection() as $drawing) {
- ++$blipIndex;
-
- if ($sheet === $this->_phpSheet) {
- ++$countShapes;
-
- // add the shape
- $spContainer = new PHPExcel_Shared_Escher_DgContainer_SpgrContainer_SpContainer();
-
- // set the shape type
- $spContainer->setSpType(0x004B);
-
- // set the shape index (we combine 1-based sheet index and $countShapes to create unique shape index)
- $spId = $countShapes
- | ($this->_phpSheet->getParent()->getIndex($this->_phpSheet) + 1) << 10;
- $spContainer->setSpId($spId);
-
- // keep track of last spId
- $lastSpId = $spId;
-
- // set the BLIP index
- $spContainer->setOPT(0x4104, $blipIndex);
-
- // set coordinates and offsets, client anchor
- $coordinates = $drawing->getCoordinates();
- $offsetX = $drawing->getOffsetX();
- $offsetY = $drawing->getOffsetY();
- $width = $drawing->getWidth();
- $height = $drawing->getHeight();
-
- $twoAnchor = PHPExcel_Shared_Excel5::oneAnchor2twoAnchor($this->_phpSheet, $coordinates, $offsetX, $offsetY, $width, $height);
+ return $this->_escher;
+ }
- $spContainer->setStartCoordinates($twoAnchor['startCoordinates']);
- $spContainer->setStartOffsetX($twoAnchor['startOffsetX']);
- $spContainer->setStartOffsetY($twoAnchor['startOffsetY']);
- $spContainer->setEndCoordinates($twoAnchor['endCoordinates']);
- $spContainer->setEndOffsetX($twoAnchor['endOffsetX']);
- $spContainer->setEndOffsetY($twoAnchor['endOffsetY']);
+ /**
+ * Set Escher object
+ *
+ * @param PHPExcel_Shared_Escher $pValue
+ */
+ public function setEscher(PHPExcel_Shared_Escher $pValue = null)
+ {
+ $this->_escher = $pValue;
+ }
- $spgrContainer->addChild($spContainer);
- }
+ /**
+ * Write MSODRAWING record
+ */
+ private function _writeMsoDrawing()
+ {
+ // write the Escher stream if necessary
+ if (isset($this->_escher)) {
+ $writer = new PHPExcel_Writer_Excel5_Escher($this->_escher);
+ $data = $writer->close();
+ $spOffsets = $writer->getSpOffsets();
+
+ // write the neccesary MSODRAWING, OBJ records
+
+ // split the Escher stream
+ $spOffsets[0] = 0;
+ $nm = count($spOffsets) - 1; // number of shapes excluding first shape
+ for ($i = 1; $i <= $nm; ++$i) {
+ // MSODRAWING record
+ $record = 0x00EC; // Record identifier
+
+ // chunk of Escher stream for one shape
+
+ $dataChunk = substr($data, $spOffsets[$i -1], $spOffsets[$i] - $spOffsets[$i - 1]);
+
+ $length = strlen($dataChunk);
+ $header = pack("vv", $record, $length);
+
+ $this->_append($header . $dataChunk);
+
+ // OBJ record
+ $record = 0x005D; // record identifier
+ $objData = '';
+
+ // ftCmo
+ $objData .=
+ pack('vvvvvVVV'
+ , 0x0015 // 0x0015 = ftCmo
+ , 0x0012 // length of ftCmo data
+ , 0x0008 // object type, 0x0008 = picture
+ , $i // object id number, Excel seems to use 1-based index, local for the sheet
+ , 0x6011 // option flags, 0x6011 is what OpenOffice.org uses
+ , 0 // reserved
+ , 0 // reserved
+ , 0 // reserved
+ );
+ // ftEnd
+ $objData .=
+ pack('vv'
+ , 0x0000 // 0x0000 = ftEnd
+ , 0x0000 // length of ftEnd data
+ );
+
+ $length = strlen($objData);
+ $header = pack('vv', $record, $length);
+ $this->_append($header . $objData);
}
}
-
- // set last shape index
- $dgContainer->setLastSpId($lastSpId);
-
- // write the Escher stream
- $writer = new PHPExcel_Writer_Excel5_Escher($escher);
- $data = $writer->close();
- $spOffsets = $writer->getSpOffsets();
-
- // write the neccesary MSODRAWING, OBJ records
-
- // split the Escher stream
- $spOffsets[0] = 0;
- $nm = count($spOffsets) - 1; // number of shapes excluding first shape
- for ($i = 1; $i <= $nm; ++$i) {
- // MSODRAWING record
- $record = 0x00EC; // Record identifier
-
- // chunk of Escher stream for one shape
-
- $dataChunk = substr($data, $spOffsets[$i -1], $spOffsets[$i] - $spOffsets[$i - 1]);
-
- $length = strlen($dataChunk);
- $header = pack("vv", $record, $length);
-
- $this->_append($header . $dataChunk);
-
- // OBJ record
- $record = 0x005D; // record identifier
- $objData = '';
-
- // ftCmo
- $objData .=
- pack('vvvvvVVV'
- , 0x0015 // 0x0015 = ftCmo
- , 0x0012 // length of ftCmo data
- , 0x0008 // object type, 0x0008 = picture
- , $i // object id number, Excel seems to use 1-based index, local for the sheet
- , 0x6011 // option flags, 0x6011 is what OpenOffice.org uses
- , 0 // reserved
- , 0 // reserved
- , 0 // reserved
- );
- // ftEnd
- $objData .=
- pack('vv'
- , 0x0000 // 0x0000 = ftEnd
- , 0x0000 // length of ftEnd data
- );
-
- $length = strlen($objData);
- $header = pack('vv', $record, $length);
- $this->_append($header . $objData);
- }
-
}
/**
@@ -3006,4 +2953,4 @@ class PHPExcel_Writer_Excel5_Worksheet extends PHPExcel_Writer_Excel5_BIFFwriter
return 0;
}
-}
+}
\ No newline at end of file
diff --git a/libraries/PHPExcel/PHPExcel/Writer/Excel5/Xf.php b/libraries/PHPExcel/PHPExcel/Writer/Excel5/Xf.php
index 9246a34..27632f3 100644
--- a/libraries/PHPExcel/PHPExcel/Writer/Excel5/Xf.php
+++ b/libraries/PHPExcel/PHPExcel/Writer/Excel5/Xf.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Writer_Excel5
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
// Original file header of PEAR::Spreadsheet_Excel_Writer_Format (used as the base for this class):
diff --git a/libraries/PHPExcel/PHPExcel/Writer/HTML.php b/libraries/PHPExcel/PHPExcel/Writer/HTML.php
index 3c892cf..b6667f5 100644
--- a/libraries/PHPExcel/PHPExcel/Writer/HTML.php
+++ b/libraries/PHPExcel/PHPExcel/Writer/HTML.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Writer
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
@@ -152,6 +152,8 @@ class PHPExcel_Writer_HTML implements PHPExcel_Writer_IWriter {
// garbage collect
$this->_phpExcel->garbageCollect();
+ $saveDebugLog = PHPExcel_Calculation::getInstance()->writeDebugLog;
+ PHPExcel_Calculation::getInstance()->writeDebugLog = false;
$saveArrayReturnType = PHPExcel_Calculation::getArrayReturnType();
PHPExcel_Calculation::setArrayReturnType(PHPExcel_Calculation::RETURN_ARRAY_AS_VALUE);
@@ -182,6 +184,7 @@ class PHPExcel_Writer_HTML implements PHPExcel_Writer_IWriter {
fclose($fileHandle);
PHPExcel_Calculation::setArrayReturnType($saveArrayReturnType);
+ PHPExcel_Calculation::getInstance()->writeDebugLog = $saveDebugLog;
}
/**
@@ -330,7 +333,7 @@ class PHPExcel_Writer_HTML implements PHPExcel_Writer_IWriter {
// row min,max
$rowMin = $dimension[0][1];
$rowMax = $dimension[1][1];
-
+
// calculate start of <tbody>, <thead>
$tbodyStart = $rowMin;
$tbodyEnd = $rowMax;
@@ -338,7 +341,7 @@ class PHPExcel_Writer_HTML implements PHPExcel_Writer_IWriter {
$theadEnd = 0; // default: no </thead>
if ($sheet->getPageSetup()->isRowsToRepeatAtTopSet()) {
$rowsToRepeatAtTop = $sheet->getPageSetup()->getRowsToRepeatAtTop();
-
+
// we can only support repeating rows that start at top row
if ($rowsToRepeatAtTop[0] == 1) {
$theadStart = $rowsToRepeatAtTop[0];
@@ -346,7 +349,7 @@ class PHPExcel_Writer_HTML implements PHPExcel_Writer_IWriter {
$tbodyStart = $rowsToRepeatAtTop[1] + 1;
}
}
-
+
// Loop through cells
$rowData = null;
for ($row = $rowMin; $row <= $rowMax; ++$row) {
diff --git a/libraries/PHPExcel/PHPExcel/Writer/IWriter.php b/libraries/PHPExcel/PHPExcel/Writer/IWriter.php
index ec5331e..35fd689 100644
--- a/libraries/PHPExcel/PHPExcel/Writer/IWriter.php
+++ b/libraries/PHPExcel/PHPExcel/Writer/IWriter.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Writer
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/Writer/PDF.php b/libraries/PHPExcel/PHPExcel/Writer/PDF.php
index 570ce9d..f588635 100644
--- a/libraries/PHPExcel/PHPExcel/Writer/PDF.php
+++ b/libraries/PHPExcel/PHPExcel/Writer/PDF.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Writer
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
diff --git a/libraries/PHPExcel/PHPExcel/Writer/Serialized.php b/libraries/PHPExcel/PHPExcel/Writer/Serialized.php
index 603c4f7..51616b4 100644
--- a/libraries/PHPExcel/PHPExcel/Writer/Serialized.php
+++ b/libraries/PHPExcel/PHPExcel/Writer/Serialized.php
@@ -22,7 +22,7 @@
* @package PHPExcel_Writer
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.3c, 2010-06-01
+ * @version 1.7.4, 2010-08-26
*/
@@ -163,10 +163,10 @@ class PHPExcel_Writer_Serialized implements PHPExcel_Writer_IWriter
// PHPExcel
$objWriter->startElement('PHPExcel');
- $objWriter->writeAttribute('version', '1.7.3c');
+ $objWriter->writeAttribute('version', '1.7.4');
// Comment
- $objWriter->writeComment('This file has been generated using PHPExcel v1.7.3c (http://www.codeplex.com/PHPExcel) It contains a base64 encoded serialized version of the PHPExcel internal object.');
+ $objWriter->writeComment('This file has been generated using PHPExcel v1.7.4 (http://www.codeplex.com/PHPExcel) It contains a base64 encoded serialized version of the PHPExcel internal object.');
// Data
$objWriter->startElement('data');
hooks/post-receive
--
phpMyAdmin
1
0
[Phpmyadmin-git] [SCM] phpMyAdmin branch, master, updated. RELEASE_3_3_7-10090-ge539a03
by Dieter Adriaenssens 11 Sep '10
by Dieter Adriaenssens 11 Sep '10
11 Sep '10
The branch, master has been updated
via e539a03ef938fb5df7950603bc196d2506c2c9b4 (commit)
via f5879655d58812b978dc975e5dc8d8497d11a3c3 (commit)
from 4c61dc7f6b59bf7579ce6da9633a689191a3846f (commit)
- Log -----------------------------------------------------------------
commit e539a03ef938fb5df7950603bc196d2506c2c9b4
Merge: 4c61dc7f6b59bf7579ce6da9633a689191a3846f f5879655d58812b978dc975e5dc8d8497d11a3c3
Author: Dieter Adriaenssens <ruleant(a)users.sourceforge.net>
Date: Sat Sep 11 11:03:15 2010 +0200
Merge branch 'QA_3_3'
-----------------------------------------------------------------------
Summary of changes:
libraries/import.lib.php | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/libraries/import.lib.php b/libraries/import.lib.php
index bacc6a4..98221de 100644
--- a/libraries/import.lib.php
+++ b/libraries/import.lib.php
@@ -739,7 +739,7 @@ function PMA_detectType($last_cumulative_type, &$cell) {
if ($cell == (string)(float)$cell && strpos($cell, ".") !== false && substr_count($cell, ".") == 1) {
return DECIMAL;
} else {
- if ($cell > 2147483647) {
+ if (abs($cell) > 2147483647) {
return BIGINT;
} else {
return INT;
hooks/post-receive
--
phpMyAdmin
1
0