30000) $s = substr($s, 0, 30000); $s2 = ''; $len = strlen($s); for($i = 0; $i < $len; $i++) { $n = ord($s[$i]); if($n == 9 || $n == 10 || $n == 13 || ($n >= 32 && $n <= 126)) { $s2 .= $s[$i]; } else if($n >= 0xE0 && $n <= 0xEF) { if($i+2 < $len) { $t1 = ord($s[$i+1]); $t2 = ord($s[$i+2]); if($t1 >= 128 && $t1 <= 191 && $t2 >= 128 && $t2 <= 191) { $s2 .= $s[$i].$s[$i+1].$s[$i+2]; $i += 2; } } } } return htmlspecialchars($s2); } //function getXlsx($titles, $widths, $list, $fn) { function getXlsxByList($titles, $widths, $list, $fn, $conv = false) { $sheets = array(array( 'titles' => $titles, 'widths' => $widths, 'list' => $list, 'sheet_name' => 'Sheet1', )); return getXlsx($sheets, $fn, $conv); } function getXlsxBySQL($titles, $widths, $sql, $fn, $conv = false) { $sheets = array(array( 'titles' => $titles, 'widths' => $widths, 'sql' => $sql, 'sheet_name' => 'Sheet1', )); return getXlsx($sheets, $fn, $conv); } function getXlsx($sheets, $fn, $conv = false) { if($sheets['list'] || $sheets['listfunc'] || $sheets['sql']) $sheets = array($sheets); $xlschars = array('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z', 'AA','AB','AC','AD','AE','AF','AG','AH','AI','AJ','AK','AL','AM','AN','AO','AP','AQ','AR','AS','AT','AU','AV','AW','AX','AY','AZ', 'BA','BB','BC','BD','BE','BF','BG','BH','BI','BJ','BK','BL','BM','BN','BO','BP','BQ','BR','BS','BT','BU','BV','BW','BX','BY','BZ', 'CA','CB','CC','CD','CE','CF','CG','CH','CI','CJ','CK','CL','CM','CN','CO','CP','CQ','CR','CS','CT','CU','CV','CW','CX','CY','CZ', 'DA','DB','DC','DD','DE','DF','DG','DH','DI','DJ','DK','DL','DM','DN','DO','DP','DQ','DR','DS','DT','DU','DV','DW','DX','DY','DZ' ); $xmlstr_1 = ''."\n".''; $xmlstr_2 = ''; $xmlstr_3 = ''."\n".''; $xmlstr_6 = ''; $xmlstr_7 = ''."\n".''; $sourceZip = "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"; if(strtolower(substr($fn, -5)) != '.xlsx') { return false; } if(substr($fn, 0, 1) != '/' && !preg_match("/^[A-Za-z]\:/", $fn)) { $fn = getcwd()."/".$fn; } if(file_exists($fn)) { @unlink($fn); if(file_exists($fn)) return false; } $root = dirname($fn); $dir = opendir($root); while($t_fn = readdir($dir)) { if($t_fn == '.' || $t_fn == '..') continue; $tmpfn = $root."/".$t_fn; if(stristr($t_fn, '.xlsxtmp')) { if(time() - filemtime($tmpfn) > 600) @unlink($tmpfn); } } closedir($dir); file_put_contents($fn, base64_decode($sourceZip)); $zip = new ZipArchive; $r = $zip->open($fn); if(!$r) { @unlink($fn); return false; } //exit; /*$cls = new ReflectionClass('REST_Controller'); foreach($cls->getProperties() as $property) { if($property->getName() == 'rest') { $property->setAccessible(true); $rest = $property->getValue($GLOBALS['CI']); die("ds"); } }*/ //exit; foreach($sheets as $sitem) { if($sitem['sql']) { /*$dbtype = ''; if($GLOBALS['CI']) {//print_r($GLOBALS['CI']);exit; try { $property = new ReflectionProperty('REST_Controller', 'rest'); $property->setAccessible(true); $rest = $property->getValue($GLOBALS['CI']); $conn_id = $rest->db->conn_id; $dbtype = 'mysqli'; } catch(Exception $e) { if($GLOBALS['CI']->db) { $conn_id = $GLOBALS['CI']->db->conn_id; $dbtype = 'mysqli'; } } } if(!$dbtype) { if(is_file("/home/www/ftdcdb.inc.php")) require("/home/www/ftdcdb.inc.php"); else require("d:/web/ftdcdb.inc.php"); $dbtype = 'mysql'; $hinfo = @mysql_get_host_info(); if($hinfo && stristr($hinfo, $ftdcdb_host)) { $conn_id = ''; } else { $conn_id = mysql_connect($ftdcdb_host, $ftdcdb_username, $ftdcdb_password); mysql_select_db($ftdcdb_database); mysql_query("set names utf8"); } }*/ $dbtype = 'mysql'; require("/home/www/ftdcdb.inc.php"); $conn_id = mysql_connect($ftdcdb_host, $ftdcdb_username, $ftdcdb_password); mysql_select_db($ftdcdb_database); mysql_query("set names utf8"); break; } } $workbook = ''; $rels = ''; foreach($sheets as $n => $sitem) { $n1 = $n + 1; $sheet_name = $sitem['sheet_name']; if(!$sheet_name) $sheet_name = 'Sheet'.$n1; $workbook .= ''; $rels .= ''; } $workbook = $xmlstr_5.$workbook.$xmlstr_6; $rels = $xmlstr_7.$rels.''; $zip->addFromString('xl/workbook.xml', $workbook); $zip->addFromString('xl/_rels/workbook.xml.rels', $rels); $strN = 1; $xmlstr2 = $xmlstr_3.'>'; $fn2 = $root."/".md5(microtime()."xml2").".xlsxtmp"; $fileList = array($fn2); foreach($sheets as $sn => $sitem) { $titles = $sitem['titles']; $widths = $sitem['widths']; $list = $sitem['list']; $listfunc = $sitem['listfunc']; $sql = $sitem['sql']; $issql = false; $func = $sitem['func']; if($sql) $issql = true; else { if($listfunc) $list = $listfunc(); } $fn1 = $root."/".md5(microtime().$fn1).".xlsxtmp"; $fileList[] = $fn1; if($issql) { if($dbtype == 'mysqli') { $rs = mysqli_query($conn_id, $sql); } else { if($conn_id) $rs = mysql_unbuffered_query($sql, $conn_id); else $rs = mysql_unbuffered_query($sql); } if(!$rs) { return false; } $fields = array(); $funcname = ($dbtype == 'mysqli'?"mysqli_fetch_field":"mysql_fetch_field"); while($row = $funcname($rs)) { $fields[] = $row->name; } if(!$titles) { $titles = $fields; } } $colnum = count($titles); $colstr = ''; foreach($titles as $n => $title) { $width = 15; if($widths && $widths[$n]) $width = $widths[$n]; $colstr .= ' '; } $xmlstr = $xmlstr_1.$colstr.''; $xmlstr .= ''; foreach($titles as $n => $title) { $idx = $strN; $strN++; $xmlstr2 .= ''.xlsx_filter_chr($title, $conv).''; $xmlstr .= ''.$idx.''; } $xmlstr .= ''; $n1 = -1; while(1) { $n1++; if($issql) { $funcname = ($dbtype == 'mysqli'?"mysqli_fetch_row":"mysql_fetch_row"); $item = $funcname($rs); if(!$item) break; } else { if($n1 >= count($list)) break; $item = $list[$n1]; } if($func) { $row2 = array(); if($fields) { foreach($item as $k => $v) { $row2[$fields[$k]] = $v; } } $item = $func($item, $row2); } $xmlstr .= ''; foreach($item as $n2 => $value) { $value = $value.''; if($value == '') { $xmlstr .= '0'; continue; } if(is_numeric($value)) { if(strstr($value, ".")) { if(substr($value, 0, 1) == '.') $value = "0".$value; $xmlstr .= ''.$value.''; continue; } else { if(substr($value, 0, 1) != '0' && strlen($value) <= 10) { $xmlstr .= ''.$value.''; continue; } } } $idx = $strN; $strN++; $xmlstr2 .= ''.xlsx_filter_chr($value, $conv).''."\n"; $xmlstr .= ''.$idx.''; } $xmlstr .= ''; if(strlen($xmlstr) > 50000) { file_put_contents($fn1, $xmlstr, FILE_APPEND); $xmlstr = ''; } if(strlen($xmlstr2) > 50000) { file_put_contents($fn2, $xmlstr2, FILE_APPEND); $xmlstr2 = ''; } } $xmlstr .= $xmlstr_2; file_put_contents($fn1, $xmlstr, FILE_APPEND); $zip->addFile($fn1, 'xl/worksheets/sheet'.($sn+1).'.xml'); } $xmlstr2 .= ''; file_put_contents($fn2, $xmlstr2, FILE_APPEND); $zip->addFile($fn2, 'xl/sharedStrings.xml'); $zip->close(); foreach($fileList as $fn) @unlink($fn); return true; }