cfspreadsheet またはSpreadSheetRead()で特定のシートを読み込む際の注意事項

cfspreadsheetタグ またはSpreadSheetRead関数で、あるスプレッドシートから「特定のシートを読み込み」→「シートを書き出し」を行った際の処理が、ColdFusion 2016で変更されました。

これまでのバージョンでは、cfspreadsheetタグやSpreadSheetRead関数で「シートを指定して読み込んだ場合」でも、シートを書き出す際に「元々存在していた他のシートも一緒に保存される」という動作でした。この動作については、不具合として報告され、その後メーカーでの調査を経て、ColdFusion 2016で修正されました。

https://bugbase.adobe.com/index.cfm?event=bug&id=3698462

修正が行われたことにより、ColdFusion 2016では、「シートを指定して読み込んだ場合」は、書き出す際には「指定したシートだけが保存される」動作となります。

このColdFusion 2016での動作の変更が、既存の処理に影響を及ぼす場合は、下記の内容にてプログラムの変更を行って従来と同等の動作に変更下さい。

手順

  1. cfspreadsheetタグ またはSpreadSheetRead関数でファイルを読み込む際に、シートを指定しない。

    例: <cfspreadsheet action="read" src="#ExpandPath(test.xls)#" name="theSheet" sheetname="サンプル" >
     
  2. 手順1の後、SpreadsheetSetActiveSheet関数やSpreadsheetSetActiveSheetNumber関数で、操作したいシートをアクティブ状態にする

    例: <cfset SpreadsheetSetActiveSheet(theSheet, "サンプル")>
     
  3. 手順2. で1番目(一番左)以外のシートを操作した時は、再びSpreadsheetSetActiveSheet関数やSpreadsheetSetActiveSheetNumber関数を使用して、1番目(一番左)のシートをアクティブ状態に変更する

    例:<cfset SpreadsheetSetActiveSheetNumber(theSheet,1)>(1番目のシートをアクティブにする)
    • この処理を行わないでファイルを書き出すと、Excelで開いた時にシート名は一番左が選択されているにも関わらず、内容は2.で選択したシートが表示されるという現象が発生したため、それを回避する目的で行っています。

 

※上記の手順はColdFusion2016 を対象にご案内していますが、ColdFusion 11でも同様に動作します。

 


記事公開日:2016年07月07日
最終更新日:2016年07月08日

 


x

Sample Modal Window

This is just a sample…

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent suscipit iaculis libero sed tristique. Quisque mollis dolor non tellus placerat vitae sodales lectus porta. Curabitur ut suscipit tellus. Maecenas rhoncus, ante vitae vehicula vestibulum, metus sapien dapibus tellus, et mattis dolor neque vitae nisl. Nullam eleifend ultrices ipsum eget pretium. Curabitur semper metus ut ante adipiscing nec volutpat sem rutrum. Nullam a nisi lacus, non interdum ante. Vivamus ante augue, commodo vel egestas sed, pharetra nec dui. Quisque sed tellus felis. Donec ipsum mauris, sagittis eu accumsan in, aliquam non ipsum.

Vestibulum tempor nunc nec felis scelerisque eget elementum erat dignissim. Ut vel ipsum mollis orci venenatis luctus. Aenean vehicula quam vel quam porttitor ac iaculis elit pulvinar. Proin consequat, ipsum eu venenatis semper, justo turpis posuere tortor, ac placerat metus nisl et lectus. Nulla cursus dui id nunc ullamcorper sed semper nisl lobortis. Aliquam erat volutpat. Phasellus arcu ante, imperdiet in ornare sed, laoreet eu massa.