Feature requests

Topics: Project Management Forum
Coordinator
Feb 17, 2007 at 10:57 AM
This topic can be used to post feature requests.

When posting, please create a detailed description of your feature request.
Mar 29, 2007 at 2:14 AM
Edited Mar 29, 2007 at 2:15 AM
I would like to be able to protect spread sheets with a password.Only reading allowed without password.

Thank you very much.
Coordinator
Mar 29, 2007 at 5:23 PM
This is added as a feature request, and in research.
May 17, 2007 at 2:22 PM
Not sure if this already exists or not, but it would be really handy to have a routine that "auto-sizes" a column or row based on its contents. To do this in Excel, you just double-click on the column or row legend border, and it will grow/shrink the size according to the contents of that column or row.
Coordinator
May 17, 2007 at 3:10 PM

j_freeman wrote:
Not sure if this already exists or not, but it would be really handy to have a routine that "auto-sizes" a column or row based on its contents. To do this in Excel, you just double-click on the column or row legend border, and it will grow/shrink the size according to the contents of that column or row.

This currently does not exist, and I will do some research to see if it would be possible from PHP.
Coordinator
May 17, 2007 at 3:11 PM
This discussion has been copied to a work item. Click here to go to the work item and continue the discussion.
Apr 8, 2008 at 12:00 PM
I would like to be able to write the output to a PDF. This would allow me to use PHPExcel as a complete reporting engine with all popular reporting formats, Excel, CSV, HTML and PDF. We could use the File_PDF pear package to do this http://pear.php.net/package/File_PDF.

Any thoughts?
Coordinator
Apr 8, 2008 at 12:38 PM
Sounds great! Will have a look at the different PDF libraries around though...
Coordinator
Apr 22, 2008 at 8:14 AM
This discussion has been copied to a work item. Click here to go to the work item and continue the discussion.
Apr 25, 2008 at 1:31 PM
I'm trying to modify Excel documents containing graphs.

I'v tried some possibilities, reading/writing in differetn format, but still my graphs disapear when I save my file.

Is there any way to do it, or does this functionnality not exists yet ?
Coordinator
Apr 28, 2008 at 6:20 AM
Graphs are not implemented yet and will indeed be left out when writing data back to a file.
Apr 28, 2008 at 7:43 AM

maartenba wrote:
Graphs are not implemented yet and will indeed be left out when writing data back to a file.


thanks for the reply.
do you have an estimate of a delivery date for this feature ?
Apr 30, 2008 at 2:31 AM
How about getting the FILLS correct, see this thread:
http://www.codeplex.com/PHPExcel/Thread/View.aspx?ThreadId=20857
Jul 21, 2008 at 12:58 PM
Edited Jul 21, 2008 at 1:00 PM
It will be great if you can develop a function which allow us to use a template previously created. As template I mean an Excel file (.xlsx) with formulas. Then, we will be able to enter some more numbers into this template.

Thank you very much
Ludo
Coordinator
Jul 22, 2008 at 4:18 PM
You can currently read and write an Excel file... Why not use that as a template? This should work out quite well, I think.
Jul 23, 2008 at 8:39 AM
Thanks a lot Maartenba for your answer. I thought the same after posting but i did not try yet. I will try that today. I will let you know how it goes! :)
Have a good day!
Dec 22, 2009 at 10:05 AM
Edited Dec 22, 2009 at 10:07 AM

PHPExcel was great tool for reading and manipulating Excel files. I'm grateful to find these.

And i would like to request some usefull function:

- function $objPHPExcel->getAllSheetsIntoArray() : this function will fasten the coder rather than to write the iteration for all the sheets

- function $objPHPExcel->setActiveSheetByName('Sheet XXX') : why we only have index, while we have to iterates all the sheets above than doing an array_flip to get its index than assign as the name provided. That taken too much useless script.

- setCellValue('A20', ... we should provide another naming convention of the column like A20 into 1:20, because sometimes coder may create a loop on the column, if we create 1 to 100 column than we should make a translator function like 1 as A, 2 as B, xx as AA, xx as AB, xxx as ABC, ... (the hell to make it), so i suggest to make another name function like setCellValue('1:20', ... and then the function will translate itself, its easy isn't it programmers?

 

I believe that will make them a Perfect tools for reading Excel. Thank You.

Dec 22, 2009 at 10:18 AM
Edited Dec 22, 2009 at 10:20 AM

Oh yeah another great request, don't know if its already provided though:

is it possible to make a search function in the range provided, maybe something like this:

function searchContent(FROM_CELL,TO_CELL,STRING_HAYSTACK)

ex: searchContent("A1","K10","haystack") => will return an array of value along with its position ex: array("A2"=>'haystack1',"A10"=>'haystack2',"B5"=>'haystack3')

this function will be a great help i think, thanks.

Developer
Jan 17, 2010 at 12:14 PM
brilien wrote:

- function $objPHPExcel->getAllSheetsIntoArray() : this function will fasten the coder rather than to write the iteration for all the sheets

How does this compare with the current $objPHPExcel->getAllSheets() ?

brilien wrote:

- function $objPHPExcel->setActiveSheetByName('Sheet XXX') : why we only have index, while we have to iterates all the sheets above than doing an array_flip to get its index than assign as the name provided. That taken too much useless script.

Now implemented:

http://phpexcel.codeplex.com/WorkItem/View.aspx?WorkItemId=11529

brilien wrote:

- setCellValue('A20', ... we should provide another naming convention of the column like A20 into 1:20, because sometimes coder may create a loop on the column, if we create 1 to 100 column than we should make a translator function like 1 as A, 2 as B, xx as AA, xx as AB, xxx as ABC, ... (the hell to make it), so i suggest to make another name function like setCellValue('1:20', ... and then the function will translate itself, its easy isn't it programmers?

I'm a bit worried about this notation. '1:20' look like the selection of rows 1 through 20.

We already have setCellValueByColumnAndRow(0, 20, ...). Does it not suffice?

brilien wrote:

is it possible to make a search function in the range provided, maybe something like this:

function searchContent(FROM_CELL,TO_CELL,STRING_HAYSTACK)

ex: searchContent("A1","K10","haystack") => will return an array of value along with its position ex: array("A2"=>'haystack1',"A10"=>'haystack2',"B5"=>'haystack3')

this function will be a great help i think, thanks.

Perhaps this can be expressed in terms of Excel functions? If so, it may already be available via the calculation engine?

 

Jan 18, 2010 at 6:27 AM
Edited Jan 18, 2010 at 7:13 AM
koyama wrote:

How does this compare with the current $objPHPExcel->getAllSheets() ?

not that simple, but well if you insists that will do.

koyama wrote:

Now implemented:

http://phpexcel.codeplex.com/WorkItem/View.aspx?WorkItemId=11529

that will be awesome

koyama wrote:

I'm a bit worried about this notation. '1:20' look like the selection of rows 1 through 20.

We already have setCellValueByColumnAndRow(0, 20, ...). Does it not suffice?

well that will be a help. but the fact is you have that naming convention in all of your modules.

for example some other function like "$objPHPExcel->getActiveSheet()->getStyle('A12')->getFont()->setBold(true);", did you really have the function like getStyleByColumnAndRow(('1','12') too ???

I think you should rearrange all of the modules with the new cell pointer convention, off course you should be worried of that :-)

and that naming convention doesn't have to be in my requested format (1:20), you can add another character delimiter (it's up to you) such as 1_20 or 1,20 or 1/20 or anything else

the only purpose is that user will iterate it more freely using digits rather than using alphabet-digit iteration

I've been gooling awhile for php excel, some of them like excelReader or excelWriter support the digits pointer convention rather than using excel original alphabet-digit pointer

I'm a bit worried about this notation. '1:20' look like the selection of rows 1 through 20.

We already have setCellValueByColumnAndRow(0, 20, ...). Does it not suffice?

Jan 18, 2010 at 9:44 AM

Make it possible to shift selected range(cells) or entire row and column either vertically or horizontally.

I'm suggesting an API like this.

 

$sheet->getCell('A1')->shift(PHPExel_SomeShifter::CELL_RIGHT);
$sheet->getCell('A1')->shift(PHPExel_SomeShifter::CELL_DOWN);
$sheet->getCell('A1')->shift(PHPExel_SomeShifter::ROW); //might be similar to insertNewRowBefore
$sheet->getCell('A1')->shift(PHPExel_SomeShifter::COLUMN);

$sheet->getCells('A1:B1')->shift(PHPExel_SomeShifter::CELL_RIGHT);
$sheet->getCells('A1:B1')->shift(PHPExel_SomeShifter::CELL_DOWN);
$sheet->getCells('A1:B1')->shift(PHPExel_SomeShifter::ROW);
$sheet->getCells('A1:B1')->shift(PHPExel_SomeShifter::COLUMN);

 

 

Developer
Jan 19, 2010 at 7:34 AM
brilien wrote:

and that naming convention doesn't have to be in my requested format (1:20), you can add another character delimiter (it's up to you) such as 1_20 or 1,20 or 1/20 or anything else

the only purpose is that user will iterate it more freely using digits rather than using alphabet-digit iteration

I've been gooling awhile for php excel, some of them like excelReader or excelWriter support the digits pointer convention rather than using excel original alphabet-digit pointer

I'm a bit worried about this notation. '1:20' look like the selection of rows 1 through 20.

We already have setCellValueByColumnAndRow(0, 20, ...). Does it not suffice?

I see your point. When I think about it there is also the possibility that we can allow the familiar R1C1 notation, e.g. getCell('R20C1') as equivalent of getCell('A20')

We need to think.

Developer
Jan 19, 2010 at 9:13 AM
marfillaster wrote:

Make it possible to shift selected range(cells) or entire row and column either vertically or horizontally.

I'm suggesting an API like this.

$sheet->getCell('A1')->shift(PHPExel_SomeShifter::CELL_RIGHT);
$sheet->getCell('A1')->shift(PHPExel_SomeShifter::CELL_DOWN);
$sheet->getCell('A1')->shift(PHPExel_SomeShifter::ROW); //might be similar to insertNewRowBefore
$sheet->getCell('A1')->shift(PHPExel_SomeShifter::COLUMN);

$sheet->getCells('A1:B1')->shift(PHPExel_SomeShifter::CELL_RIGHT);
$sheet->getCells('A1:B1')->shift(PHPExel_SomeShifter::CELL_DOWN);
$sheet->getCells('A1:B1')->shift(PHPExel_SomeShifter::ROW);
$sheet->getCells('A1:B1')->shift(PHPExel_SomeShifter::COLUMN);

Adding this as a work item so that others can vote.

http://phpexcel.codeplex.com/WorkItem/View.aspx?WorkItemId=11552

 

Feb 11, 2010 at 10:42 AM
Edited Feb 11, 2010 at 10:55 AM

Ok then... to Mr Koyama i've already sent you a PM regarding the alphabetical naming, maybe you just get too busy so i think i should put it here, so we won't miss it.

I contribute this function and hope that you put one similar function in your code that can be called anywhere anytime, lately i found problem from iterating my data in X direction, and errors occured because i'm not prepared for the worst possibility of data explosion in X direction.

Here:

function numeric_to_excel_alpha($integer=1){
$div=floor($integer/26);
$mod=$integer%26;
if($mod==0){
$div=$div-1;
$mod=26;
}
if($div>0){
return numeric_to_excel_alpha($div).chr(64+$mod);
}else{
return chr(64+$mod);
}
}

Hope this help.

Keep the great job!

 

Btw i never try it intensively, if you put 0 or minus integer or floating point for the $integer, i don't know will happen. I haven't put the errors callback. But that's the main point.

Coordinator
Feb 11, 2010 at 12:48 PM
brilien wrote:

I contribute this function and hope that you put one similar function in your code that can be called anywhere anytime, lately i found problem from iterating my data in X direction, and errors occured because i'm not prepared for the worst possibility of data explosion in X direction.

You mean something like PHPExcel_Cell::stringFromColumnIndex() or its sister helper method PHPExcel_Cell::columnIndexFromString() ?

Feb 12, 2010 at 3:31 AM

Yes that's what i'm looking for, I've got the same replied from Mr Koyama. That's solve my problem for the excel naming convention.

Seems that you should put that in the first page of the documentation.

Thanks for that.

Feb 18, 2010 at 1:52 PM

Hello

Thank you for this awesome library.

Here is my feature request : ability to style column or rows.

For example :

$objPHPExcel->getActiveSheet()->setSharedStyleByRow($style, 2);
$objPHPExcel->getActiveSheet()->setSharedStyleByColumn($style, 'A');

$objPHPExcel->getActiveSheet()->getStyleByRow(2);
$objPHPExcel->getActiveSheet()->getStyleByColumn('A');

Thomas

Developer
Feb 18, 2010 at 9:04 PM
twitomato wrote:

Hello

Thank you for this awesome library.

Here is my feature request : ability to style column or rows.

For example :

 

$objPHPExcel->getActiveSheet()->setSharedStyleByRow($style, 2);
$objPHPExcel->getActiveSheet()->setSharedStyleByColumn($style, 'A');

$objPHPExcel->getActiveSheet()->getStyleByRow(2);
$objPHPExcel->getActiveSheet()->getStyleByColumn('A');

 

Thomas

Can you check this work item:

http://phpexcel.codeplex.com/WorkItem/View.aspx?WorkItemId=7333

You should already now be able to style row and columns like, e.g. this:

$objPHPExcel->getActiveSheet()->getStyle('2')->applyFromArray(...);
$objPHPExcel->getActiveSheet()->getStyle('A')->applyFromArray(...);
Nov 20, 2010 at 12:49 AM

I'd like the ability to change the default workbook view (ex. Normal, Page Layout, Page Break Preview).

Thanks.

Mar 16, 2011 at 6:53 PM

Being able to set the indexed colors on the fly would be a good feature. Ref: http://phpexcel.codeplex.com/discussions/249098

Some methods to edit the indexed colors array would seem to be a logical choice.

Mar 28, 2011 at 7:21 AM

Feature request :All dynamically objects (In priority order) :

Sep 6, 2011 at 9:30 PM
acrooks wrote:

I'd like the ability to change the default workbook view (ex. Normal, Page Layout, Page Break Preview).

Thanks.

+1

Thank you for your good work!

Mar 4, 2013 at 1:16 AM
hi, just want to ask if it is possible to use a template with macro/vba scripts and be able to write it to a new file with those scripts intact?

Thanks.
Coordinator
Mar 4, 2013 at 6:42 AM
just want to ask if it is possible to use a template with macro/vba scripts and be able to write it to a new file with those scripts intact?
Simply put, "No". And it would be a major piece of work to provide support for VBA
Mar 5, 2013 at 3:52 PM
You can find an implementation for Excel 2007 here: https://phpexcel.codeplex.com/workitem/19017

Note: The proposed amendments are not approved by Mark.
Apr 2, 2014 at 2:38 PM
I would like to request the possibility to convert a cell range in a table, allowing to "attach" a "total row" on the bottom, and to dinamically sort fields on the header.

Something like:
// Convert a specifc cell range to a table
$PHPExcel->getActiveSheet()->formatRangeAsTable("A1:F88", "table1"); 
// AND / OR
// Convert the entire cell range to a table   
$PHPExcel->getActiveSheet()->convertToTable("table1");

// May throw exception if "table1" already exists.
Possible actions for tables:
// Tables have unique names and can be referenced accross sheets, and can be selected without knowing the sheet name
$table = $PHPExcel->getTable("table1"); 
$table->setTotalsRow(true) # Add a total row
      ->setHeader(true); # Tells that the table include headers, allowing dynamic sorting

$table->addColumn(...) # Add a column to the entire table range
      ->addRow(...) # Add a new row to the table
May allow associative data:
$table = $PHPExcel->getTable("table1"); 
$table->setHeaderKeys(array('date', 'client', 'qty', 'sale_total'));

foreach ($table->getRows() as $row) {
    // Magic function allow the use of header keys to get/set data
    $row->setDate($today);
}