2013-02-26 44 views
0

我正在開發一個項目,我需要將每個mysql記錄導出到單個word文件,但我不知道該怎麼做?在網上有很多文章談論出口數據在一個word文件中,但我需要每個記錄導出在一個單獨的文件file.here是我使用的代碼,但它的輸出只是一個word文件包含所有的記錄,而我需要將每條記錄保存在單獨的Microsoft Office文件中。下面的代碼使用PHPexcel類讀取excel文件,然後將其導入到Mysql,現在我想將每個記錄的mysql保存到單個Microsoft Word文件。感謝任何答案。如何將MYSQL記錄導出到單個Microsoft Word文件?

<?php 
require_once 'Classes/PHPExcel.php'; 
$objReader = new PHPExcel_Reader_Excel2007(); 
$objPHPExcel = $objReader->load('book1.xlsx'); 
$rowIterator = $objPHPExcel->getActiveSheet()->getRowIterator(); 

$skip_rows = 0; 
$excell_array_data = array(); 
foreach($rowIterator as $row){ 
    $cellIterator = $row->getCellIterator(); 
    $cellIterator->setIterateOnlyExistingCells(false); 
    if($skip_rows >= $row->getRowIndex()) continue; 
    $rowIndex = $row->getRowIndex(); 
    $excell_array_data[$rowIndex] = array(); 

    foreach ($cellIterator as $cell) { 
     $excell_array_data[$rowIndex][$cell->getColumn()] = $cell->getCalculatedValue(); 
    } 
} 

$link = @mysql_connect('localhost', 'root', ''); 
if ($link){ 
    $db_selected = mysql_select_db('proje', $link); 
    @mysql_set_charset('utf8',$link); 

    //Create Database table with one Field 
    $sql = "CREATE TABLE xlsx (
    rowID INT NOT NULL , 
    PRIMARY KEY (rowID) 
    )"; 
    mysql_query($sql); 

    //Create Others Field (A, B, C & ...) 
    $columns_name = array(); 
    $columns_name = $excell_array_data[$skip_rows+1]; 
    foreach (array_keys($columns_name) as $fieldname){ 
     $sql = "ALTER TABLE xlsx ADD $fieldname VARCHAR(1000)"; 
     mysql_query($sql); 
    } 
$i = 0; 
    //Insert Excel data to MySQL 
    foreach($excell_array_data as $k=>$v){ 
    //echo $keys."\n<br/>"; 
    //var_dump ($v); 

     $keys = join(array_keys($v), ','); 
     $values = join($v, "','"); 

/*  
ini_set("com.allow_dcom","true"); 
// Create new COM object – word.application 
$word = new COM("word.application"); 

// Hide MS Word application window 
$word->Visible = 0; 

//Create new document 
$word->Documents->Add(); 

// Define page margins 
$word->Selection->PageSetup->LeftMargin = '2'; 
$word->Selection->PageSetup->RightMargin = '2'; 

// Define font settings 
$word->Selection->Font->Name = 'Arial'; 
$word->Selection->Font->Size = 10; 

// Add text 
$word->Selection->TypeText("word"); 
$word->Selection->TypeText("$v[B]"); 
$word->Selection->TypeText("$v[C]"); 
$word->Selection->TypeText("$v[D]"); 
$word->Selection->TypeText("$v[E]"); 
$word->Selection->TypeText("$v[F]"); 

// Save document 
$filename = tempnam(__FILE__, "word"); 
$word->Documents[1]->SaveAs($filename); 

// Close and quit 
$word->quit(); 
unset($word); 

$i++;  


*/  
header("Content-type: application/vnd.ms-word"); 
header("Content-Disposition: attachment; Filename=SaveAsWordDoc.doc"); 
     $sql = "insert into xlsx (rowID, $keys) values ($k, '$values') " ; 
     mysql_query($sql); 
     ?> 

     <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv=\"Content-Type\" content=\"text/html; charset=Windows-1252\"> 
<title>Saves as a Word Doc</title> 
</head> 
<body> 
<h1><?php echo $k; ?></h1> 
    <?php 
var_dump($v) ; 

    ?> 


<?php 
    } 

} else { 
    echo "Error in database connection."; 
} 
?> 
+0

請提供您的表格定義。 – cja 2013-02-26 09:27:23

+0

你看過PHPWord,PHPExcel的姊妹項目嗎? https://github.com/PHPOffice/PHPWord – 2013-02-26 10:13:00

+0

thaks標記它完美的工作,但仍然有問題。問題在於語言輸出沒有完美顯示。名字是用阿拉伯語寫成的,所以它們在字文件中沒有完美顯示。 – hasan 2013-02-26 12:04:44

回答

0

從你的問題我明白,問題是創建多個Word文檔,而不是從PHP創建一個Word文檔。 從PHP(網站)創建一個Word文檔可以使用多種方法完成。當用戶從網站內部工作而不是從Word內部創建文檔時,我更喜歡使用帶有一些佔位符的RTF文件。對於低音量,它們很容易設置。對於大量不同的模板或表格,儘管如此,從Invantive Composition(我在那裏工作)的開發中,我瞭解到,您可能想切換到XML格式或其功能表示形式。 在你的情況下,我會建議從PHP生成一些RTF文件,然後將它們壓縮在一起,因爲一個網站通常每次迭代只提供一個附件。將它們壓縮在一起可以在內存中完成,但您可能還想考慮在磁盤上的某個位置執行此操作,具體取決於所創建文件的大小。

相關問題