在Excel中导出数据,然后使用PHP从Excel导入。 DB是MySQL

– 我有一些表格,我想用excel格式导出。 这一步相当于用户inputsearch条件,所有匹配的行将被导出到Excel文件中。

– 用户对excel文件进​​行更改。 添加或更新行。

– 用户上传文件,所有更新的行在数据库中得到更新,所有添加的行被添加到数据库中。

所有这一切,我想在PHP和它使用的数据库是MySQL。 服务器正在运行Linux(没有COM!)

我有导出和导入部分,我上面解释了单独做。

我正在使用PHPExcelReader读取文件并保存。 但是,这需要用户先下载模板,从导出的Excel中复制数据并将其粘贴到模板中。

对于导出,我只是创build一个简单的HTML表,愚弄浏览器,它是一个Excel! Excel会在保存该文件的同时打开HTML表格,但当然,它会改变格式并使之成为有效的Excel文件。

请提出一些想法,我怎样才能使它工作? :/

谢谢…我非常感谢你的帮助。

我想build议你PHPExcel库。

http://phpexcel.codeplex.com/

你可以做导入,导出,pdf等。我认为这是一个伟大的图书馆。

**

  • 出口目的

**

<?php mysql_connect("localhost","root",""); mysql_select_db("school"); ?> <html> <head> <script type="text/javascript" src="../js/exp_stdsub.js"></script> </head> <hr /> <u><h3>Export your Data here</h3></u> <form action="" method="post"> <select name="expstd" id="expstd" onclick="return expsubjs(this.value);"> <option>Select Standared</option> <?php $exe_sel_std = mysql_query("SELECT * from s_standared"); while($r_sel_std = mysql_fetch_array($exe_sel_std)){ $sel_stdid = $r_sel_std['std_id']; $sel_std = $r_sel_std['std']; ?> <option value="<?php echo $sel_stdid; ?>"><?php echo $sel_std; ?></option> <?php } ?> </select></td> <input type="submit" class="btn btn-green" name="exp_stdque" value="Export Standardwise Question"> </form> </table> <?php //EDIT YOUR MySQL Connection Info: $DB_Server = "localhost"; //your MySQL Server $DB_Username = "root"; //your MySQL User Name $DB_Password = ""; //your MySQL Password $DB_DBName = "school"; //your MySQL Database Name $DB_TBLName = "s_question"; //your MySQL Table Name if(isset($_POST['exp_stdque'])) { $exstdid = $_POST['expstd']; //$DB_TBLName, $DB_DBName, may also be commented out & passed to the browser //as parameters in a query string, so that this code may be easily reused for //any MySQL table or any MySQL database on your server //DEFINE SQL QUERY: //edit this to suit your needs $sql = "Select * from $DB_TBLName WHERE std_id = $exstdid"; //Optional: print out title to top of Excel or Word file with Timestamp //for when file was generated: //set $Use_Titel = 1 to generate title, 0 not to use title $Use_Title = 1; //define date for title: EDIT this to create the time-format you need $now_date = DATE('mdY H:i'); //define title for .doc or .xls file: EDIT this if you want $title = "Dump For Table $DB_TBLName from Database $DB_DBName on $now_date"; /* Leave the connection info below as it is: just edit the above. (Editing of code past this point recommended only for advanced users.) */ //create MySQL connection $Connect = @MYSQL_CONNECT($DB_Server, $DB_Username, $DB_Password) or DIE("Couldn't connect to MySQL:<br>" . MYSQL_ERROR() . "<br>" . MYSQL_ERRNO()); //select database $Db = @MYSQL_SELECT_DB($DB_DBName, $Connect) or DIE("Couldn't select database:<br>" . MYSQL_ERROR(). "<br>" . MYSQL_ERRNO()); //execute query $result = @MYSQL_QUERY($sql,$Connect) or DIE("Couldn't execute query:<br>" . MYSQL_ERROR(). "<br>" . MYSQL_ERRNO()); //if this parameter is included ($w=1), file returned will be in word format ('.doc') //if parameter is not included, file returned will be in excel format ('.xls') IF (ISSET($w) && ($w==1)) { $file_type = "msword"; $file_ending = "doc"; }ELSE { $file_type = "vnd.ms-excel"; $file_ending = "xls"; } //header info for browser: determines file type ('.doc' or '.xls') HEADER("Content-Type: application/$file_type"); HEADER("Content-Disposition: attachment; filename=database_dump.$file_ending"); HEADER("Pragma: no-cache"); HEADER("Expires: 0"); /* Start of Formatting for Word or Excel */ IF (ISSET($w) && ($w==1)) //check for $w again { /* FORMATTING FOR WORD DOCUMENTS ('.doc') */ //create title with timestamp: IF ($Use_Title == 1) { ECHO("$title\n\n"); } //define separator (defines columns in excel & tabs in word) $sep = "\n"; //new line character WHILE($row = MYSQL_FETCH_ROW($result)) { //set_time_limit(60); // HaRa $schema_insert = ""; FOR($j=0; $j<mysql_num_fields($result);$j++) { //define field names $field_name = MYSQL_FIELD_NAME($result,$j); //will show name of fields $schema_insert .= "$field_name:\t"; 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 .= "\t"; PRINT(TRIM($schema_insert)); //end of each mysql row //creates line to separate data from each MySQL table row PRINT "\n----------------------------------------------------\n"; } }ELSE{ /* FORMATTING FOR EXCEL DOCUMENTS ('.xls') */ //create title with timestamp: IF ($Use_Title == 1) { ECHO("$title\n"); } //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)) { //set_time_limit(60); // HaRa $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); //following fix suggested by Josue (thanks, Josue!) //this corrects output in excel when table fields contain \n or \r //these two characters are now replaced with a space $schema_insert = PREG_REPLACE("/\r\n|\n\r|\n|\r/", " ", $schema_insert); $schema_insert .= "\t"; PRINT(TRIM($schema_insert)); PRINT "\n"; } } } ?> 

IMPORTING FROM EXCEL INTO MySQL USING PHP

 <table> <form enctype="multipart/form-data" action="" method="post"> <input type="hidden" name="MAX_FILE_SIZE" value="2000000" /> <tr> <td><h5><b>Select Standared</b></h5></td> <td><select name="chap_sel_std" id="chap_sel_std"> <option>Select Standared</option> <?php $exe_sel_std = mysql_query("SELECT * from s_standared"); while($r_sel_std = mysql_fetch_array($exe_sel_std)){ $sel_stdid = $r_sel_std['std_id']; $sel_std = $r_sel_std['std'];?> <option value="<?php echo $sel_stdid; ?>"><?php echo $sel_std;?></option> <?php } ?> </select></td> </tr> <tr> <td><h5><b>Select Font</b></h5></td> <td><select name="sel_f_gn_que"> <option>Select Font</option> <?php $xf = mysql_query("SELECT * from s_font"); while($rquef = mysql_fetch_array($xf)){ $f_id = $rquef['f_id']; $f_name = $rquef['f_name']; ?> <option value="<?php echo $f_id; ?>"><?php echo $f_name; }?> </option> </select></td> </tr> <tr> <td><h5><b>Upload Question<h5><b></td> <td> <input type="file" name="file" id="file" class="btn"> </td> </tr> <tr> <td></td> <td colspan="2"><input type="submit" class="btn btn-green big" name="add_que" value="Add Questions"></td> <td><input type="submit" name="saveandexit" class="" value="Finish" onclick="close();"></td> </tr> </form> </table> </div> <?php $data = array(); //$db =& DB::connect("mysql://root@localhost/names", array()); //if (PEAR::isError($db)) { die($db->getMessage()); } //quetype difficulty standard subject chap que marks function add_person($quetype,$dif, $subject,$chap_name,$que,$marks) { global $data, $db; //$sth = $db->prepare( "INSERT INTO names VALUES( 0, ?, ?, ?, ? )" ); // $db->execute( $sth, array( $first, $middle, $last, $email ) ); $data []= array( 'quetype' => $quetype, 'difficulty' => $dif, 'subject' => $subject, 'chap' => $chap_name, 'que' => $que, //'ans' => $ans, 'marks' => $marks ); } if(!isset($_FILES['file']['tmp_name'])){ echo ""; }elseif($_FILES['file']['tmp_name']) { $dom = DOMDocument::load( $_FILES['file']['tmp_name'] ); $rows = $dom->getElementsByTagName( 'Row' ); $first_row = true; foreach ($rows as $row) { if ( !$first_row ) { $quetype = ""; $dif = ""; $subject = ""; $chap_name = ""; $que = ""; //$ans = ""; $marks = ""; $index = 1; $cells = $row->getElementsByTagName( 'Cell' ); foreach( $cells as $cell ) { $ind = $cell->getAttribute( 'Index' ); if ( $ind != null ) $index = $ind; if ( $index == 1 ) $quetype = $cell->nodeValue; if ( $index == 2 ) $dif = $cell->nodeValue; if ( $index == 4 ) $subject = $cell->nodeValue; if ( $index == 6 ) $chap_name = $cell->nodeValue; if ( $index == 8) $que = $cell->nodeValue; //if ( $index == 9) $ans = $cell->nodeValue; if ( $index == 9) $marks = $cell->nodeValue; $index += 1; } add_person($quetype,$dif, $subject,$chap_name,$que,$marks); if(isset($_POST['add_que'])){ $chap_sel_std = $_POST['chap_sel_std']; echo $simquefnt = $_POST['sel_f_gn_que']; //que_id quetype_id chap_id sub_id std_id que dif_id marks que_cdate //$chap_sel_std = $_POST['chap_sel_std']; //que_id quetype_id chap_id sub_id std_id que dif_id marks que_cdate mysql_query("INSERT INTO s_question VALUES (null,'$quetype','$chap_name','$subject','$chap_sel_std','$que','NO IMAGE','$dif','$marks','$simquefnt','$current')"); // header("location:../admin/quetionaris.php#tabs-que"); echo "Successfully Added"; } } $first_row = false; } } ?>