質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.31%
PDF

PDF(Portable Document Format)とはISOによって国際標準として制定されている電子ドキュメント用の拡張子です。

Q&A

解決済

1回答

4981閲覧

【PDF⇒Excel変換】パワークエリで表を取込むとレイアウトが崩れてしまう

koburon

総合スコア31

PDF

PDF(Portable Document Format)とはISOによって国際標準として制定されている電子ドキュメント用の拡張子です。

0グッド

0クリップ

投稿2023/07/04 07:21

実現したいこと

社報のPDFファイルに人事異動に関する一覧表があり、
これをExcelファイルに変換してmySQLなどのデータベースに取り込めるよう整理したいと思います。

前提

人事情報一覧は以下のようにまとめられています。

  1. 表は「新部署・役職」「前部署・役職」「氏名」の3列で構成
  2. 表には枠線がない
  3. セルの幅は決められており、文字数が少なければ文字列の間隔が広く表示され、多ければ折り返して表示される

個人情報の為、元データをそのまま掲載することはできませんが、
元のPDFにおける表のイメージは以下の通りです。
PCやスマホなど閲覧している媒体によりレイアウトが崩れる可能性がありますがご容赦ください。

PDF

1        本社営業部課長      2依 願 退 職 兼北海道支社営 田中太郎 3        業部課長代理       4        本社営業部主任      5本社営業部課長 兼北海道支社営 鈴木次郎 6        業 部 主 任      7        本社営業部一般      8本社営業部主任 兼北海道支社営 山田三郎 9        業 部 一 般     

試したこと

以下の手順でPDFをExcelに変換しました。

  1. Excelを起動し、「データ」⇒「データの取得」⇒「ファイルから」⇒「PDFから」の順にクリック
  2. 変換したいPDFファイルを選択し、「インポート」をクリック
  3. ナビゲーターが表示されたら、今回のPDFファイルは31ページまであるので「Page001」から「Page031」を選択し、「データの変換」をクリック
  4. パワークエリエディターが表示されるので、「閉じて次に読み込む」をクリック
  5. 読み込み先を選択する画面で、「新規ワークシート」を選び「読み込み」をクリック
  6. 「Page001」~「Page031」および「追加1」のシートが作成

発生した問題

「追加1」のシートにPDFファイルの複数ページを結合した結果が出力されました。元のPDFのような3列の表を想定していたのですが、「文字間隔があり空白のあるセル」や「文字数が多く折り返し表示されるセル」があるためか、レイアウトが崩れて出力されてしまいます。

例えば、1列目の「依願退職」の部分で、空白文字含め1文字ずつ格納された列が7つ出来てしまいます。
また、2列目で折り返し表示の文字は、3行で出力されました。

レイアウトを崩さないようにExcelファイルが作成する方法はあるでしょうか。
原因は、OSやOfficeのバージョンによるものか、あるいはOfficeやOS側で何か設定し忘れているのでしょうか。
思い当たる方いらっしゃいましたらご意見いただけると幸いです。
どうしても解決できない場合は最終手段として、PDF化する前の元のExcelファイルをもらいますが、
その前にできるだけ手元にあるPDFファイルのみで解決したいと思います。
よろしくお願いいたします。

補足情報(FW/ツールのバージョンなど)

OS:64bit Windows10 Pro バージョン20H2(OSビルド 19042)

Office:Microsoft 365 バージョン 2306(ビルド 16529.20154)

Adobe Acrobat Reader :バージョン2023.003.20215

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sk.exe

2023/07/04 09:03 編集

> 社報のPDFファイルに人事異動に関する一覧表があり そのPDFファイルがどのようにして作成されたのかが不明なので、現時点では誰にも回答のしようがないと思います。 例えば、その社報が Word か Excel によって作成された文書であり、それをPDF形式に変換して社内に配布されているということなのであれば、PDFからデータを取り込もうとするより、変換元となった Word ドキュメントや Excel ブックを提供してもらった方が良いはず。 > 元のPDFのような3列の表を想定していたのですが、「文字間隔があり空白のあるセル」や > 「文字数が多く折り返し表示されるセル」があるためか、レイアウトが崩れて出力されて > しまいます。 > 例えば、1列目の「依願退職」の部分で、空白文字含め1文字ずつ格納された列が > 7つ出来てしまいます。 > また、2列目で折り返し表示の文字は、3行で出力されました。 仮にPDFファイルの変換元が Word ドキュメントであるとして、段落や表のセル内で均等割り付けが行われていれば、そういう結果が返されたりします。 そういった場合は、複数のtext型の列を1つの列として統合するステップを追加する必要があるでしょう。
sk.exe

2023/07/05 01:44

> どうしても解決できない場合は最終手段として、PDF化する前の元のExcelファイルをもらいますが と記載されていましたね。失礼しました。
guest

回答1

0

ベストアンサー

PDF化する前の元のExcelファイルをもらいます

とあるので、とりあえず次のような例を想定した場合。

読込対象となるPDFファイル

  • PDFファイルの元となったのは、次のようなレイアウトのExcelワークシートである。

イメージ説明

  • このワークシートを、Excelの[PDF または XPS]コマンドを用いてPDFファイルとして出力されたものとする。

イメージ説明

Power Query による読取結果

  • Pdf.Tables 関数を使用し、上記のPDFファイルから次のようなテーブルが検出されたものとする。

イメージ説明

上記の結果を踏まえての課題

  • 不必要なレコード(1~2行目)を除外する。

  • 不必要な列([Column9])を除外する。

  • [Column1]から[Column7]までの7つの列を1つの列に統合する。

  • 3行ごとにレコードを1つのレコードに統合する。

  • 各列の名前をリネームする。

といった処理を更に追加する必要があります。

ただこれもあくまでPDFの読取結果が比較的まともだった場合の例に過ぎず、元となったExcelワークシート側のレイアウトや各セルの値/書式、PDFファイルへの変換手段の違いによって、実際にテーブルとして取得される結果は大きく異なります。

個人情報の為、元データをそのまま掲載することはできません

したがって、現物が見られない限りはこれ以上答えられることはありません。

投稿2023/07/05 03:13

sk.exe

総合スコア1066

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

koburon

2023/07/05 06:15

sk.exe様 回答ありがとうございます。 例として挙げたデータを再現していただき、解説が分かりやすいです。 現物をお見せできず申し訳ありません。 空白文字が存在した場合不要な列が作成させるのは回避できないようですね。 上記で提案いただいた処理で3列におさめるようにしようと思います。 こちらをベストアンサーとさせていただきます。 ありがとうございました。
sk.exe

2023/07/05 07:22

「空白『文字』が存在した場合」というより、「それぞれの文字と文字との間に一定の『間隔』が空いているか否か」「横方向/縦方向の座標が一致/近似しているか」「連続した1つの文字列、1つの領域として解釈し得るか」といった境界検出処理によって、個々の文字/文字列がレコード/列/セルに分割、配置されるようなアルゴリズムになっていると考えられます。 私が例示したサンプルでは、セル内の文字列を均等割り付けした結果として左右の文字間隔や上下の行間隔が開き過ぎた(「境界」が生じた)ことが複数のセルに分割された原因である(意図的にそうなるように作った)わけですが、均等割り付けが設定されていても実際の文字間隔/行間隔が狭ければ(「境界がない」と解釈されれば)1つのセルとして配置される場合もあります。 そういったわけで「元となったExcelワークシート上における表の構造」と「PDFファイルから読み取られたテーブルの構造」は必ずしも一致しませんし、実際にそのPDFファイルを読み取らせ、その解析結果を見てみない限り、正規形テーブルへの変換処理が容易であるか、具体的にどのようなクエリを作成すべきか、といったことは判りません。 なので私の回答もあくまでヒント程度のものです。 > 現物をお見せできず申し訳ありません。 実際の現物を公開できないのは当然のことです。お気になさらず。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.31%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問