Cara menggunakan php spreadsheet github

According to the PhpSpreadsheet Doc it's neccessary to install it with composer. In my case I just have a webspace without Terminal but Plesk. Is it anyway possible to use PhpSpreadsheet, like it is with PHPExcel where you just have to place the files in any location? What do I have to do to get it run? I found no further information how to with only FTP webserver access.

asked Feb 13, 2018 at 12:54

Have you considered installing composer locally, running it as instructed, and then just sending the generated files to the server via normal FTP? You install composer on your computer and run it there, then upload via FTP/SFP...

Composer is not "necessarily" intended to run live while the user is downloading the pages, it is intended to be run "mainly" on your local computer and generating the files and dependencies that later on you upload to the server. It can update the files on your server, but that is a convenience not a necessity.

PowerKiKi

4,1804 gold badges38 silver badges46 bronze badges

answered Mar 16, 2018 at 18:02

FrancescoMMFrancescoMM

2,7291 gold badge16 silver badges26 bronze badges

2

I had the same problem. I downloaded Library on github from https://github.com/PHPOffice/PhpSpreadsheet and made a few changes

  1. changed its namespaces
  2. used autoload.php file
  3. It worked

the Library without the need of Composer is in this link https://github.com/YoloZoloo/PhpSpreadSheet/tree/master

You can change the folder name to any folder you like. Load [AnyFolder]->table.php from your server and press 「ダウンロード」.

Hit back to me if you encounter any issues

answered Sep 12, 2021 at 13:15

1

sample code

require 'vendor/autoload.php'; 
use PhpOffice\PhpSpreadsheet\Spreadsheet; 
use PhpOffice\PhpSpreadsheet\Writer\Xlsx; 
$spreadsheet = new Spreadsheet(); 
$sheet = $spreadsheet->getActiveSheet();
$sheet->setCellValue('A1', 'Hello World !');

$writer = new Xlsx($spreadsheet);
$writer->save('hello world.xlsx');

answered Jul 29, 2021 at 6:54

B VarmaB Varma

471 silver badge2 bronze badges

Smartpal, thanks for your pack, it works fine!

Also it possible to replace folder:

/phpspreadsheet/vendor/phpoffice/phpspreadsheet/src/

in Smartpal's archive with more fresh sources from phpspreadsheet github and it also will work.

PS: If you have issues with reading xls files saved in encoding other than CP1252, you have to seek literals CP1252 in file ./src/PhpSpreadsheet/Reader/Xls.php and replace them with other value that you need or some named constant or even mb_detect_encoding(). Then it will read such xls correctly.

Kenny Horna

12.4k3 gold badges39 silver badges67 bronze badges

answered Oct 30, 2018 at 20:48

1

Assalamualaikum Warahmatullahi Wabarakatuh.

Hai kawan, pada artikel ini kita akan melanjutkan belajar CodeIgniter 4 tentang export data ke excel. Kenapa kita membahas ini ? karena sejauh pengalaman saya bergelut didunia developer setiap aplikasi sistem informasi web pasti user atau pengguna meminta fitur export data ke excel. Apapun data nya baik data master ataupun data report. Nah sebagai pelayan kita wajib memberikan apa yang majikan mau 😀

Pertama kita bahas library yang akan kita gunakan, library untuk bermain excel di php cukup banyak. Diantaranya yang penulis ketahui adalah :

  1. PHPOffice
  2. Pear Excel Writer
  3. Php Export Data

Nah menurut penulis yang terpopuler dan paling banyak digunakan adalah PHPOffice, dulu nama librarynya PHPOffice/PHPExcel. Sekarang sudah dikembangkan lebih baik dengan nama PHPOffice/PHPSpreadsheet. Silahkan klik link jika ingin melihat detail repo nya di github. Yang akan kita gunakan dalam artikel ini adalah PHPSpreadsheet.

Oke sudah cukup pembahasan nya kita langsung praktek. Oh ya asumsi disini kita sudah mempunyai project CI4 ya, kalau belum silahkan buat project CI4 dulu di seperti di artikel sebelumnya.

Intalasi

Pertama kita perlu install library ke project CI4 kita, kita install menggunakan composer. jika menggunakan editor visual studio code, masuk ke menu Terminal/New Terminal lalu ketik perintah berikut :

composer require phpoffice/phpspreadsheet

Tunggu hingga proses download selesai.

Mempersiapkan Data

Kita buat contoh data sederhana untuk di export, kita buat table data_siswa. Seperti biasa buat migration terlebih dahulu, ketik perintah berikut di terminal:

php spark migrate:create create_table_siswa

maka file migration akan terbuat di folder /app/Database/Migrations/

dengan nama yyyy-mm-dd-hhmmss_create_table_siswa.php.

buka file tersebut dan tambahkan code :

public function up()
{
	$this->forge->addField([
			'id' => [
				'type'           => 'INT',
				'constraint'     => 5,
				'unsigned'       => TRUE,
				'auto_increment' => TRUE
			],
			'nama' => [
				'type'           => 'VARCHAR',
				'constraint'     => 50
			],
			'kelas' => [
				'type'           => 'VARCHAR',
				'constraint'     => 50
			],
			'jurusan' => [
				'type'           => 'VARCHAR',
				'constraint'     => 50
			],
			'angkatan' => [
				'type'           => 'VARCHAR',
				'constraint'     => 50
			],
			'nis' => [
				'type'           => 'INT',
				'constraint'     => 11
			],
			'created_at DATETIME default CURRENT_TIMESTAMP',
			'updated_at DATETIME default CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP'
	]);
	$this->forge->addKey('id', TRUE);
	$this->forge->createTable('data_siswa');
}

//--------------------------------------------------------------------

public function down()
{
	$this->forge->dropTable('data_siswa');
}

Lalu jalankan perintah untuk menjalankan migration :

php spark migrate

Selanjutnya buat database seeder untuk mengisi tabel data_siswa yang barusan kita buat, masuk folder app/Database/Seeds dan buat file dengan nama DataSiswaSeeder.php. buka file tersebut dan ketik code berikut :

<?php namespace App\Database\Seeds;

class DataSiswaSeeder extends \CodeIgniter\Database\Seeder
{
    public function run()
    {
        $this->db->query("INSERT INTO data_siswa (nama, kelas, jurusan, angkatan, nis )
            VALUES ('andi','XI-IPA-1','IPA','2019','11223344'),
                    ('yudi','XI-IPS-2','IPS','2019','55667788');"
        );
    }
}

dan jalankan perintah berikut untuk seeding database :

php spark db:seed DataSiswaSeeder

silahkan lihat database dengan MySQL client masing-masing, bisa pakai phpmyadmin atau lainnya, Disana sudah ada tabel data_siswa dengan data 2 siswa yang kita buat di seeder.

Kemudian membuat model data_siswa, masuk ke folder /app/Models/ dan buat file SiswaModel.php. buka file dan ketik code berikut :

<?php namespace App\Models;

use CodeIgniter\Model;

class SiswaModel extends Model
{
    protected $table = 'data_siswa';
    protected $primaryKey = 'id';
    protected $returnType = 'array';
    protected $allowedFields = ['nama', 'kelas', 'jurusan', 'angkatan', 'nis'];
    protected $useTimestamps = true;
}

Buat Controller

Selanjutnya kita buat controller berisi 2 method, 1 untuk menampilkan halaman download dan 1 lagi untuk export data ke excel. buat file di /app/Controllers/ dengan nama ExportExcel.php. dan ketik code berikut :

<?php namespace App\Controllers;

use CodeIgniter\Controller;

class ExportExcel extends Controller
{
    //
}

Tambahkan method index() untuk menampilkan halaman download, ketik code berikut :

public function index()
{
    return view('download-excel');
}

lalu tambahkan method siswa() untuk export data siswa ke excel, sebelumnya jangan lupa tambahkan model siswa dan library PHPSpreadsheet didalam class ExportExcel seperti berikut :

use CodeIgniter\Controller;
use App\Models\SiswaModel;
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;

dan method untuk siswa() seperti berikut :

public function siswa()
{
    $mobil = new SiswaModel();
    $dataMobil = $mobil->findAll();

    $spreadsheet = new Spreadsheet();
    // tulis header/nama kolom 
    $spreadsheet->setActiveSheetIndex(0)
                ->setCellValue('A1', 'Nama')
                ->setCellValue('B1', 'Kelas')
                ->setCellValue('C1', 'Jurusan')
                ->setCellValue('D1', 'Angkatan')
                ->setCellValue('E1', 'NIS');
    
    $column = 2;
    // tulis data mobil ke cell
    foreach($dataMobil as $data) {
        $spreadsheet->setActiveSheetIndex(0)
                    ->setCellValue('A' . $column, $data['nama'])
                    ->setCellValue('B' . $column, $data['kelas'])
                    ->setCellValue('C' . $column, $data['jurusan'])
                    ->setCellValue('D' . $column, $data['angkatan'])
                    ->setCellValue('E' . $column, $data['nis']);
        $column++;
    }
    // tulis dalam format .xlsx
    $writer = new Xlsx($spreadsheet);
    $fileName = 'Data Siswa';

    // Redirect hasil generate xlsx ke web client
    header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
    header('Content-Disposition: attachment;filename='.$fileName.'.xlsx');
    header('Cache-Control: max-age=0');

    $writer->save('php://output');
}

untuk pejelasan code lihat dibagian yang dicomment ya 😀

Selanjutnya kita perlu membuat button download di view, buat file di folder /app/Views/ dengan nama download-excel.php dan ketik code berikut :

<!DOCTYPE html>
<body>

<form action="<?= base_url('exportexcel/siswa') ?>" method="POST" >
    <button type="submit">Download Data Siswa</button>
</form>

</body>
</html>

view yang kita buat sebagai contoh sangat sederhana jadi silahkan menyesuaikan dengan project masing-masing.

Test Download

Nah terakhir adalah test download excel nya, jika CI4 dijalankan dilocal ketik perintah berikut untuk menjalankan server :

php spark serve

dan akses url ke http://localhost:8080/exportexcel

Akan muncul halaman seperti berikut:

klik button download data siswa dan file excel akan terdownload. Silahkan buka file Data Siswa.xls yang telah didownload dan kita sudah berhasil export data siswa ke excel, mudah bukan 😀

Oke, Cukup sekian untuk pembahasan artikel kali ini, semoga bermanfaat. Simak terus kawankoding.id untuk artikel selanjutnya.

Wassalamualaikum Warahmatullahi Wabarakatuh.