Экспорт данных MySQL в Excel дает ошибки

При экспорте данных в Excel с использованием PHP они экспортируются, но я получаю следующие сообщения об ошибках:

  1. «Формат файла и расширение« database.xls »не совпадают. Файл может быть поврежден или небезопасен. Если вы не доверяете его источнику, не открывайте его. Вы все равно хотите его открыть?»
  2. «Excel обнаружил, что« database.xls »является файлом SYLK, но не может загрузить его. Либо файл содержит ошибки, либо это не файл формата SYLK. Нажмите« ОК », чтобы открыть его в другом формате».

После нескольких нажатий кнопки ОК он открывается, но я хотел бы знать, есть ли простой способ исправить это.

Это код (использовал Джон Питер код):

<?php
//db connection data
//create MySQL connection
$sql = "Select * from $DB_TBLName";
$Connect = @mysql_connect($DB_Server, $DB_Username, $DB_Password) or die("Couldn't connect to       MySQL:<br>" . mysql_error() . "<br>" . mysql_errno());
//select database
$Db = @mysql_select_db($DB_DBName, $Connect) or die("Couldn't select database:<br>" .     mysql_error(). "<br>" . mysql_errno());
//execute query
$result = @mysql_query($sql,$Connect) or die("Couldn't execute query:<br>" . mysql_error(). "    <br>" . mysql_errno());
$file_ending = "xls";
//header info for browser
header("Content-Type: application/xls");
header("Content-Disposition: attachment; filename=$filename.xls");
header("Pragma: no-cache");
header("Expires: 0");
/*******Start of Formatting for Excel*******/
//define separator (defines columns in excel & tabs in word)
$sep = "\t"; //tabbed character
//start of printing column names as names of MySQL fields
for ($i = 0; $i < mysql_num_fields($result); $i++) {
echo mysql_field_name($result,$i) . "\t";
}
print("\n");
//end of printing column names
//start while loop to get data
while($row = mysql_fetch_row($result))
{
$schema_insert = "";
for($j=0; $j<mysql_num_fields($result);$j++)
{
if(!isset($row[$j]))
$schema_insert .= "NULL".$sep;
elseif ($row[$j] != "")
$schema_insert .= "$row[$j]".$sep;
else
$schema_insert .= "".$sep;
}
$schema_insert = str_replace($sep."$", "", $schema_insert);
$schema_insert = preg_replace("/\r\n|\n\r|\n|\r/", " ", $schema_insert);
$schema_insert .= "\t";
print(trim($schema_insert));
print "\n";
}
?>

1

Решение

Эти ошибки не связаны с языком программирования, используемым для создания файла. Обе эти ошибки вызваны одной ошибкой в ​​MS Excel.
MSDN:

При попытке открыть файл с текстовой переменной или переменной запятой (CSV) вы получаете следующее сообщение об ошибке:

SYLK: File format is not valid

Эта проблема возникает, когда вы открываете текстовый или CSV-файл, и первые два символа файла — это буквы ID (заглавные).

Для получения полной информации см. https://support.microsoft.com/en-in/help/215591/-sylk-file-format-is-not-valid-error-message-when-you-open-a-file-in-e

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]