Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用php保护列后如何导出Excel文件_Php_Mysql_Export To Excel - Fatal编程技术网

使用php保护列后如何导出Excel文件

使用php保护列后如何导出Excel文件,php,mysql,export-to-excel,Php,Mysql,Export To Excel,是否可以在导出excel文件时保护其中的几列,这样用户就不会意外地对这些列进行任何更改 这里是我导出excel文件的代码。我需要保护要保护的列1、2和4。需要指导吗- require_once('dbconfig.php'); $DB_TBLName = "admission"; $filename = "excelfilename"; //File Name /*******YOU DO NOT NEED TO EDIT ANYTHING BELOW THIS LINE****

是否可以在导出excel文件时保护其中的几列,这样用户就不会意外地对这些列进行任何更改

这里是我导出excel文件的代码。我需要保护要保护的列1、2和4。需要指导吗-

require_once('dbconfig.php');
$DB_TBLName = "admission";
$filename = "excelfilename";         //File Name
/*******YOU DO NOT NEED TO EDIT ANYTHING BELOW THIS LINE*******/
//create MySQL connection
//$sql = "Select * from $DB_TBLName where branch_id = '$branch' AND addmission_date between '$date1' AND '$date2'";
$sql = "select * from admission where $search branch_id = '$branch'";

//echo $sql;


//execute query
$result = mysql_query($sql) or die("Couldn't execute query:<br>" . mysql_error(). "<br>" . mysql_errno());
$file_ending = "csv";
//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";
    }
?>

提前感谢各位,等待建议和回复

这不是Excel文件,而是CSV文件。你把它命名为.XLS,为了微软的全能,它做了你所期望的


但在CSV文件中,您不能进一步说明excel应该如何处理列。您需要更智能地转换为纯Excel文件,如。

csv代表逗号分隔的值。Excel可以读取这些,但它不是Excel文件。逗号分隔的值只能用作值。如果要保护Excel文件中的列,则必须实际编写一个真正的Excel文件,即BIFF.xls或OfficeOpenXML.xlsx格式。。。使用一个能够编写真正Excel文件的PHP库,例如@Mark Baker$file\u ending=csv;但看这行标题内容的处置:依恋;filename=$filename.xls;我能够以.xls格式导出文件。但不知道如何使用代码保护列。您无法保护csv格式文件中的单元格,只需更改文件扩展名并设置标题,假装它是Excel文件,而不会自动将其变为Excel文件。。。。您正在创建的文件仍然只是一个csv文件file@MarkBaker感谢Mark为我指明了正确的方向,那么我必须先学习如何将MySQL数据导出到MS Excel,然后只有我才能使用您推荐的工具,即PHPExcel。如果我仍然错了,那么需要您的指导,这将是可观的。请看我提到这行检查,因为我计划为CSV文件$file_ending=CSV;但看这行标题内容的处置:依恋;filename=$filename.xls;我能够以.xls格式导出文件。但不知道如何使用代码保护列。无论您在filname上的结尾是什么,您的本地机器都配置为在所有.xls上启动Excel。Excel将CSV视为电子表格。实际上,格式是通过在while循环中将行转换为字符分隔值的方式给出的。这是纯CSV,它不会通过重命名来获取Excel文件。