Итак, мой текущий код работает на 100%, файл создан и открыт в excel. Но после открытия есть несколько ошибок, которые нужно щелкнуть, чтобы открыть файл. Они заключаются в следующем:Созданный PHP лист Excel создает ошибки при открытии
The file format and extension of 'address-book.xls' don't match. The file could be corrupted or unsafe. Unless you trust its source, don't open it. Do you want to open it anyway?
Тогда:
Excel has detected that 'address-book.xls is a SYLK file, but cannot load it. Either the file has errors or it is not a SYLK file format. Click OK to try to open the file in a different format.
Тогда, наконец:
The file format and extension of 'address-book.xls' don't match. The file could be corrupted or unsafe. Unless you trust its source, don't open it. Do you want to open it anyway?
После того, что он неохотно открывает. Вот код, который его создает. Любая помощь в форматировании электронной таблицы, например, если ячейки будут достаточно большими для контента, будет отличным. Но избавление от ошибок при открытии - мой приоритет. ?
<?PHP
require_once('conn.php');
$colnames = array(
'id' => "ID",
'Title' => "Title",
'First_Name' => "First name",
'Last_Name' => "Last Name",
'Address' => "Address",
'City' => "City",
'State' => "State",
'Zipcode' => "Zipcode",
'Home_Phone' => "Home Phone",
'Cell_Phone' => "Cell Phone",
'Email1' => "Email #1",
'Email2' => "Email #2"
);
function map_colnames($input){
global $colnames;
return isset($colnames[$input]) ? $colnames[$input] : $input;
}
function cleanData(&$str){
$str = preg_replace("/\t/", "\\t", $str);
$str = preg_replace("/\r?\n/", "\\n", $str);
if(strstr($str, '"')) $str = '"' . str_replace('"', '""', $str) . '"';
}
$filename = "address-book";
header("Content-type: application/octet-stream");
header("Content-Disposition: attachment; filename=".$filename.".xls");
header("Pragma: no-cache");
header("Expires: 0");
$flag = false;
$sql = "SELECT * FROM ".$sDB_table." ORDER BY Last_Name";
$query = $sDBConn -> prepare($sql);
$query -> execute();
while(false !== ($row = $query->fetch(PDO::FETCH_ASSOC))) {
if(!$flag){
$firstline = array_map(__NAMESPACE__ . '\map_colnames', array_keys($row));
echo implode("\t", $firstline) . "\r\n";
$flag = true;
}
array_walk($row, __NAMESPACE__ . '\cleanData');
echo implode("\t", array_values($row)) . "\r\n";
}
exit;
>
PHPExcel Ошибка:
$colnames = array("Title","First name","Last Name","Address","City","State","Zipcode","Home Phone","Cell Phone","Email #1","Email #2");
$col = 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');
// Add Headers
for($i=0;$i<count($colnames);$i++){
$objPHPExcel->setActiveSheetIndex(0)
->setCellValue($col[$i]."1", $colnames[$i]);
}
$sql = "SELECT * FROM ".$sDB_table." ORDER BY Last_Name";
$query = $sDBConn -> prepare($sql);
$query -> execute();
$rownum = 1;
//Add Content
while(false !== ($row = $query->fetch(PDO::FETCH_ASSOC))) {
$rownum++;
for($i=0;$i<count($row);$i++){
$objPHPExcel->setActiveSheetIndex(0)
->setCellValue($col[$i]."".$rownum, $row[$i]);
}
}
ошибка происходит, когда он попадает в то время как заявление, если я возьму эту часть, она работает.
Если вы хотите, чтобы дать ему расширение 'xls', то Excel будет жаловаться, если это что-то другое, чем BIFF-формате; лично я предпочитаю «xlsx» с использованием формата OfficeOpenXML ... OfficeOpenXML был форматом MS Excel по умолчанию за последние 9 лет. –
Хорошо, я попытаюсь реализовать это, любой шанс показать вам, как мои измененные заголовки будут выглядеть, если Я должен был изменить его на xlsx? –
Вам понравится, если вы захотите создать формат 'xlsb', вы не найдете никаких библиотек, которые могут вам помочь –