1

場所から選択できるMySqlテーブルにExcelファイルのデータを挿入する必要があり、これにはSymfony、PHPExcel、およびAjaxを使用しています。テーブルにファイルアップロードボタンを作成しました。[ファイルの選択] をクリックし、ファイルを選択して [ファイルのアップロード] をクリックすると、コンソールに「読み取り用の C:\fakepath\CRS_Data.xls を開けませんでした! ファイルが存在しません」のようなエラーが表示されます。このようにここで同じ質問をたくさん読んだことがありますが、これらを読んでも問題を解決できませんでした。以下は私のコードです。だから誰かが問題の解決策を提案してください。

<script language="javascript" type="text/javascript">
$(document).ready(function() {
$('#uploadFile').click(function(e){
var file_path = document.getElementById("file").value;
    e.preventDefault();
    var urlAjax = "<?php echo URL_AJAX . '/birthPublicSearch' ?>";

   // birthPublicSearch is the module name and UploadFile is action name

        $.ajax({
            url: urlAjax + "/UploadFile",
            data:   { 
                        file_path: file_path
                    },
            async: false,
            type: "POST",
            success: function(response){
                console.log(response);
               alert("Data Uploaded Successful");
            }
        });
    });  
}); 
</script>


<table border="0" cellspacing="2" cellpadding="2">            
   <tr>
     <td bgcolor="#E6E6FA"><font color="red">Upload File</font></td>
        <td></td>
        <td bgcolor="#E6E6FA">
            <input type="file" name="file" id="file">
        </td>
   </tr>
  <tr>
    <td colspan="2" align="center" style="padding-bottom: 10px;">
      <input type="button" id="uploadFile" name="uploadFile" value="Upload File" class="btn"></input>
    </td>
  </tr>
</table>

アクションは次のように定義されます。

public function executeUploadFile(sfWebRequest $request) {

    require_once('/../Classes/PHPExcel.php');
    require_once '/../Classes/PHPExcel/IOFactory.php';

    $path=$_REQUEST['file_path'];

    // path I get is as C:\fakepath\CRS_Data.xls

    $objPHPExcel = PHPExcel_IOFactory::load($path);

    foreach ($objPHPExcel->getWorksheetIterator() as $worksheet){
        $worksheetTitle = $worksheet->getTitle();
        $highestRow = $worksheet->getHighestRow();
        $highestColumn = $worksheet->getHighestColumn();
        $highestColumnIndex = PHPExcel_Cell::columnIndexFromString($highestColumn);
    }

    //Inserting datas into db
    $i=1;
    $j=0;
    for ($row = 1; $row <= $highestRow; ++ $row) 
    {
        $val=array();
        for ($col = 0; $col < $highestColumnIndex; ++ $col) 
        {
            $cell = $worksheet->getCellByColumnAndRow($col, $row);
            $val[] = $cell->getValue();
        }

        // Insert data into mysql
        $sql="INSERT INTO tempbackuptable(`bir_le_id`,`bir_le_form_no`,)VALUES($val[0], $val[1])";
        $result=mysql_query($sql);

        $i=$i+1;
    }

    $this->setLayout(false);
    return sfView::NONE;
}
4

0 に答える 0