Skip to content

Blog Công Nghệ

MENUMENU
  • Trang chủ
  • Giới Thiệu
  • Lập Trình
    • Lập Trình Website
      • Laravel
        • Phân Tích Dự Án
      • PHP
      • SQL
      • HTML
      • CSS
      • Javascipt
      • My Project
      • Wordpress
    • Luyện Skill
    • Lập trình winform
    • CSDL
    • Lập Trình Android
    • Trí tuệ nhân tạo
    • Khai Khoáng Dữ Liệu
    • Arduino
    • Khác
    • Đồ án
  • Phần Mềm
    • Powerpoint
    • Tool
  • Cuộc sống và Giải trí
    • Hợp âm
    • web5ngay - youtube
    • Công Giáo
    • Kỹ Năng Sống
    • Street Workout
  • Danh sách bài viết
  • Guide line
    • Guild line phỏng vấn
    • Guide lines Laravel
    • Guide line Module Frontend
  • Tóm tắt sách
  • Fanpage

Blog Công Nghệ

Nơi chia sẻ kiến thức

Nhập xuất dữ liệu excel trong laravel

13 Tháng Tám, 2020 by admin
Lượt xem: 62

Contents

  • 1. Cài đặt
  • 2. Xuất dữ liệu
  • 3. Nhập dữ liệu
  • Tham Khảo

1. Cài đặt

Ở đây mình sẽ hướng dẫn cho phần Laravel, còn về PHP thuần thì mình sẽ để link các nguồn tham khảo bên dưới.

Đầu tiên bạn cài thư viện bằng câu lệnh sau:

composer require phpoffice/phpexcel

Chỗ nào cần sử dụng Excel thì bạn thêm các dòng sau vào:

use PHPExcel;
use PHPExcel_IOFactory;

2. Xuất dữ liệu

$data = $this->thucTap->getAll();
		$excel = new PHPExcel();
		$excel->createSheet();
		$activeSheet = $excel->setActiveSheetIndex(1);
		$activeSheet->setTitle( "Dữ Liệu Thực Tập" );

		$excel->getActiveSheet()->getColumnDimension('A')->setWidth(5);
		$excel->getActiveSheet()->getColumnDimension('B')->setWidth(30);
		$excel->getActiveSheet()->getColumnDimension('C')->setWidth(30);
		$excel->getActiveSheet()->getColumnDimension('D')->setWidth(20);
		$excel->getActiveSheet()->getColumnDimension('E')->setWidth(30);
		$excel->getActiveSheet()->getColumnDimension('F')->setWidth(10);
		$excel->getActiveSheet()->getColumnDimension('G')->setWidth(30);
		$excel->getActiveSheet()->getColumnDimension('H')->setWidth(30);
		$excel->getActiveSheet()->getColumnDimension('I')->setWidth(30);
		$excel->getActiveSheet()->getStyle('A2:I2')->getFont()->setBold(true);

		$activeSheet->setCellValue('A2', 'STT')
			->setCellValue('B2', 'Email sinh viên')
			->setCellValue('C2', 'Tên sinh viên')
			->setCellValue('D2', 'Điểm trung bình')
			->setCellValue('E2', 'Tên người chấm')
			->setCellValue('F2', 'Số điểm')
			->setCellValue('G2', 'Nhận xét')
			->setCellValue('H2', 'Ngày bắt đầu thực tập')
			->setCellValue('I2', 'Ngày kết thúc thực tập');

		$numRow = 3;
		$stt = 1;
		foreach ($data as $value) {
			
				$excel->getActiveSheet()->setCellValue('A' . $numRow, $stt);
			    $excel->getActiveSheet()->setCellValue('B' . $numRow, $value->getDataSinhVien( 'email' ) );
			    $excel->getActiveSheet()->setCellValue('C' . $numRow, $value->getDataSinhVien( 'ten' ) );			    
			    $excel->getActiveSheet()->setCellValue('D' . $numRow, $value->tinh_diem_trung_binh( $value ) );
			    $excel->getActiveSheet()->setCellValue('E' . $numRow, $value->getDataGiangVien( 'ten' ) );
			    $excel->getActiveSheet()->setCellValue('F' . $numRow, $value->getDataDiem( 'diem', 'giang-vien' ) );
			    $excel->getActiveSheet()->setCellValue('G' . $numRow, $value->getDataDiem( 'nhanxet', 'giang-vien' ) );
			    $excel->getActiveSheet()->setCellValue('H' . $numRow, $value->getNgayBatDauThucTap() );
			    $excel->getActiveSheet()->setCellValue('I' . $numRow, $value->getNgayKetThucThucTap() );

			    $numRow++;

			    $excel->getActiveSheet()->setCellValue('E' . $numRow, $value->getDataNguoiHuongDan( 'ten' ) );
			    $excel->getActiveSheet()->setCellValue('F' . $numRow, $value->getDataDiem( 'diem', 'nguoi-huong-dan' ) );
			    $excel->getActiveSheet()->setCellValue('G' . $numRow, $value->getDataDiem( 'nhanxet', 'nguoi-huong-dan' ) );
			    $excel->getActiveSheet()->setCellValue('H' . $numRow, $value->getNgayBatDauThucTap() );
			    $excel->getActiveSheet()->setCellValue('I' . $numRow, $value->getNgayKetThucThucTap() );

			    $numRowMergePrevious = $numRow - 1;
			    $activeSheet->mergeCells("A$numRowMergePrevious:A$numRow");
			    $activeSheet->mergeCells("B$numRowMergePrevious:B$numRow");
			    $activeSheet->mergeCells("C$numRowMergePrevious:C$numRow");
			    $activeSheet->mergeCells("D$numRowMergePrevious:D$numRow");

				$numRow++;
				$stt++;
		}

		header('Content-type: application/vnd.ms-excel');
		header('Content-Disposition: attachment; filename="duLieuThucTap.xlsx"');
		PHPExcel_IOFactory::createWriter($excel, 'Excel2007')->save('php://output'); //Khi up site thày thành Excel5
  • Dòng 3: tạo sheet mới
  • Dòng 4,5: Lấy sheet active và đặt tên sheet
  • Dòng 7-16: định dạng cột
  • Dòng 60-62: xuất ra download của trình duyệt
  • Lưu ý: Khi up lên site thì dòng nếu bị lỗi thì dòng 62 thay Excel2007 thành Excel5 nhé!

Và đây là kết quả:

3. Nhập dữ liệu

$fileName = "";
        $fileSize = "";
        if ( isset( $data['fileToUpload'] ) ) {
          $file = $data['fileToUpload'];

          //Lấy Tên files
          $fileName = $file->getClientOriginalName();
          if( strpos( $fileName, ".xls" )  || strpos( $fileName, ".xlsx" ) )
          {

          }
          else return 'File không hợp lệ!';
          //Lấy kích cỡ của file đơn vị tính theo bytes
          $fileSize = $file->getSize();
          if( $fileSize > 10485760 )
            return 'Kích thước file quá lớn!';
        }

        if($fileName != "" && $fileSize < 10485760)
        {
          $thongTin = "Các dòng dữ liệu không insert thành công";
          $loi = 0;

          $file = $data['fileToUpload'];
          $file->move("public/img/upload", $file->getClientOriginalName());
           $objPHPExcel = PHPExcel_IOFactory::load(base_path("public/img/upload/$fileName")); // load file ra object PHPExcel
           $provinceSheet = $objPHPExcel->setActiveSheetIndex(0); // Set sheet sẽ được đọc dữ liệu
           $highestRow  = $provinceSheet->getHighestRow(); // Lấy số row lớn nhất trong sheet
           for ($row = 2; $row <= $highestRow; $row++) { // For chạy từ 2 vì row 1 là title
              $ma = $provinceSheet->getCellByColumnAndRow(0, $row)->getValue(); // lấy dữ liệu từng ô theo col và row
              $ten = $provinceSheet->getCellByColumnAndRow(1, $row)->getValue();
           

              $data_item = array(
                "ma-nganh" => $ma,
                "ten-nganh" => $ten,
              );
              if( !$this->them_nganh( $data_item ) ) {
                $loi = 1;
                $thongTin .= "\\n$ma - $ten";
              }
            }

          if($loi == 0) {
            $thongTin = "Nhập dữ liệu thành công";
            return $thongTin;
          } else return $thongTin;
        }
        else
        {
            return 'Lỗi file!';
        }
  • dòng 26 – 31: là đọc file excel và lấy dữ liệu

Tham Khảo

  • https://topdev.vn/blog/phpexcel/#doc-va-ghi-file-excel-bang-laravel
    Đây là trang web khá hay, hướng dẫn đầy đủ cả nhập và xuất excel cả PHP thuần và Laravel
  • https://toidicode.com/doc-ghi-du-lieu-file-excel-voi-phpexcel-147.html
    Còn trang web này tuy không hướng dẫn cho Laravel nhưng nó nói khá rõ về thư viện PHPExcel
  • https://viblo.asia/p/cakephp-xuat-du-lieu-ra-excel-su-dung-thu-vien-phpexcel-p2-Q7eEREK4GgNj
  • Bài viết này cho mình biết cách định dạng file excel trong thư viện PHPExcel

Related posts:

  1. Middleware trong Laravel – lợi hại như thế nào
  2. Event trong Laravel
  3. API sử dụng resource trong Laravel
  4. Đa ngôn ngữ (i18n) trong Laravel

Post navigation

Previous Post:

Hướng dẫn tích hợp code Chat Messenger trực tiếp của Facebook (real time) vào website.

Next Post:

Dự án freelancer – OpenCart Quản lý nhân sự

Trả lời Hủy

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Ẩn sidebar

Tìm kiếm

Generic selectors
Exact matches only
Search in title
Search in content
Search in posts
Search in pages

Blog Công Nghệ

Bài viết mới

  • Master typescript
  • Sendmail trong Laravel sử dụng dịch vụ SES, SQS của Amazon
  • Install SSL in Nginx Ubuntu
  • Docker study
  • Bảo vệ: Hướng dẫn code bot Telegram easy game

Lượng truy cập

0074451
Visit Today : 47
Visit Yesterday : 178
This Month : 722
Who's Online : 6
© 2025 Blog Công Nghệ | WordPress Theme by Superbthemes