[英]Is it possible to write in an existing spreadSheet with PhpSpreadSheet?
[英]PHPSpreadsheet - can't update an existing spreadsheet but can write to new spreadsheet?
因此,我正在使用PHPSpreadsheet寫入現有的電子表格,但由於某些原因,我不斷收到此錯誤:
PHP Fatal error: Uncaught Error: Call to a member function setValue() on null in /home/joe/vendor/phpoffice/phpspreadsheet/samples/vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Worksheet/Worksheet.php:1127
Stack trace:
#0 /home/joe/vendor/phpoffice/phpspreadsheet/samples/server.php(90): PhpOffice\PhpSpreadsheet\Worksheet\Worksheet->setCellValue('b15', '6429093')
#1 {main}
thrown in /home/joe/vendor/phpoffice/phpspreadsheet/samples/vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Worksheet/Worksheet.php on line 1127
僅在嘗試從現有電子表格加載時才收到此錯誤,而從新電子表格加載時卻沒有。 代碼如下:
$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();
$letters = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','aa','ab','ac','ad','ae','af','ag','ah','ai','aj','ak','al','am','an','ao','ap','aq','ar','as','at','au','av','aw','ax','ay','az','ba','bb','bc','bd','be'];
$numColumns = count($letters);
foreach($rows as $row) {
foreach($row as $key => $value) {
if(isset($value) && $value != null) {
$sheet->setCellValue($letters[$key].$i, $value);
}
//print_r();
}
$i++;
}
我從中加載的電子表格僅包含一堆單元格格式以及一些已經包含數據的單元格。您可以提供的任何幫助都將是非常棒的:-)
字母應為大寫,而不是小寫,此方法是通過ascii代碼獲取char。 並將其轉換為帶有chr
函數的char。
$letters = range(65, 90) // A-Z ascii code
foreach($rows as $i => $row) {
foreach($row as $j => $value) {
if(isset($value) && $value != null) {
// array start from 0, but spreadsheet line start from 1. then $i+1
$sheet->setCellValue( chr($letters[$j]).($i+1) , $value); // A1, $value
}
//print_r();
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.