无法将Excel文件保存到php中的文件夹

时间:2017-05-17 01:02:46

标签: php spreadsheet-excel-writer

我正在使用excelwriter.class.php库来创建Excel文件并将数据写入其中。这是我的代码:

<?php
include("excelwriter.class.php");

$excel=new ExcelWriter("C:/wamp/www/dbpro file/one/newfile/report.xls");
if($excel==false)   
echo $excel->error;

$myArr=array("S.No.","Student nameNumber","DOB","Subject","mark");
$excel->writeLine($myArr);
?>
<html>
<head>
<script language="javascript">
function download()
{
    window.location='C:\wamp\www\dbpro file\one\newfile\report.xls';
}
</script>
</head>
<body>
<h1 align="center"><a href="javascript:void(0);"     onClick="download();">Download Excel Report</a></h1>
</body>
</html>

上面的代码是创建名为report.xlsx的Excel文件,但问题是它没有存储在给定的路径中..它存储在我的php文件存储的文件夹中

以下是我正在使用的库

<?php
 /*
 * Class is used for save the data into microsoft excel format.
 * It takes data into array or you can write data column vise.
 */
Class ExcelWriter
{

    var $fp=null;
    var $error;
    var $state="CLOSED";
    var $newRow=false;

    /*
    * @Params : $file  : file name of excel file to be created.
    * @Return : On Success Valid File Pointer to file
    *           On Failure return false  
    */

    function ExcelWriter($file="")
    {
        return $this->open($file);
    }

    /*
    * @Params : $file  : file name of excel file to be created.
    *           if you are using file name with directory i.e. test/myFile.xls
    *           then the directory must be existed on the system and have permissioned properly
    *           to write the file.
    * @Return : On Success Valid File Pointer to file
    *           On Failure return false  
    */
    function open($file)
    {
        if($this->state!="CLOSED")
        {
            $this->error="Error : Another file is opend .Close it to save the file";
            return false;
        }   

        if(!empty($file))
        {
            $this->fp=@fopen($file,"w+");
        }
        else
        {
            $this->error="Usage : New ExcelWriter('fileName')";
            return false;
        }   
        if($this->fp==false)
        {
            $this->error="Error: Unable to open/create File.You may not have permmsion to write the file.";
            return false;
        }
        $this->state="OPENED";
        fwrite($this->fp,$this->GetHeader());
        return $this->fp;
    }

    function close()
    {
        if($this->state!="OPENED")
        {
            $this->error="Error : Please open the file.";
            return false;
        }   
        if($this->newRow)
        {
            fwrite($this->fp,"</tr>");
            $this->newRow=false;
        }

        fwrite($this->fp,$this->GetFooter());
        fclose($this->fp);
        $this->state="CLOSED";
        return ;
    }
    /* @Params : Void
    *  @return : Void
    * This function write the header of Excel file.
    */

    function GetHeader()
    {
        $header = <<<EOH
            <html xmlns:o="urn:schemas-microsoft-com:office:office"
            xmlns:x="urn:schemas-microsoft-com:office:excel"
            xmlns="http://www.w3.org/TR/REC-html40">

            <head>
            <meta http-equiv=Content-Type content="text/html; charset=us-ascii">
            <meta name=ProgId content=Excel.Sheet>
            <!--[if gte mso 9]><xml>
             <o:DocumentProperties>
              <o:LastAuthor>Sriram</o:LastAuthor>
              <o:LastSaved>2005-01-02T07:46:23Z</o:LastSaved>
              <o:Version>10.2625</o:Version>
             </o:DocumentProperties>
             <o:OfficeDocumentSettings>
              <o:DownloadComponents/>
             </o:OfficeDocumentSettings>
            </xml><![endif]-->
            <style>
            <!--table
                {mso-displayed-decimal-separator:"\.";
                mso-displayed-thousand-separator:"\,";}
            @page
                {margin:1.0in .75in 1.0in .75in;
                mso-header-margin:.5in;
                mso-footer-margin:.5in;}
            tr
                {mso-height-source:auto;}
            col
                {mso-width-source:auto;}
            br
                {mso-data-placement:same-cell;}
            .style0
                {mso-number-format:General;
                text-align:general;
                vertical-align:bottom;
                white-space:nowrap;
                mso-rotate:0;
                mso-background-source:auto;
                mso-pattern:auto;
                color:windowtext;
                font-size:10.0pt;
                font-weight:400;
                font-style:normal;
                text-decoration:none;
                font-family:Arial;
                mso-generic-font-family:auto;
                mso-font-charset:0;
                border:none;
                mso-protection:locked visible;
                mso-style-name:Normal;
                mso-style-id:0;}
            td
                {mso-style-parent:style0;
                padding-top:1px;
                padding-right:1px;
                padding-left:1px;
                mso-ignore:padding;
                color:windowtext;
                font-size:10.0pt;
                font-weight:400;
                font-style:normal;
                text-decoration:none;
                font-family:Arial;
                mso-generic-font-family:auto;
                mso-font-charset:0;
                mso-number-format:General;
                text-align:general;
                vertical-align:bottom;
                border:none;
                mso-background-source:auto;
                mso-pattern:auto;
                mso-protection:locked visible;
                white-space:nowrap;
                mso-rotate:0;}
            .xl24
                {mso-style-parent:style0;
                white-space:normal;}
            -->
            </style>
            <!--[if gte mso 9]><xml>
             <x:ExcelWorkbook>
              <x:ExcelWorksheets>
               <x:ExcelWorksheet>
                <x:Name>srirmam</x:Name>
                <x:WorksheetOptions>
                 <x:Selected/>
                 <x:ProtectContents>False</x:ProtectContents>
                 <x:ProtectObjects>False</x:ProtectObjects>
                 <x:ProtectScenarios>False</x:ProtectScenarios>
                </x:WorksheetOptions>
               </x:ExcelWorksheet>
              </x:ExcelWorksheets>
              <x:WindowHeight>10005</x:WindowHeight>
              <x:WindowWidth>10005</x:WindowWidth>
              <x:WindowTopX>120</x:WindowTopX>
              <x:WindowTopY>135</x:WindowTopY>
              <x:ProtectStructure>False</x:ProtectStructure>
              <x:ProtectWindows>False</x:ProtectWindows>
             </x:ExcelWorkbook>
            </xml><![endif]-->
            </head>

            <body link=blue vlink=purple>
            <table x:str border=0 cellpadding=0 cellspacing=0 style='border collapse: collapse;table-layout:fixed;'> EOH;
        return $header;
    }

    function GetFooter()
    {
        return "</table></body></html>";
    }

    /*
    * @Params : $line_arr: An valid array 
    * @Return : Void
    */

    function writeLine($line_arr)
    {
        if($this->state!="OPENED")
        {
            $this->error="Error : Please open the file.";
            return false;
        }   
        if(!is_array($line_arr))
        {
            $this->error="Error : Argument is not valid. Supply an valid 
        Array.";
            return false;
        }
        fwrite($this->fp,"<tr>");
        foreach($line_arr as $col)
            fwrite($this->fp,"<td class=xl24 width=64 >$col</td>");
        fwrite($this->fp,"</tr>");
    }

    /*
    * @Params : Void
    * @Return : Void
    */
    function writeRow()
    {
        if($this->state!="OPENED")
        {
            $this->error="Error : Please open the file.";
            return false;
        }   
        if($this->newRow==false)
            fwrite($this->fp,"<tr>");
        else
            fwrite($this->fp,"</tr><tr>");
        $this->newRow=true; 
    }

    /*
    * @Params : $value : Column Value
    * @Return : Void
    */
    function writeCol($value)
    {
        if($this->state!="OPENED")
        {
            $this->error="Error : Please open the file.";
            return false;
        }   
        fwrite($this->fp,"<td class=xl24 width=64 >$value</td>");
    }
}
?>

2 个答案:

答案 0 :(得分:0)

在黑暗中狂野刺伤....你可以使用location.href将它发送到新位置,如果你在下载后创建文档后插入它吗?

答案 1 :(得分:0)

不要忘记调用close()

使用您的php文件删除目录中的xls文件并再次运行脚本。