How to upload one excel file and display all its rows and columns on the web page via php

时间:2022-05-03 20:24:20

I am writing a code for uploading one excel file.And displaying its full content on a webpage.But whenever user clicks on the submit button it shows the error- "Your File Type is:application/vnd.openxmlformats-officedocument.spreadsheetml.sheet File type must be text(.txt) or msword(.doc)."

我正在编写一个用于上传一个excel文件的代码。并在网页上显示其完整内容。但是每当用户点击提交按钮时,它就会显示错误 - “您的文件类型是:application / vnd.openxmlformats-officedocument.spreadsheetml.sheet文件类型必须是文本(.txt)或msword(.doc)。“

Below is my code.

以下是我的代码。

 <?php
 if( isset($_POST['submit1'])) {
 // $_FILES is the array auto filled when you upload a file and submit a form.
 $userfile_name = $_FILES['file1']['name']; // file name
 $userfile_tmp  = $_FILES['file1']['tmp_name']; // actual location
 $userfile_size  = $_FILES['file1']['size']; // file size
 $userfile_type  = $_FILES['file1']['type']; 
 $userfile_error  = $_FILES['file1']['error']; // any error!. get from here

 // Content uploading.
  $file_data = '';
 if ( !empty($userfile_tmp))
 {
    $file_data=base64_encode(@fread(fopen($userfile_tmp,'r'),  filesize($userfile_tmp)));

 }

 switch (true)
         {
       // Check error if any
           case ($userfile_error == UPLOAD_ERR_NO_FILE):
        case empty($file_data):
       echo 'You must select a document to upload before you can save this page.';
        exit;
        break;
       case ($userfile_error == UPLOAD_ERR_INI_SIZE):
      case ($userfile_error == UPLOAD_ERR_FORM_SIZE):
     echo 'The document you have attempted to upload is too large.';
   break;

   case ($userfile_error == UPLOAD_ERR_PARTIAL):
  echo 'An error occured while trying to recieve the file. Please try again.';
       break;

        }

     if( !empty($userfile_tmp))
       {
     // only MS office and text file is accepted.
       if( !(($userfile_type=="application/msword") || ($userfile_type=="text/plain") ||       ($userfile_type=="application/vnd.ms-excel")) )
       {echo 'Your File Type is:'. $userfile_type;
      echo '<br>File type must be text(.txt) or msword(.doc).';

       exit;
       }
     }
     echo filesize($userfile_tmp);
    } 
   ?>
     <HTML>
     <HEAD>
    <TITLE> PHP File Upload Script </TITLE>

    </HEAD>
   <BODY>
   <form name="profile" method="POST" action="<?php echo $_SERVER['PHP_SELF'] ?>"   target="_self" enctype="multipart/form-data" >
  <P align ="center"><input type="hidden" name="MAX_FILE_SIZE" value="1000000">

 <input name="file1" type="file" accept="application/vnd.openxmlformats-     officedocument.spreadsheetml.sheet" />

<input type="submit" name="submit1" value="Submit" />
</P>

</form>

</BODY>
</HTML>

Please help . Thank you in advance.

请帮忙 。先感谢您。

1 个解决方案

#1


0  

You need to add following in your if condition as well because your are checking for application/vnd.ms-excel and application/msword but file is having its header different as

您还需要在if条件中添加以下内容,因为您正在检查application / vnd.ms-excel和application / msword但是文件的标题不同于

"application/vnd.openxmlformats-officedocument.spreadsheetml.sheetyour" So if you add this inside if like

“application / vnd.openxmlformats-officedocument.spreadsheetml.sheetyour”所以如果你在里面添加这个如果喜欢

if(($userfile_type=="application/vnd.openxmlformats-officedocument.spreadsheetml.sheetyour")  || ($userfile_type=="application/msword") || ($userfile_type=="text/plain") ||   
 ($userfile_type=="application/vnd.ms-excel")){
 // code
 }

Because server will interpret the file type based on headers it receives.

因为服务器将根据收到的标头解释文件类型。

If you want to show Excel file contents on your page then you should think of using PHPExcel. It is very easy to use.

如果要在页面上显示Excel文件内容,则应考虑使用PHPExcel。这是非常容易使用。

Link: https://phpexcel.codeplex.com/

Examples: https://phpexcel.codeplex.com/wikipage?title=Examples&referringTitle=Home

#1


0  

You need to add following in your if condition as well because your are checking for application/vnd.ms-excel and application/msword but file is having its header different as

您还需要在if条件中添加以下内容,因为您正在检查application / vnd.ms-excel和application / msword但是文件的标题不同于

"application/vnd.openxmlformats-officedocument.spreadsheetml.sheetyour" So if you add this inside if like

“application / vnd.openxmlformats-officedocument.spreadsheetml.sheetyour”所以如果你在里面添加这个如果喜欢

if(($userfile_type=="application/vnd.openxmlformats-officedocument.spreadsheetml.sheetyour")  || ($userfile_type=="application/msword") || ($userfile_type=="text/plain") ||   
 ($userfile_type=="application/vnd.ms-excel")){
 // code
 }

Because server will interpret the file type based on headers it receives.

因为服务器将根据收到的标头解释文件类型。

If you want to show Excel file contents on your page then you should think of using PHPExcel. It is very easy to use.

如果要在页面上显示Excel文件内容,则应考虑使用PHPExcel。这是非常容易使用。

Link: https://phpexcel.codeplex.com/

Examples: https://phpexcel.codeplex.com/wikipage?title=Examples&referringTitle=Home