简体   繁体   中英

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

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)."

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.

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

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

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.

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

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM