2012-09-28 65 views
0

我有一个现有的表单,我需要直接从MySQL数据库填充字段。从MySQL数据库填充Excel表单字段

我的老板希望我们的客户的个人资料税计算被自动输入到Excel表格中。

对此有何建议?

在此先感谢...

BTW,使用PHP

回答

1

第二个编辑:

<?php 

    function connect_db($db_name) { 

     $con = mysql_connect('localhost', 'db_user', 'db_pass'); 
     $seldb = mysql_select_db($db_name); 

     if($con && $seldb) { 

      return true; 

     } 
     else { 

      return false; 

     } 

    } 

    function get_data_from_mysql() { 

     $data_query = "SELECT date, new_users, old_users, income FROM stats ORDER BY date DESC LIMIT 30"; 

     $data_mysql = mysql_query($data_query); 

     $data_finished = array(); 
     while($data_fetch = mysql_fetch_assoc($data_mysql)) { 

      $data_finished[] = $data_fetch; 

     } 

     return $data_finished; 

    } 

    function print_to_xls($filename, $data_from_mysql) { 

     $file = "xls_archive/" . $filename . ".xls"; 
     $file_abs_path = "http://www.yoursite.com/xls_archive/" . $file; 
     $content = "date\t new users\t old users\t income\n";; 

     foreach($data_from_mysql as $data) { 

      $content .= $data['date'] . "\t " . $data['new_users'] . "\t " . $data['old_users'] . "\t " . $data['income'] . "\n"; 

     } 

     $saving_file = $file; 
     $fo = fopen($saving_file, 'w') or die("can't open file"); 
     $data_to_write = $content; 
     fwrite($fo, $data_to_write); 
     fclose($fo); 

     header("Content-type: application/ms-excel"); 
     header("Content-Transfer-Encoding: Binary"); 
     header("Content-Disposition: attachment; filename=" . $file); 

     readfile($file_abs_path); 

    } 

    $connect_to_db = connect_db("db_name"); 

    if ($connect_to_db) { 

     $data_to_print = get_data_from_mysql(); 

     $today = date("Y_m_d"); 
     $filename = "dailyreport_" . $today; 

     print_to_xls($filename, $data_to_print); 

    } 
    else { 

     print "ERROR"; 

    } 

?> 

以上代码会产生从MySQL数据库生成的文件一个.xls 。
*代码没有测试,但我认为它完美的作品...

先编辑:

你也可以做到这一点的手,通过表格的形式打包数据,并更改标题到Excel的像这样的:

$file ="dailyreport.xls"; 
$content = "data1 \t data2 \t data3 \t \n"; 

header("Content-type: application/ms-excel"); 
header("Content-Disposition: attachment; filename=" . $file); 

print $content; 

这段代码(后产生),提示用户下载文件“dailyreport.xls”

你也可以试试这个PHP库产生XLS文件:
http://phpexcel.codeplex.com/

+0

很好的回答,你也可以使用'$内容=“

​​数据1 ...'等 – chim

+0

我可以知道哪些文件,我应该补充你这个代码?它是否在index.php? –

+0

这对你来说更是一个问题:)你如何组织你的代码......如果你希望我帮助你,请更具体地说明什么是用PHP生成xls所需的过程。 .. – Develoger

0

那么你可以使用PHP来从MySQL中获取数据,但显示在Excel中了可以以多种方式来完成,让我们假设你有会跟MySQL和获取所需的数据和程序的以XML格式。

现在你可以做一个Export to excel,理想情况下你在这里做的是改变application/vnd.ms-excel的响应类型,并以表格格式格式化数据,这样excel会将它视为行和列。

好了以上是一种方式,还有很多其他的方法,你可以在后端生成excel并为用户提供一个链接,或者你可以将数据公开为服务并编写一个excel插件来读取来自您的服务的数据

+0

这很简单,你不需要一个excel对象,你需要通过php建立一个表格格式,并将响应内容类型设置为excel,它会提示用户下载excel文件 –

+0

请在某处上传截图,我是从移动的评论,所以不能看到zip文件 –

+0

和一个投票将有助于 –

0

将整个表单创建为不含表单字段的html表单,然后将内容作为Excel电子表单创建。

这个答案提供了更多的细节

HTML table to excel - PHP

你会得到一个安全警告每次打开电子表格的时间,但你是谁创造了它的一个,它是供内部使用,你可以忽略安全警告。

警告会说类似...

"The file you are trying to open, '[filename]', is in a different format than specified by the file extension. Verify that the file is not corrupted and is from a trusted source before opening the file. Do you want to open the file?"

另见What's XLSHTML?

+0

我被他人建议使用fpdf,将创建一个使用pdf格式的模板,这是我可以添加字段来创建一个php表单的时间。 –

+0

如果要输出到xls,那么每个单元格实际上都是输入字段,因为您可以使用电子表格中的计算值并在电子表格中更改它们。你想在你的电子表格中使用“表单控件”吗? – chim