收录日期:2021/01/23 06:53:29 时间:2010-03-31 04:08:36 标签:php,codeigniter

Hi I am exporting data from php page to word,, there i get 'n' number of datas in each page .... How to set the maximum number of data that a word page can contain ,,,, I want only 20 datas in a single page

This is the coding i use to export the data to word i got the data in word format but the headers are not available for all the pages ex: Page:1 slno name country state Town 1 vivek india tamilnadu trichy 2 uday india kerala coimbatore like this i am getting many details but in my page:2 i dont get the headers like name country state and town....But i can get the details like kumar america xxxx yyyy

i want the result to be like slno name country state town n chris newzealand ghgg jkgj

Can i get the headers If it is not possible Is there anyway to limit the number of details being displayed in each page

//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 = "cms"; //your MySQL Database Name $DB_TBLName = ""; //your MySQL Table Name

$sql = "SELECT (SELECT COUNT(*) FROM tblentercountry t2 WHERE t2.dbName <= t1.dbName and t1.dbIsDelete='0') AS SLNO ,dbName as Namee,t3.dbCountry as Country,t4.dbState as State,t5.dbTown as Town FROM tblentercountry t1 join tablecountry as t3, tablestate as t4, tabletown as t5 where t1.dbIsDelete='0' and t1.dbCountryId=t3.dbCountryId and t1.dbStateId=t4.dbStateId and t1.dbTownId=t5.dbTownId order by dbName limit 0,50";

//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('m-d-Y H:i'); //define title for .doc or .xls file: EDIT this if you want $title = "Country"; /*

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:
" . MYSQL_ERROR() . "
" . MYSQL_ERRNO()); //select database $Db = @MYSQL_SELECT_DB($DB_DBName, $Connect) or DIE("Couldn't select database:
" . MYSQL_ERROR(). "
" . MYSQL_ERRNO()); //execute query $result = @MYSQL_QUERY($sql,$Connect) or DIE("Couldn't execute query:
" . MYSQL_ERROR(). "
" . 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 = "vnd.ms-excel"; $file_ending = "xls"; }ELSE { $file_type = "msword"; $file_ending = "doc"; } //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";
 }

}

?>

Just put an if loop beneath your for loops:

FOR($j=0; $j<mysql_num_fields($result);$j++)
 {
   if($j<20){
     ...rest of code

If I'm reading that horrid blob of junk correctly, you're simply dumping your database out as comma-seperated values (.csv) text, and forcing it to load in different Office programs by setting MIME headers.

You're not actually creating a .doc or a .xls file, you're generating .csv file. The fact that you're tricking Office into loading the data into Word of Excel doesn't change that fact. CSV data has no formatting whatsoever. There's no page breaks, no fonts, no headers, no footers, no way to specify how many lines on a page, nothing. There's just data: data fields seperated by commas, each line representing a record.