1

クライアントに入力するテンプレートを提供し、スプレッドシートをアップロードしてcfspreadsheet、データをデータベーステーブルにコピーするためにファイルを読み取ります。

とても簡単。テンプレートには 1 つの列しかありません。クライアントは、複数の列を含むシートをアップロードできません。これは以前は機能していました。

したがって、1 つの列ヘッダーは次のようING_CASになりますが、ファイルを読み込むと , ,がcfspreadsheet得られます。したがって、空白のセルが読み取られるだけでなく、この属性によりデフォルトの名前が付けられます。COL_2COL_3ING_CASheaderrow="1"

私はここで途方に暮れています。テンプレートをダウンロードし続け、余分な空白の行と列を選択して削除しますが、クライアントがファイルを取得すると、ファイルを制御できなくなります。

cfspreadsheet空白のセルを無視する、私が見逃している奇妙な設定はありますか?

<cfspreadsheet action="read" src="#theFile#" query="SpreadSheetData" headerrow="1">
<cfdump var="#SpreadSheetData#" />

COL_(n) 列を削除するヘルパー関数を作成することになりました。

<cffunction name="CleanExcelQuery" access="public" returntype="query" output="false" hint="Strips out blank column headers picked up on read.">
    <cfargument name="SpreadSheetQuery" type="query" required="true" />

    <cfset var theColumnHeaders = SpreadSheetQuery.columnList>
    <cfset var theNewColumnHeaders = "">

    <cfloop list="#theColumnHeaders#" index="h">
        <cfif uCase(left(h,  4)) IS NOT "COL_">
            <cfset theNewColumnHeaders = ListAppend( theNewColumnHeaders,  h )>
        </cfif>
    </cfloop>

    <cfquery name="newSpreadSheetQuery" dbtype="query">
        Select #theNewColumnHeaders#
        From SpreadSheetQuery
    </cfquery>

    <cfreturn newSpreadSheetQuery />
</cffunction>
4

2 に答える 2

0

常に読み取りたい行がわかっている場合は、次のように使用できます。

<cfspreadsheet action="read" src="#path#" query="data" headerrow="1"  excludeHeaderRow = "true"   columns = "1-5"  >

上記のコードは、列 1 から 5 を読み取ります。Leigh のソリューションを使用して最初の 3 列を読み取ることも、columns=1,3,6(私の記憶が正しければ) カスタム範囲から読み取ることもできます。

パーツは、columns読みたい列だけを読み飛ばさずに読み上げます。これを使用してクライアントからのファイルを読み取りましたが、通常、その形式のために「空白」ではない列がいくつか表示されます。

'column' オプションがサポートする他のエントリを確認するために、cfspreadsheet の Cf ドキュメントを確認することもできます。

于 2013-05-03T21:23:13.037 に答える