在我问之前,重要的是要知道我是编码新手,所以也许我的代码在某些部分并不是很干净。
我正在使用数据库网站。用户可以指定他们想要查看的信息,然后向他们显示一个动态列表,如html表。 html表中的原始数据来自SQL。 现在,用户应该可以将指定的动态html表下载到Excel。因此,我包括了PHPSpreadsheet。
以下是表格的html代码的一小段视图:
$item_count = 0;
echo '<p>';
while ($line = mysqli_fetch_array($result1, MYSQLI_ASSOC)) {if (!$item_count) {
echo '<table class="table table-hover">';
echo "<tr>";
echo '<th bgcolor="#f4f6f7"><div align="center">'.$lang_table_head_nr.'</div></th>';
sortierbar
if ($milestone=="all"){
echo '<th bgcolor="#f4f6f7"><div align="center">'.$lang_table_head_relevance.'</div></th>';
}
else {
echo '<th bgcolor="#f4f6f7"><div align="center">'.$lang_table_head_number.'</div></th>';
} echo '</tr>';
}
$item_count = ++$item_count;
echo '<tr>';
echo '<td><div align="center">';
echo $item_count;
echo '</div></td>';// now comes the declaration of $relevance, which isn't important for the Problem, so i put it out of the code.. }
echo '<td><div align="center">';
if ($milestone == 'all') echo $relevance;
else echo $line[$type.'_number'];
echo '</div></td></tr></table>';
使用此代码,将为用户的每个输入动态创建表。这些只是表的2列,实际上还有更多列。在php文件的开头,我包括了PHP Spreadsheet:
require 'd:/xampp/vendor/autoload.php'; use PhpOffice\PhpSpreadsheet\Spreadsheet; use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
在文件末尾,我尝试对其进行管理,以将其转换为Excel文件,然后可以从用户下载该文件。
mysqli_free_result($ result1); $ arrayData = [mysqli_fetch_array($ result1,MYSQLI_ASSOC) , 空值]; mysqli_close($ link); $ spreadsheet = new Spreadsheet(); $ sheet = $ spreadsheet-> getActiveSheet(); $ sheet-> fromArray( $ arrayData, 空值, 'A1' ); $ writer =新的Xlsx($ spreadsheet); $ writer-> save('test.xlsx');
出现以下错误: 警告:mysqli_fetch_array():无法在1280行获取mysqli_result
我也试图像这样在数组中写数据:
$ arrayData = [ [$ lang_table_head_nr,如果($ milestone =“ all”){$ lang_table_head_relevance} else {$ lang_table_head_number},];
但是如果不允许使用数组。此外,该表是动态的,因此我无法处理每个单元格。一些用户可能只有A1和A2行,另一些用户可能只有50行。因此,不可能使用setCellValue做到这一点。
编辑:所以问题是,如何将html表获取到Excel。我找到了一些js(phpsreadsheet create excel from html table)。用户的testscript有效,但是我将表编码为php,因为它链接到来自其他php页面和SQL要求的过滤器。
感谢您的帮助。
最好的问候, 赫尔穆特