SpreadsheetFormatColumns()を使用してスプレッドシートの列を「テキスト」にフォーマットしていますが、これを行う方法がわかりません。livedocsのすべてのフォーマットは、数値、通貨、または日付用です...次のようなものがあります。
SpreadsheetFormatColumns(mySpreadsheet、{dataFormat = "text"}、 "1-15")
そこに?これは本当に私を悩ませています...
ありがとう
SpreadsheetFormatColumns()を使用してスプレッドシートの列を「テキスト」にフォーマットしていますが、これを行う方法がわかりません。livedocsのすべてのフォーマットは、数値、通貨、または日付用です...次のようなものがあります。
SpreadsheetFormatColumns(mySpreadsheet、{dataFormat = "text"}、 "1-15")
そこに?これは本当に私を悩ませています...
ありがとう
ColdFusion 9.0.1 (アップデーター 1) では、SpreadsheetSetCellValue() を使用すると、以前に設定した形式が尊重されます。したがって、シートに入力するときに列を強制的にテキストにするには、3 段階のプロセスを使用できます。
以下は、.cfm にコピーしてそのまま実行できる例です (CF9.0.1 が必要です)。
<cfscript>
// Create a 2 column, 2 row query. The first column contains numbers or possible numbers we want formatted as text in our spreadsheet
q = QueryNew( "" );
QueryAddColumn( q,"NumbersAsText","VarChar",[ 01050094071094340000,"743059E6" ] );
QueryAddColumn( q,"Text","VarChar",[ "abc","def" ] );
// Get the column names as an array so we can get at them more easily later
columns = q.getMetaData().getColumnLabels();
// Create a new spreadsheet object
sheet = SpreadSheetNew( "test" );
// specify the column we want formatted as text
forceTextColumnNumber = 1;
// Use the query column names as column headers in our sheet
SpreadSheetAddRow( sheet,q.columnList );
// Add the data: the numbers will be inserted as numeric for now
SpreadSheetAddRows( sheet,q );
// Now we format the column as text
SpreadSheetFormatColumn( sheet,{ dataformat="text" },forceTextColumnNumber );
// Having formatted the column, add the column from our query again so the values correct
while( q.next() )
{
// Skip the header row by adding one
rownumber = ( q.currentrow + 1 );
// Get the value of column at the current row in the loop
value = q[ columns[ forceTextColumnNumber ] ][ q.currentrow ];
// replace the previously added numeric value which will now be treated as text
SpreadsheetSetCellValue( sheet,value,rownumber,forceTextColumnNumber );
}
// Download the object as a file
sheetAsBinary = SpreadSheetReadBinary( sheet );
filename = "test.xls";
</cfscript>
<cfheader name="Content-Disposition" value="attachment; filename=#Chr(34)##filename##Chr(34)#">
<cfcontent type="application/msexcel" variable="#sheetAsBinary#" reset="true">
デフォルトでは、クエリの最初の列の値は両方とも数値として扱われます (2 番目の列は HEX として扱われます)。この方法を使用すると、どちらも元の値をテキストとして保持します。
この表によると、テキスト プレースホルダーには「@」(引用符なし) を使用します。