2

cfspreadsheet を使用してクエリを Excel ファイルにエクスポートしています。それは機能しており、Excelシートを作成しています。ただし、問題は、列の 1 つ、つまりcard_numberに 15 桁の数字が含まれており、次のように表示されることです4.5421E+15。代わりに完全な数を表示する方法はあり4254218068670980ますか?

<!--- create manual query for demo --->
<cfset qData = queryNew("")>
<cfset queryAddColumn(qData, "NumericCol", "BigInt",["4254218068670980"])>
<cfset queryAddColumn(qData, "StringCol", "Varchar",["4254218068670980"])>
<cfset queryAddColumn(qData, "DecimalCol", "Decimal",["4254218068670980"])>

<!--- export to file --->
<cfspreadsheet action="write" 
        filename="c:/path/to/myFile.xls"
        query="qData" 
        overwrite="true">
4

2 に答える 2

2

完全な数値を表示するには、セルのフォーマットを定義して使用する必要があります。以下は、コードのサンプル コード スニペットです。

<cfscript> 
theFile=GetDirectoryFromPath(GetCurrentTemplatePath()) & "new_data.xls"; 
//Create a new Excel spreadsheet object. 
theSheet = SpreadsheetNew("Expenses"); 
//Set the value a cell. 
SpreadsheetSetCellValue(theSheet,"4254218068670980",1,4);
//Set value into another cell. 
SpreadsheetSetCellValue(theSheet,"4254218068670980",2,4);
// Define a format class for for number. 
longNum=StructNew(); 
longNum.dataformat = "0"; 
//Now use this class to format cell 
SpreadsheetFormatCell(theSheet,longNum,2,4); 
</cfscript>

サポートされているフォーマットは多数あります。完全なリストについては、こちらをご覧ください。また、SpreadsheetFormatCell と同様に、 SpreadsheetFormatColumnまたはその他の関連関数を使用することもできます。

于 2016-08-23T02:01:58.227 に答える
1

(コメントが長くなりました…)

FWIW、CFSpreadsheet は非常に単純なエクスポート用に設計されており、多くの機能はありません。特別な書式設定が必要な場合は、代わりにスプレッドシート関数を使用する必要があります。

現在のコードに最も近いものは、おそらくSpreadsheetAddRows(sheet, query)関数です。提供されたクエリ オブジェクトのデータをワークシートに入力します。Viv の回答に記載されているように、必要に応じて列をフォーマットできます。たとえば、値をテキストとして扱いたい場合は、次を使用します{dataformat = "@"}

<cfscript>
   SpreadsheetAddRows(theSheet, qData); 
   SpreadsheetFormatColumns(theSheet, {dataformat = "@"}, "1-3"); 
   SpreadSheetWrite(theSheet, "c:/path/to/myFile.xls", true);
</cfscript>

余談ですが、ドキュメント内の例は常に最良または最もクリーンであるとは限りません。コードを正確に「そのまま」使用するのではなく、それらを出発点と考えてください..

于 2016-09-01T01:09:23.000 に答える