0
私のプロジェクトでは、PHPExcel
を使用して複数のシートを含むExcelファイルをエクスポートしようとしています。そこでは、すべてのシートでいくつかのフィールドをロックする必要があります。PHPExcelはすべてのシートで保護を有効にします
ただし、以下のプログラムは1枚目のシートでのみ動作します。どのように私はそれをすべてのシートで動作させることができます。
function export() {
if ($this -> session -> userdata('username') && $this -> session -> userdata('role') != 200) {
if (!empty($_POST['btnExport'])) {
$exportRecord = $this -> expmodel -> getExportData();
$this -> load -> library('excel');
$this -> load -> library('zip');
$sheetno = 0;
$loopcount = 0;
$newsheet = $this -> excel -> createSheet($sheetno);
$this -> excel -> setActiveSheetIndex(0);
$rowCount = 1;
foreach ($exportRecord as $export) {
foreach ($export as $val) {
if (!isset($val))
$value = NULL;
elseif ($val != "")
$value = strip_tags($val);
else
$value = "";
$workObj = new PHPExcel_Worksheet();
$workObj -> protectCells($column . $rowCount, 'PHP');
$newsheet -> setCellValue($column . $rowCount, $value);
$column++;
}
$rowCount += 1;
if (isset($exportRecord[$loopcount + 1]['tra_cp_name'])) {
if ($exportRecord[$loopcount + 1]['tra_cp_name'] != $exportRecord[$loopcount]['tra_cp_name']) {
$sheetno += 1;
$newone += 1;
$rowCount = 1;
}
}
if ($newone > 0) {
$newsheet = $this -> excel -> createSheet($sheetno);
$newSheet = 1;
}
$loopcount += 1;
}
$filename = 'export' . $filecount . '.xls';
$writeObj = PHPExcel_IOFactory::createWriter($this -> excel, 'Excel5');
$filecount += 1;
$filearray[] = $filename;
$writeObj -> save('./excel/' . $filename);
$downloadedFileCount = sizeof($filearray);
for ($i = 0; $i < $downloadedFileCount; $i++) {
$this -> zip -> read_file('./excel/' . $filearray[$i]);
}
$this -> zip -> download('excursion_files.zip');
}
}
else {
$this -> session -> sess_destroy();
redirect('backoffice', 'refresh');
}
}
ご迷惑をおかけして申し訳ございません。
運に保護を設定する必要があります。 "$ newsheet"を追加しても全く動作しません – Arun