0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Laravel + PhpSpreadsheet で Excel の一部を切り出して PDF 生成してみた(現場DX事例)

Posted at

Laravel + PhpSpreadsheet で Excel の一部を切り出して PDF 生成してみた(現場DX事例)

自己紹介

はじめまして。
日々、現場業務を支える Web アプリケーション を開発しています。

最近は Laravel + Vue を中心に、工場や製造現場で使われる帳票管理や業務効率化の仕組み を作ることが多く、「紙文化をデジタルに置き換える」ことに強い関心を持つようになりました。

特に中小企業では紙文化がまだまだ根強く残っており、多くの製造現場では簡単にペーパーレス化ができないのが現状だと感じています。

この記事では、実際のプロジェクトで取り組んだ Excelの一部を切り出してPDFを生成する仕組み の一部を紹介します。
もし、この記事が中小企業の皆さんのお役に立てれば嬉しいです。


はじめに

製造現場では、工程や作業手順を 紙の帳票で伝える運用 がまだ多く残っています。
その代表例が「指示書」です。

指示書は、作業手順や材料の情報を記載した帳票で、従来はExcelで作成し、紙に印刷して現場へ配布していました。

しかし、この紙運用には以下のような課題がありました。

  • 印刷や配布作業に時間がかかる
  • 修正が入るたびに再印刷が必要で、情報伝達が遅れる
  • 作業記録が紙ベースなので、集計・分析がリアルタイムでできない

そこで、Webシステム+タブレットを活用して 指示書をデジタル化 する取り組みを進めています。


本記事のテーマ

今回紹介するのは、以下の機能です:

Excelファイルから必要な部分だけを抽出してPDFを生成する機能

ExcelをPDF化すればいいのでは??という疑問もあるかと思いますが、
例えば、指示書には、製造現場には不要な情報も多く記載されることもあり、もし、まるまるPDF化した場合のデメリットとしては、現場が確認する箇所が小さくなってしまったりして、指示内容が正確に伝わらない可能性があることです。


この記事で紹介すること

  • Laravel + PhpSpreadsheet を用いたExcelファイル処理の方法
  • 特定セルを切り出してテンプレートPDFに組み込む手順
  • 現場運用を想定した活用イメージ
  • 実装時の注意点と学び

使用技術スタック

分類 技術
バックエンド Laravel 9
PDF生成 PhpSpreadsheet + mPDF
フロント Vue 3 + Bootstrap 5
インフラ Nginx + PHP 8.0

mpdf/mpdf の導入が必要です。


💻 実装例:Excel → PDF

ステップ1:ライブラリのインストール

composer require phpoffice/phpspreadsheet
composer require mpdf/mpdf

ステップ2:Excelを読み込み、必要なセルだけ抽出

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Response;
use PhpOffice\PhpSpreadsheet\IOFactory;
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Pdf\Mpdf; // mPDFラッパー

class ReportController extends Controller
{
    public function exportPdf(): Response
    {
        $sourcePath   = storage_path('app/public/sample.xlsx');
        $spreadsheet  = IOFactory::load($sourcePath);
        $sourceSheet  = $spreadsheet->getActiveSheet();

        $template     = new Spreadsheet();
        $targetSheet  = $template->getActiveSheet();

        $targetSheet->setCellValue('B3', $sourceSheet->getCell('M4')->getValue()); // 項目A
        $targetSheet->setCellValue('F3', $sourceSheet->getCell('W4')->getValue()); // 項目B
        $targetSheet->setCellValue('E5', $sourceSheet->getCell('R4')->getValue()); // 項目C

        $writer  = new Mpdf($template);
        $pdfPath = storage_path('app/public/output.pdf');
        $writer->save($pdfPath);

        return response()->download($pdfPath)->deleteFileAfterSend(false);
    }
}

補足ポイント

  • IOFactory::load() で Excel ファイルを読み込む
  • 抽出した値をテンプレートに書き出す(出力レイアウトを固定化)
  • PhpOffice\PhpSpreadsheet\Writer\Pdf\Mpdf を使ってPDF化

まず、ここまでができれば、元の指示書から値を抽出して、新しいシートに転記するということが可能になります。
つまり、新しいシートをテンプレート化するというイメージです。後は、そのシートをPDF化するという処理を行えば、閲覧用のPDFファイルが生成できるという仕組みです。

また、値を抽出しているので、その値(製品名やロットナンバーなど)をDBに登録することで、後に検索を行うことも可能になります。


🏭 現場での運用イメージ

  • タブレットでPDFを直接表示
  • 印刷・配布作業が不要になり工数削減
  • 修正が即時反映され、最新情報をリアルタイムで共有
  • 作業記録をデジタル化 → 集計・分析もスピードアップ

💡 注意点

課題 対策
日本語が文字化けする mPDFに日本語フォント(IPA/源ノ角など)を導入し、OSフォントを認識させる
PDFレイアウトが崩れる テンプレート側でセルサイズ・マージン・行高を固定
Excelファイルが重い 一時ファイルやキャッシュを活用し、必要セルのみを読み込む

✅ まとめ

今回は、Excelファイルから必要な情報を切り出してPDF化する方法 を紹介しました。
紙運用からの脱却に向けた、現場DXの第一歩として有効な手法ではないでしょうか。


🔜 次回予告

この記事は初めての投稿ですので、反響を見て次回を公開するか考えています

  • Vue 3 を使ったタブレット向け UI 設計
  • 指示書と記録表を連携させるデータ管理
  • DXプロジェクト推進のための現場ヒアリング手法

🔗 参考リンク


🎯 最後に

本記事で紹介したような帳票からのPDF生成の仕組みは、中小企業でもスモールスタートで導入可能なDXの一歩です。もし、開発やコンサルティングに興味があれば、お気軽にコメントやメッセージください!
一緒に現場の課題を解決していけると嬉しいです # Laravel + PhpSpreadsheet で Excel の一部を切り出して PDF 生成してみた(現場DX事例)

自己紹介

はじめまして。
日々、現場業務を支える Web アプリケーション を開発しています。

最近は Laravel + Vue を中心に、工場や製造現場で使われる帳票管理や業務効率化の仕組み を作ることが多く、
「紙文化をデジタルに置き換える」ことに強い関心があります。

特に中小企業では紙文化がまだまだ根強く残っており、多くの製造現場では簡単にペーパーレス化ができないのが現状だと感じています。

この記事では、実際のプロジェクトで取り組んだ Excelの一部を切り出してPDFを生成する仕組み の一部を紹介します。
もし、この記事が中小企業の皆さんのお役に立てれば嬉しいです。


はじめに

製造現場では、工程や作業手順を 紙の帳票で伝える運用 がまだ多く残っています。
その代表例が「指示書」です。

指示書は、作業手順や材料の情報を記載した帳票で、従来はExcelで作成し、紙に印刷して現場へ配布していました。

しかし、この紙運用には以下のような課題がありました。

  • 印刷や配布作業に時間がかかる
  • 修正が入るたびに再印刷が必要で、情報伝達が遅れる
  • 作業記録が紙ベースなので、集計・分析がリアルタイムでできない

そこで、Webシステム+タブレットを活用して 指示書をデジタル化 する取り組みを進めています。


本記事のテーマ

今回紹介するのは、以下の機能です:

Excelファイルから必要な部分だけを抽出してPDFを生成する機能

ExcelをPDF化すればいいのでは??という疑問もあるかと思いますが、
例えば、指示書には、製造現場には不要な情報も多く記載される可能性もあり、
もし、まるまるPDF化した場合のデメリットは、現場が確認する箇所が小さくなってしまったりして、指示内容が正確に伝わらない可能性があることです。


この記事で紹介すること

  • Laravel + PhpSpreadsheet を用いたExcelファイル処理の方法
  • 特定セルを切り出してテンプレートPDFに組み込む手順
  • 現場運用を想定した活用イメージ
  • 実装時の注意点と学び

使用技術スタック

分類 技術
バックエンド Laravel 9
PDF生成 PhpSpreadsheet + mPDF
フロント Vue 3 + Bootstrap 5
インフラ Nginx + PHP 8.0

mpdf/mpdf の導入が必要です。


💻 実装例:Excel → PDF

ステップ1:ライブラリのインストール

composer require phpoffice/phpspreadsheet
composer require mpdf/mpdf

ステップ2:Excelを読み込み、必要なセルだけ抽出

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Response;
use PhpOffice\PhpSpreadsheet\IOFactory;
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Pdf\Mpdf; // mPDFラッパー

class ReportController extends Controller
{
    public function exportPdf(): Response
    {
        $sourcePath   = storage_path('app/public/sample.xlsx');
        $spreadsheet  = IOFactory::load($sourcePath);
        $sourceSheet  = $spreadsheet->getActiveSheet();

        $template     = new Spreadsheet();
        $targetSheet  = $template->getActiveSheet();

        $targetSheet->setCellValue('B3', $sourceSheet->getCell('M4')->getValue()); // 項目A
        $targetSheet->setCellValue('F3', $sourceSheet->getCell('W4')->getValue()); // 項目B
        $targetSheet->setCellValue('E5', $sourceSheet->getCell('R4')->getValue()); // 項目C

        $writer  = new Mpdf($template);
        $pdfPath = storage_path('app/public/output.pdf');
        $writer->save($pdfPath);

        return response()->download($pdfPath)->deleteFileAfterSend(false);
    }
}

補足ポイント

  • IOFactory::load() で Excel ファイルを読み込む
  • 抽出した値をテンプレートに書き出す(出力レイアウトを固定化)
  • PhpOffice\PhpSpreadsheet\Writer\Pdf\Mpdf を使ってPDF化

まず、ここまでができれば、元の指示書から値を抽出して、新しいシートに転記するということが可能になります。
つまり、新しいシートをテンプレート化するというイメージです。後は、そのシートをPDF化するという処理を行えば、閲覧用のPDFファイルが生成できるという仕組みです。

また、値を抽出しているので、その値(製品名やロットナンバーなど)をDBに登録することで、後に検索を行うことも可能になります。


🏭 現場での運用イメージ

  • タブレットでPDFを直接表示
  • 印刷・配布作業が不要になり工数削減
  • 修正が即時反映され、最新情報をリアルタイムで共有
  • 作業記録をデジタル化 → 集計・分析もスピードアップ

💡 注意点

課題 対策
日本語が文字化けする mPDFに日本語フォント(IPA/源ノ角など)を導入し、OSフォントを認識させる
PDFレイアウトが崩れる テンプレート側でセルサイズ・マージン・行高を固定
Excelファイルが重い 一時ファイルやキャッシュを活用し、必要セルのみを読み込む

✅ まとめ

今回は、Excelファイルから必要な情報を切り出してPDF化する方法 を紹介しました。
紙運用からの脱却に向けた、現場DXの第一歩として有効な手法ではないでしょうか。


🔜 次回予告

この記事は初めての投稿ですので、反響を見て次回を公開するか考えています

  • Vue 3 を使ったタブレット向け UI 設計
  • 指示書と記録表を連携させるデータ管理
  • DXプロジェクト推進のための現場ヒアリング手法

🔗 参考リンク


🎯 最後に

本記事で紹介したような帳票管理やPDF生成の仕組みは、中小企業でもスモールスタートで導入可能なDXの一歩です。
もし、開発やコンサルティングに興味があれば、お気軽にコメントやメッセージください!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?