Skip to main content

 

ファイル名を変更してWeb画面からExcelファイルを生成する

 

OutSystems

ファイル名を変更してWeb画面からExcelファイルを生成する

はじめに

OutSystemsプラットフォームをそのまま使用して複雑なExcelファイル(スタイルを含む)をネイティブに生成することはできません。そのままでできることは、RecordListToExcelを使用してプレーンフォーマット(デフォルトスタイル、色なしなど)のファイルを生成することのみです。

インターネットで広く周知されている代替手段は、HTMLページを提供することによる「Excelのハッキング」です。Excelでは一時的にHTMLファイルを開くことができ、このときHTMLページからExcelへの変換が試みられます。さらに、.XLS拡張子を付けてExcelファイルを保存することにより、オペレーティングシステムによって強制的にExcelが開かれます。これが、Excelエクスポートを簡単に実装するための通常のその場しのぎの方法とみなされます。

その場しのぎの方法でよくあるように、問題が発生する(または後で発生する)場合があります。

問題

このパターンの使用に関連する問題には、(少なくとも)2つの要因があります。

  1. Excelの進化
  2. OutSystemsプラットフォームの進化

1.Excelの進化

ファイルは厳密にはExcelファイルではないため、適切なExcelとは異なる処理がExcelにより選択される場合があります。Excelの進化に伴い、これらのファイルの処理が(セキュリティ上の理由などにより)変化する可能性があります。

これが原因で、Excelの新しいバージョンでファイルを開くことができなくなったり、開くときにセキュリティまたは破損に関する警告が表示されたり、コンテンツが正しく表示されなくなったりします。

2.OutSystemsプラットフォームの進化

OutSystemsプラットフォーム自体が進化し、それに伴ってプラットフォームによるHTMLファイルの生成方法が変化します。ExcelをWeb画面から生成している場合、アップグレードや、さらには更新/改定パッチのときにも、含まれるHTMLが毎回変更される可能性があります。これにより前のセクションと同じ問題が再び発生し、ファイルを開くことができなくなったり、セキュリティまたは破損に関する警告が表示されたり、コンテンツが正しく表示されなくなったりします。

また、エクスペリエンス全体でExcel自体の動作に一貫性がなくなる可能性があります。たとえば、Internet Explorerで埋め込みファイルを開いたときの動作が、Excelでファイルを直接開いたときと異なる場合があります。これは、Internet Explorerのセキュリティ設定やグループポリシーなどによる可能性があります。

解決策

この問題を適切に解決するには、HTMLファイルによるExcelの生成をやめる必要があります。ビルトインそのままでビジネスニーズに十分対応できない場合は、代わりに、拡張機能を作成し、適切なAPIと連携してExcelファイルを作成することができます。

わかりやすい提案として、MicrosoftのAPI(https://msdn.microsoft.com/en-us/lib.../bb448854.aspx)の使用が挙げられます。また、同じ用途の市販または無料のライブラリが多数あります。ForgeにあるOfficeUtilsコンポーネントは、連携などの実装の開始点として使用できます。このコンポーネントは、NPOI 2.2.1(.NETスタック)とApache POI 3.7(Javaスタック)を使用して作成されたものです。

管理された環境があるときや実証実験を短時間で行う必要があるとき、このその場しのぎの方法を利用することが適切である場合があります。
その場しのぎの解決策と適切な解決策の間に行う戦略的な解決策には、「症状の解消」(問題が起きるページのHTMLで特定のパターンを見つけ、ファイルをエクスポートする前に修正するなど)が含まれますが、これは一時的なものです。