Php 如何将MYSQL记录导出到单个Microsoft word文件?

Php 如何将MYSQL记录导出到单个Microsoft word文件?,php,mysql,excel,ms-word,Php,Mysql,Excel,Ms Word,我正在做一个项目,我需要将每个mysql记录导出到一个单独的word文件,但我不知道怎么做?网上有很多文章讨论在word文件中导出数据,但我需要在单个word文件中导出每条记录。这是我使用的代码,但它的输出只是一个word文件,其中包含所有记录,而我需要将每条记录保存在单个Microsoft Office文件中。下面的代码使用PHPexcel类读取一个excel文件,然后将其导入Mysql现在我想将Mysql的每个记录保存到一个单独的Microsoft word文件中。谢谢你的回答 <?p

我正在做一个项目,我需要将每个mysql记录导出到一个单独的word文件,但我不知道怎么做?网上有很多文章讨论在word文件中导出数据,但我需要在单个word文件中导出每条记录。这是我使用的代码,但它的输出只是一个word文件,其中包含所有记录,而我需要将每条记录保存在单个Microsoft Office文件中。下面的代码使用PHPexcel类读取一个excel文件,然后将其导入Mysql现在我想将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.";
}
?>

从您的问题中,我了解到问题在于创建多个Word文档,而不是从PHP创建一个Word文档。
可以使用多种方法从PHP(网站)创建一个Word文档。当用户从网站内部而不是从Word内部创建文档时,我更喜欢使用带有一些占位符的RTF文件。对于低容量,它们易于设置。尽管如此,从Inventive Composition(我在那里工作)的开发中,我了解到,您可能希望切换到XML格式或其功能表示形式。

在您的情况下,我建议从PHP生成大量RTF文件,然后将它们压缩在一起,因为网站通常每次迭代只提供一个附件。将它们合并在一起可以在内存中完成,但是您也可能会考虑在磁盘上执行它,这取决于所创建的文件的大小。< /P>请提供您的表定义。您查看了PHPWord,PHPExcel的姐妹项目吗?thaks mark它运行得很好,但仍然存在问题。问题是语言输出没有完美显示。名称是用阿拉伯语写的,所以它们在word文件中没有完美显示。请在PHPWord中使用UTF-8,必要时进行转换再次感谢标记我应该如何在PHPWord中设置UTF-8,我查找了,但没有找到代码。。。。