既存のExcelファイル(xlsx や xls)を読み込み、セルに値を入れて、別名でExcelファイルを保存する際に、autosize="false"を指定していても、列幅が変わってしまう場合があります(通常は列幅が維持された状態で保存されます)。
これは、読み込んだExcelファイルが複雑な場合(列の結合などがある等)に起こりやすい模様です。autosize="false"が効かない理由はPOIのライブラリに依存するため不明ですが、思わぬ列幅が変更された場合の回避の方
ColdFusionの関数ではカラム幅を取得する関数が用意さ
【参考プログラム】
<cfspreadsheet action="read" src="test.xlsx" name="spdSheet">
<cfscript>
aColumnWidth = ArrayNew(1); //カラム幅格納用配列
objSheet=spdSheet.get
sh = objSheet.getSheetAt(0); //対象シート(今回は1シート目)を読み込む
idx = 1; //ループ開始値
while (idx LTE SpreadsheetGetColumnCount(spdSheet)) {
aColumnWidth[idx] = sh.getColumnWidth(idx-1);
idx += 1;
}
//セルに値をセットする処理を記入
idx = 1; //ループ開始値
while (idx LTE SpreadsheetGetColumnCount(spdSheet)) {
sh.setColumnWidth(idx-1, aColumnWidth[loop]);
idx += 1;
}
</cfscript>
<CFSPREADSHEET action="write" name="spdSheet" filename="#ExpandPath('out_tes
(参考サイト)
https://blog.java-reference.co
記事公開日:2022年03月30日
最終更新日:2022年03月31日
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.