public function finishExport() { include_once JPATH_SITE . '/components/com_acctexp/lib/ods-php/ods.php'; $ods = newOds(); $ofs = 0; if (!empty($this->description) && !empty($this->sum)) { $ofs++; foreach ($this->description as $cid => $cell) { $ods->addCell(0, $ofs, $cid, htmlentities($cell), 'string'); } } foreach ($this->lines as $line) { $ofs++; foreach ($line as $cid => $cell) { $ods->addCell(0, $ofs, $cid, htmlentities($cell), 'string'); } } if (!empty($this->sum)) { $ofs++; foreach ($this->sum as $cid => $cell) { $ods->addCell(0, $ofs, $cid, htmlentities($cell), 'string'); } } $fname = 'aecexport_' . urlencode(stripslashes($this->name)) . '_' . date('Y_m_d', (int) gmdate('U')); $fpath = '/tmp/' . $fname . '.' . $this->params['export_method']; saveOds($ods, $fpath); $handle = fopen($fpath, "r"); echo fread($handle, filesize($fpath)); exit; }
function openoffice($tables) { // http://www.ibm.com/developerworks/web/library/wa-odf/index.html?ca=drs-#list10 include '../dbplumber/thirdparty/ods-php-0.1rc1/ods.php'; //include the class and wrappers $rawsheetcontent = '<?xml version="1.0" encoding="UTF-8"?> <office:document-content xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:ooo="http://openoffice.org/2004/office" xmlns:ooow="http://openoffice.org/2004/writer" xmlns:oooc="http://openoffice.org/2004/calc" xmlns:dom="http://www.w3.org/2001/xml-events" xmlns:xforms="http://www.w3.org/2002/xforms" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" office:version="1.0"><office:scripts/><office:font-face-decls><style:font-face style:name="Liberation Sans" svg:font-family="'Liberation Sans'" style:font-family-generic="swiss" style:font-pitch="variable"/><style:font-face style:name="DejaVu Sans" svg:font-family="'DejaVu Sans'" style:font-family-generic="system" style:font-pitch="variable"/></office:font-face-decls><office:automatic-styles><style:style style:name="co1" style:family="table-column"><style:table-column-properties fo:break-before="auto" style:column-width="2.267cm"/></style:style><style:style style:name="ro1" style:family="table-row"><style:table-row-properties style:row-height="0.453cm" fo:break-before="auto" style:use-optimal-row-height="true"/></style:style><style:style style:name="ta1" style:family="table" style:master-page-name="Default"><style:table-properties table:display="true" style:writing-mode="lr-tb"/></style:style></office:automatic-styles><office:body><office:spreadsheet></office:spreadsheet></office:body></office:document-content>'; $sheet = new ods(); $sheet->parse($rawsheetcontent); foreach ($tables as $table) { $rowno = 0; foreach (DB::query("SELECT * FROM \"{$table}\"") as $row) { $colno = 0; foreach ($row as $key => $val) { if ($rowno == 0) { $sheet->addCell($table, 0, $colno, $key, 'string'); } $sheet->addCell($table, $rowno + 1, $colno, Convert::raw2xml($val), is_numeric($val) ? 'float' : 'string'); $colno++; } $rowno++; } if (!$rowno) { $colno = 0; foreach (DB::fieldList($table) as $name => $spec) { $sheet->addCell($table, 0, $colno++, $name, 'string'); } } } saveOds($sheet, TEMP_FOLDER . '/new.ods'); //save the object to a ods file $output = file_get_contents(TEMP_FOLDER . '/new.ods'); unlink(TEMP_FOLDER . '/new.ods'); return $output; }
function result_as_ods($result, $mycolumnname, $filebase) { $myresult = $result; $cache = APACHE_CACHE_DIR; if (!file_exists("/tmp/" . $cache)) { mkdir("/tmp/" . $cache, 0750); } $odsfile = $filebase . ".ods"; $workbook = newOds(); $sheet = 0; $rowctr = 0; $colctr = 0; foreach ($mycolumnname as $header) { $workbook->addCell($sheet, $rowctr, $colctr, "{$header}", "string"); $colctr++; } while ($myresult->fetchInto($row)) { $rowctr++; $colctr = 0; $keys = array_keys($row); foreach ($keys as $key) { $data = array_shift($row); $type = "string"; # regex found on http://www.regular-expressions.info/floatingpoint.html if (preg_match('/^[-+]?[0-9]*\\.?[0-9]+([eE][-+]?[0-9]+)?$/', $data)) { $type = "float"; } $workbook->addCell($sheet, $rowctr, $colctr, htmlspecialchars("{$data}"), $type); $colctr++; } } saveOds($workbook, "/tmp/" . $cache . $odsfile); echo "<P>ODF file: <A href=\"" . $cache . rawurlencode($odsfile) . "\">" . $odsfile . "</A></P>\n"; }
<?php /* ods-php a library to read and write ods files from php. This library has been forked from eyeOS project and licended under the LGPL3 terms available at: http://www.gnu.org/licenses/lgpl-3.0.txt (relicenced with permission of the copyright holders) Copyright: Juan Lao Tebar (juanlao@eyeos.org) and Jose Carlos Norte (jose@eyeos.org) - 2008 https://sourceforge.net/projects/ods-php/ */ include "ods.php"; //include the class and wrappers $object = newOds(); //create a new ods file $object->addCell(0, 0, 0, 1, 'float'); //add a cell to sheet 0, row 0, cell 0, with value 1 and type float $object->addCell(0, 0, 1, 2, 'float'); //add a cell to sheet 0, row 0, cell 1, with value 1 and type float $object->addCell(0, 1, 0, 1, 'float'); //add a cell to sheet 0, row 1, cell 0, with value 1 and type float $object->addCell(0, 1, 1, 2, 'float'); //add a cell to sheet 0, row 1, cell 1, with value 1 and type float saveOds($object, '/tmp/new.ods'); //save the object to a ods file $object = parseOds('/tmp/new.ods'); //load the ods file $object->editCell(0, 0, 0, 25); //change the value for the cell in sheet 0, row 0, cell 0, to 25 saveOds($object, '/tmp/new2.ods'); //save with other name
function generateBook($book, $format) { $this->book= $book; if (!$book->bookId) $bookName= "spreadsheet-1"; else $bookName= "spreadsheet-$book->bookId"; $filename= "default-".rand(1,9999); /*SET SPREADSHEET PROPERTIES*/ if ($format!= "ods"){ $this->objPHPExcel = new PHPExcel(); $this->objPHPExcel->getProperties()->setCreator("Maarten Balliauw"); $this->objPHPExcel->getProperties()->setLastModifiedBy("Maarten Balliauw"); $this->objPHPExcel->getProperties()->setTitle("Test Document"); $this->objPHPExcel->getProperties()->setSubject("Test Document"); $this->objPHPExcel->getProperties()->setDescription("Test document generated using PHP classes."); $this->objPHPExcel->getProperties()->setKeywords("office php"); $this->objPHPExcel->getProperties()->setCategory("Test result file"); } else{ $this->objPHPOds= new PHPOds(); //create a new ods file } /*GENERATE THE SHEETS*/ $this->_generateSheets($format); global $cnf; $currentDir= $cnf['path']['Temp']."/"; // Get the Storage Folder switch($format){ case "ods": saveOds($this->objPHPOds,"$filename.$format"); //save the object to a ods file break; case "pdf": $objWriter1 = new PHPExcel_Writer_PDF($this->objPHPExcel); $objWriter1->writeAllSheets(); $objWriter1->setTempDir($currentDir); $objWriter1->save("$filename.$format"); //save the object to a pdf file break; case "xls": $objWriter2 = new PHPExcel_Writer_Excel5($this->objPHPExcel); $objWriter2->setTempDir($currentDir); $objWriter2->save("$filename.$format"); //save the object to a xls file break; case "xlsx": $objWriter3 = PHPExcel_IOFactory::createWriter($this->objPHPExcel, 'Excel2007'); $objWriter3->save($currentDir."$filename.$format"); //save the object to a xlsx file break; case "csv": $objWriter4 = new PHPExcel_Writer_CSV($this->objPHPExcel); //$objWriter4->setTempDir($currentDir); $objWriter4->setDelimiter(';'); $objWriter4->setEnclosure(''); $objWriter4->setLineEnding("\r\n"); $objWriter4->save("$filename.$format"); //save the object to a CSV file break; case "html": $objWriter5 = new PHPExcel_Writer_HTML($this->objPHPExcel); $objWriter5->writeAllSheets(); //$objWriter5->setTempDir($currentDir); $objWriter5->save("$filename.$format"); //save the object to a HTML file break; } if ($format != "ods") $this->_send("$filename.$format", $format, $bookName); }
function output() { $name = 'doc.ods'; $tmp = get_tmp_dir(); $uid = uniqid(); mkdir($tmp . '/' . $uid); $path = $tmp . '/' . $uid . '/' . basename('temp.ods'); saveOds($this, $path); if (isset($_SERVER['HTTP_USER_AGENT']) && strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE')) { header('Content-Type: application/force-download'); } else { header('Content-Type: application/octet-stream'); } $buffer = file_get_contents($path); header('Content-Length: ' . strlen($buffer)); header('Content-disposition: attachment; filename="' . $name . '"'); echo $buffer; unlink($path); rmdir($tmp . '/' . $uid); }
<?php /* ods-php a library to read and write ods files from php. This library has been forked from eyeOS project and licended under the LGPL3 terms available at: http://www.gnu.org/licenses/lgpl-3.0.txt (relicenced with permission of the copyright holders) Copyright: Juan Lao Tebar (juanlao@eyeos.org) and Jose Carlos Norte (jose@eyeos.org) - 2008 https://sourceforge.net/projects/ods-php/ */ include "ods.php"; //include the class and wrappers $object = newOds(); //create a new ods file $object->addCell(0, 0, 0, 1, 'float'); //add a cell to sheet 0, row 0, cell 0, with value 1 and type float $object->addCell(0, 0, 1, 2, 'float'); //add a cell to sheet 0, row 0, cell 1, with value 1 and type float $object->addCell(0, 1, 0, 1, 'float'); //add a cell to sheet 0, row 1, cell 0, with value 1 and type float $object->addCell(0, 1, 1, 2, 'float'); //add a cell to sheet 0, row 1, cell 1, with value 1 and type float saveOds($object, '/tmp/new.ods'); //save the object to a ods file $object = parseOds(dirname(__FILE__) . '/new.ods'); //load the ods file $object->editCell(0, 0, 0, 25); //change the value for the cell in sheet 0, row 0, cell 0, to 25 saveOds($object, dirname(__FILE__) . '/new2.ods'); //save with other name