CI 묻고 답하기

제목 PHP Spreadsheet 로 엑셀을 저장하려고 합니다.
카테고리 CI 4 관련
글쓴이 엘제이 작성시각 2023/02/24 17:02:35
댓글 : 5 추천 : 0 스크랩 : 0 조회수 : 5568   RSS

  ob_start();

  include "test.php";

  $content = ob_get_contents();

  ob_end_clean();

 

이렇게 사용하면 된다는데 문제는 CI 를 이용하는 것이라 (컨트롤러에서 ...)

ew ExcelLibrary(); -> html?? ('파일명', 데이타);

에서 데이타에 파일의 내용을 넘겨줘야 하는데 cii 컨트롤러에서 include를 사용할 수 없고

$var = view(.....); // 안되겠죠 ;;;;

 

방법을 알고 싶습니다.

 다음글 코드이그나이터 공부를 하려고 하는데 괜찮은 강좌 있을까... (1)
 이전글 ci3 개발 환경.. 테스트 환경 구성에 대해서 (1)

댓글

변종원(웅파) / 2023/03/09 14:30:01 / 추천 0

라이브러리로 로드 하셔야 합니다. (매뉴얼 참고)

해당 라이브러리 샘플 보시면 충분히 하실 수 있는 작업입니다.

darkninja / 2023/03/09 20:46:02 / 추천 0

https://stackoverflow.com/questions/66334823/implement-phpspreadsheet-in-codeigniter-4

Well, I launched the phpSpreadsheet download with composer from the Codeigniter 4 application root and then created the following controller:

<?php

//ci4/app...
//ci4/PhpOffice\PhpSpreadsheet <= 여기에 업로드
//ci4/public
//
//ci4를 사용하시면 아래처럼 간단히 사용가능한거 같은데요 ㅋ 생각만...

namespace App\Controllers;

use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;


class Example extends BaseController
{
    public function index()
    {
        $spreadsheet = new Spreadsheet();
        
        $sheet = $spreadsheet->getActiveSheet();
        $sheet->setCellValue('A1', 'Hello World !');
        $writer = new Xlsx($spreadsheet);
        $writer->save('hello world.xlsx');
    }
} 

Everything seems to be working now! No need to edit other files. Thanks again to those who answered me, the information was useful

darkninja / 2023/03/09 23:15:42 / 추천 0

[php] composer 없이 spreadsheet 사용하기

https://duotone.co.kr/entry/composer-%EC%97%86%EB%8B%88-phpspreadsheet-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0

This is a copy of PhpSpreadSheet that will work without need of Composer

https://github.com/YoloZoloo/PhpSpreadSheet/tree/main

위에 가시면 ZipStream과 MyCLabs을 구할수 있습니다 ;

이것들을 PhpOffice 디렉토리와 같은 레벨에 복사하시고 또한 그안에 각각 autoloader.php를 만들어 넣으셔야 합니다

위 작업들이 순조롭게 진행되었을 경우 hello world.xlsx 파일을 ci4의 public디렉토리에서 구경할수 있습니다.

그럼 행운을 함께 하기를....

온라인에서 무료로 Excel 열기 (aspose.app)

darkninja / 2023/03/09 23:20:25 / 추천 0

음,, 중요한걸 빼먹었습니다

<?php

namespace App\Controllers;

if (!defined('BASEPATH')) exit('No direct script access allowed');

use CodeIgniter\HTTP\RequestInterface;
use CodeIgniter\HTTP\ResponseInterface;
use Psr\Log\LoggerInterface;

class Home extends BaseController
{
  protected $farm_controller = FARM_CONTROLLER;
  protected $farm_table = FARM;
  protected $farm_recent_count = FARM_RECENT_COUNT;

  protected $gam_controller = GAM_CONTROLLER;
  protected $gam_table = GAM;
  protected $gam_recent_count = GAM_RECENT_COUNT;

  protected $machine_controller = MACHINE_CONTROLLER;
  protected $machine_table = MACHINE;
  protected $machine_recent_count = MACHINE_RECENT_COUNT;

  protected $cut_subject = CUT_SUBJECT;

  protected $board_recent_model;

  public function initController(RequestInterface $request, ResponseInterface $response, LoggerInterface $logger)
	{
		// Do Not Edit This Line
		parent::initController($request, $response, $logger);

		require_once(DOC_BASE.'/PhpOffice/Psr/autoloader.php');
		require_once(DOC_BASE.'/PhpOffice/PhpSpreadsheet/autoloader.php');
		require_once(DOC_BASE.'/ZipStream/autoloader.php');
		require_once(DOC_BASE.'/MyCLabs/autoloader.php');

        $this->board_recent_model = new \App\Models\board_recent_model();
    }
	public function PhpSpreadsheet() 
	{
		$data = Array(
			'head_data' => array(
				'title' => 'PhpSpreadsheet',
			),
			'view_data' => array(
			),
			'tail_data' => array(
			)	
		);
		$data = array_replace_recursive($this->data, $data);

		echo view('main_head', $data['head_data']);
		echo view('PhpSpreadsheet', $data['view_data']);
		echo view('main_tail', $data['tail_data']);
	}

 

view file

<?php

use PhpOffice\PhpSpreadsheet\IOFactory;  

use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;

		error_reporting(E_ALL); 

		ini_set("display_errors", 1);
		ini_set('memory_limit', -1); // 메모리 제한을 해제해준다. 

		$spreadsheet = new Spreadsheet();

	    $sheet = $spreadsheet->getActiveSheet();
		$sheet->setCellValue('A1', 'Hello World !');
		$writer = new Xlsx($spreadsheet);
		$writer->save('hello world.xlsx');

       
?>

 

 

 

darkninja / 2023/03/09 23:42:06 / 추천 0

<!DOCTYPE html>

<html>

<head>
	<meta charset="utf-8" />
	<title>Test page</title>

	<style>
	</style>
</head>

<body>
	<?php
		//source
		//https://duotone.co.kr/entry/composer-%EC%97%86%EB%8B%88-phpspreadsheet-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0
		//https://github.com/YoloZoloo/PhpSpreadSheet/tree/main
		//https://products.aspose.app/cells/ko/viewer

		use PhpOffice\PhpSpreadsheet\IOFactory;  
		use PhpOffice\PhpSpreadsheet\Spreadsheet;
		use PhpOffice\PhpSpreadsheet\Writer\Xlsx;

		//define('DOC_BASE', DOCUMENT_ROOT.BASE_PATH);
		define('DOC_BASE', '../ci-426');

		require_once(DOC_BASE.'/PhpOffice/Psr/autoloader.php');
		require_once(DOC_BASE.'/PhpOffice/PhpSpreadsheet/autoloader.php');
		require_once(DOC_BASE.'/ZipStream/autoloader.php');
		require_once(DOC_BASE.'/MyCLabs/autoloader.php');

		error_reporting(E_ALL); 

		ini_set("display_errors", 1);
		ini_set('memory_limit', -1); // 메모리 제한을 해제해준다. 

		$spreadsheet = new Spreadsheet();

	    $sheet = $spreadsheet->getActiveSheet();
		$sheet->setCellValue('A1', '한번만 더 해보자!');
		$writer = new Xlsx($spreadsheet);
		$writer->save('one more.xlsx');
	?>	

</body>

</html>