使用PHPExcel创建Excel报告时,CodeIgniter出现问题。这是一条信息:
Message: Trying to get property of non-object Line 274 - Line 278
//查询
$sqlcoba="SELECT a.kd_mahasiswa, a.thn_angkatan, a.nim, a.nama, a.alamat, a.no_telp, b.nama_prodi, d.kd_dosen, d.nama_dosen, a.nama_ortu, a.alamat_ortu, a.pekerjaan, a.telp_ortu, a.status, a.kd_prodi, c.kd_fakultas, c.nama_fakultas
FROM tbl_mahasiswa a
JOIN ref_prodi b ON b.kd_prodi = a.kd_prodi
LEFT JOIN ref_fakultas c ON c.kd_fakultas = b.kd_fakultas
LEFT JOIN ref_dosen d ON d.kd_dosen = a.kd_dosen
WHERE a.kd_prodi = $fil1 and a.thn_angkatan = $fil2";
//阵列
$sqlmhs=$this->db->query($sqlcoba);
foreach ($sqlmhs->result_array() as $rowcoba)
{
$nim = $rowcoba->nim; // line 274
$nama = $rowcoba->nama;
$alamat = $rowcoba->alamat;
$no_telp = $rowcoba->no_telp;
$status = $rowcoba->status; // line 278
}
//PhpExcel
$bar=3;
$no = 0;
$no = $no+1;
$objPHPExcel->setActiveSheetIndex(0)
->setCellValue('B'.$bar, $no)
->setCellValue('C'.$bar, $nim)
->setCellValue('D'.$bar, $nama)
->setCellValue('E'.$bar, $alamat)
->setCellValue('F'.$bar, $no_telp)
->setCellValue('G'.$bar, $status);
$bar=$bar+1;
现在我已经有几天没有在CodeIgniter中这样练习了。。但我认为这是错误的
参考行号271和272
$sqlmhs=$this->db->query($sqlcoba);
foreach ($sqlmhs->result_array() as $rowcoba)
在第272行,您正在访问作为数组的对象。因此,在foreach循环中,您必须访问像$rowcoba['nim']
这样的数组元素。
让我知道这是否有效。你可以参考https://ellislab.com/codeigniter/user-guide/database/results.html更多详细信息。
@Kuku你的脚本是真的。。但只是在数据之外。应该会有很多数据出来。显然在脚本中
$objPHPExcel->setActiveSheetIndex(0)
->setCellValue('B'.$bar, $no)
->setCellValue('C'.$bar, $nim)
->setCellValue('D'.$bar, $nama)
->setCellValue('E'.$bar, $alamat)
->setCellValue('F'.$bar, $no_telp)
->setCellValue('G'.$bar, $status);
必须放在前臂上。所以…
$bar=3;
$no = 0;
foreach ($sqlmhs->result_array() as $rowcoba)
{
$nim = $rowcoba['nim'];
$nama = $rowcoba['nama'];
$alamat = $rowcoba['alamat'];
$no_telp= $rowcoba['no_telp'];
$status = $rowcoba['status'];
$objPHPExcel->setActiveSheetIndex(0)
->setCellValue('B'.$bar, $no)
->setCellValue('C'.$bar, $nim)
->setCellValue('D'.$bar, $nama)
->setCellValue('E'.$bar, $alamat)
->setCellValue('F'.$bar, $no_telp)
->setCellValue('G'.$bar, $status);
$no = $no+1;
$bar=$bar+1;
}
谢谢。