Top Banner
1 Media Software Design DIG 3134 Fall 2011 Lecture 18: Excel, PDF J. Michael Moshell University of Central Florida Original image* by Moshell et al .
25

1 Media Software Design DIG 3134 Fall 2011 Lecture 18: Excel, PDF J. Michael Moshell University of Central Florida Original image* by Moshell et al.

Dec 23, 2015

Download

Documents

Andrea Norman
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: 1 Media Software Design DIG 3134 Fall 2011 Lecture 18: Excel, PDF J. Michael Moshell University of Central Florida Original image* by Moshell et al.

1

Media Software Design

DIG 3134

Fall 2011

Lecture 18: Excel, PDFJ. Michael Moshell

University of Central Florida

Original image* by Moshell et al .

Page 2: 1 Media Software Design DIG 3134 Fall 2011 Lecture 18: Excel, PDF J. Michael Moshell University of Central Florida Original image* by Moshell et al.

-2 -

Four Easy(?) Add-ons for PHP

1. Creating Excel (.xls) files

2. Reading Excel files

3. Uploading files

4. Creating PDF documents

Page 3: 1 Media Software Design DIG 3134 Fall 2011 Lecture 18: Excel, PDF J. Michael Moshell University of Central Florida Original image* by Moshell et al.

-3 -

Creating an Excel file

CREATING Excel:

My method is ONLY useful for downloading

to the browser – NOT for storing a file

directly to disk on the server.

NOTE: This code will NOT work if anything, even

a single character, is emitted by the PHP code

before the 'emitxls' function is called.

Page 4: 1 Media Software Design DIG 3134 Fall 2011 Lecture 18: Excel, PDF J. Michael Moshell University of Central Florida Original image* by Moshell et al.

-4 -

Creating an Excel file

function emitxls($data)

{

header("Content-type: application/octet-stream");

# from: forge.typo3.org/issues/show/3765

header("Content-Disposition: attachment; filename=output.xls");

header('Pragma: public');

header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Date in past

header('Last-Modified: '.gmdate('D, d M Y H:i:s') . ' GMT');

header('Cache-Control: no-store, no-cache, must-revalidate');

header('Cache-Control: pre-check=0, post-check=0, max-age=0');

echo $data;

} #emitxls

Page 5: 1 Media Software Design DIG 3134 Fall 2011 Lecture 18: Excel, PDF J. Michael Moshell University of Central Florida Original image* by Moshell et al.

-5 -

Creating an Excel file

///// MAIN PROGRAM /////

$t="\t"; // Tab character

$n="\n"; // Newline character

$data="Line 1".$t."column 2".$t."column 3".$n;

$data.="Line 2".$t."l2 column 2".$t."l2 column 3".$n;

$data.="Line 3".$t."l3 column 2".$t."l3 column 3".$n;

emitxls($data);

?>

Page 6: 1 Media Software Design DIG 3134 Fall 2011 Lecture 18: Excel, PDF J. Michael Moshell University of Central Florida Original image* by Moshell et al.

-6 -

A Demo that Doesn't work

Here's one that DOES work: xlsdemo1.php

--------

<?php

// etc

Here's one that DOES NOT work: just add a space at top of xlsdemos.

-------

<?php

//etc

NOTE: The response VARIES from one Apache environment to

another. (Sometimes error message; sometimes text on screen.)

Sometimes hard to notice

the blank line at top

Page 7: 1 Media Software Design DIG 3134 Fall 2011 Lecture 18: Excel, PDF J. Michael Moshell University of Central Florida Original image* by Moshell et al.

-7 -

Moving on ... how to READ Excel. I use a small library called excel_reader2.php.

It uses PHP Objects, as follows:

$data = new Spreadsheet_Excel_Reader($filename);

// This Spreadsheet_Excel_Reader is a CLASS defined in the excel_reader library.

// Now we use two accessor functions to find out how big the spreadsheet is

$colcnt=$data->colcount();

$rowmax=$data->rowcount();

Page 8: 1 Media Software Design DIG 3134 Fall 2011 Lecture 18: Excel, PDF J. Michael Moshell University of Central Florida Original image* by Moshell et al.

-8 -

Reading an Excel File (Local) Demonstrate and experiment with xlsdemo2.php

Items to note:

1) This function does NOT ask the user to upload an Excel file.

It works with a file that is local to the PHP code.

So this operation is not 'symmetric' with the code to emit a file,

that I gave you previously.

2) If the file is not found, or if it's defective, you will get a zero

value for 'rowmax'. Note the error message in my

getspreadsheet function.

Page 9: 1 Media Software Design DIG 3134 Fall 2011 Lecture 18: Excel, PDF J. Michael Moshell University of Central Florida Original image* by Moshell et al.

-9 -

Uploading a file (image) Demonstrate and experiment with upload.php

Items to note:

1) $_FILES is analogous to $_POST or $_GET

i. e. it's a "built-in global array".

2) I've not yet managed to get an error, so haven't seen

"Error Return Code" in action.

3) Functions to understand: end,

in_array,

file_exists,

move_uploaded_file

Page 10: 1 Media Software Design DIG 3134 Fall 2011 Lecture 18: Excel, PDF J. Michael Moshell University of Central Florida Original image* by Moshell et al.

-10 -

Uploading a file (excel) Demonstrate and experiment with uploadexcel.php

Items to note:

1) I simplified it considerably from upload.php

2) I used !$target to tell if this was the first pass, and to

emit the form if this was the case.

3) This one DELIBERATELY overwrites workfile.xls, because

you will presumably now use the excel_reader2.php

library to pull workfile.xls into your software

for whatever purpose . . . .

Page 11: 1 Media Software Design DIG 3134 Fall 2011 Lecture 18: Excel, PDF J. Michael Moshell University of Central Florida Original image* by Moshell et al.

-11 -

Producing a PDF File Somewhat similar to Excel production, in that

the PDF can be sent to the browser.

BUT you can also save a copy of the PDF file on your host.

Somewhat similar to the Excel reader, in that

a special library is used.

BUT the library is much bigger and more complex. (18 megabytes)

Tour the tcpdf website at

www.tcpdf.org

Page 12: 1 Media Software Design DIG 3134 Fall 2011 Lecture 18: Excel, PDF J. Michael Moshell University of Central Florida Original image* by Moshell et al.

-12 -

PDF Example 1There are many examples at

http://www.tcpdf.org/examples.php

See my pdfdemo1.txt

Example 1 uses the writeHTMLcell( ) function, which

allows you to use HTML to format your text.

BUT HTML has substantial limits for formatting!

(e. g. font control.)

Page 13: 1 Media Software Design DIG 3134 Fall 2011 Lecture 18: Excel, PDF J. Michael Moshell University of Central Florida Original image* by Moshell et al.

-13 -

PDF Example 2

Read the code.

Understand these methods:

$pdf->SetFont()

$pdf->AddPage();

$pdf->Text()

$pdf->Line()

$pdf->Output()

Page 14: 1 Media Software Design DIG 3134 Fall 2011 Lecture 18: Excel, PDF J. Michael Moshell University of Central Florida Original image* by Moshell et al.

-14 -

The Output method

Send the document to a given destination

void Output ([string $name = ''], [string $dest = ''])

string $name: The name of the file. If not given, the document will be sent to the browser (destination I) with the name doc.pdf.

string $dest: Destination where to send the document. It can take one of the following values:

I: send the file inline to the browser

D: send to the browser and force a file download with the name given by name.

F: save to a local file with the name given by name.

Page 15: 1 Media Software Design DIG 3134 Fall 2011 Lecture 18: Excel, PDF J. Michael Moshell University of Central Florida Original image* by Moshell et al.

-15 -

cURL

• When a PHP program needs to

invoke another Internet site• client URL Library supports

http, https

ftp, gopher, telnet, dict, file, ldap

proxies, cookies, user-password authentication

Page 16: 1 Media Software Design DIG 3134 Fall 2011 Lecture 18: Excel, PDF J. Michael Moshell University of Central Florida Original image* by Moshell et al.

-16 - -16 -

cURL

• Demonstrate cURL:-mograb.php =

A PHP program that reads another website

and "screen scrapes" some information.

Page 17: 1 Media Software Design DIG 3134 Fall 2011 Lecture 18: Excel, PDF J. Michael Moshell University of Central Florida Original image* by Moshell et al.

-17 - -17 -

cURL in action

Browser

The mograb.php

'scraper' program

Program sends an http

message via CURL

The scraped

Site "goldprice.html"

Access a URL

to run PHP program

Page 18: 1 Media Software Design DIG 3134 Fall 2011 Lecture 18: Excel, PDF J. Michael Moshell University of Central Florida Original image* by Moshell et al.

-18 - -18 - -18 -

cURL in action

Browser

The mograb.php

'scraper' program

Program sends an http

message via CURL

The scraped

Site "goldprice.html"

Access a URL

to run PHP programServer

Returns the text

Of goldprice.html

CURL sends reply

to calling program

Page 19: 1 Media Software Design DIG 3134 Fall 2011 Lecture 18: Excel, PDF J. Michael Moshell University of Central Florida Original image* by Moshell et al.

-19 - -19 - -19 -

cURL in action

Browser

The mograb.php

'scraper' program

Program sends an http

message via CURL

The scraped

Site "goldprice.html"

Access a URL

to run PHP programServer

Returns the text

Of goldprice.html

CURL sends reply

to calling programMograb creates html

to deliver the scraped information

Plus whatever else you want

To tell your user.

Page 20: 1 Media Software Design DIG 3134 Fall 2011 Lecture 18: Excel, PDF J. Michael Moshell University of Central Florida Original image* by Moshell et al.

-20 - -20 -

cURL demo 2

• Demonstrate cURL:-Mograb2.php

This just shows that cURL can call a website that

is not just in localhost (namely, www.microsoft.com)

Page 21: 1 Media Software Design DIG 3134 Fall 2011 Lecture 18: Excel, PDF J. Michael Moshell University of Central Florida Original image* by Moshell et al.

-21 - -21 -

cURL demo 3

• Demonstrate memcheck.php

A little "fake" membership checking site.

12345 -> Joe Wilson

67890 -> Mary Lebone

anything else ->NOT a member

-Mograb3.php

Page 22: 1 Media Software Design DIG 3134 Fall 2011 Lecture 18: Excel, PDF J. Michael Moshell University of Central Florida Original image* by Moshell et al.

-22 - -22 -

Summary of Lecture

Emit XLS: Just a header and some tabs and newlines

Read XLS: A small (free) library of PHP code

Upload files: <form enctype="multipart/form-data">

Write PDF: A large (free) library with many capabilities

Link to other websites:

A built-in PHP capability called cURL

Page 23: 1 Media Software Design DIG 3134 Fall 2011 Lecture 18: Excel, PDF J. Michael Moshell University of Central Florida Original image* by Moshell et al.

-23 - -23 -

PROJECT 3 – Clean-Up!

If you DO NOT SEE PROJECT 3 in the

grades-ranked.xls chart

Page 24: 1 Media Software Design DIG 3134 Fall 2011 Lecture 18: Excel, PDF J. Michael Moshell University of Central Florida Original image* by Moshell et al.

-24 - -24 -

PROJECT 3 – Clean-Up!

If you DO NOT SEE PROJECT 3 in the

grades-ranked.xls chart

and if you

DID NOT GET E-MAIL FROM ME

(about your project)

Page 25: 1 Media Software Design DIG 3134 Fall 2011 Lecture 18: Excel, PDF J. Michael Moshell University of Central Florida Original image* by Moshell et al.

-25 - -25 -

PROJECT 3 – Clean-Up!

If you DO NOT SEE PROJECT 3 in the

grades-ranked.xls chart

and if you

DID NOT GET E-MAIL FROM ME

(about your project)

We must fix it TODAY or it's gone ---

time to focus on Project 4 and Final Exam