5

大規模な Excel スプレッドシートを SQL Server 2008 データベースにインポートするスクリプトを作成しています。1 つの細かい点を除いて、すべてが正常に機能しています。

シート内のセルに複数のオプション (<select>ドロップダウン メニューなど) がある場合、選択されたオプションのみが取得されます。使用されているオプションだけでなく、セルが持つすべての可能なオプションを取得したい (理由については、SQL クエリを参照してください)

Google と S/O で回答を検索しましたが、この特定の状況に対する解決策は見つかりませんでした。これは、私が使用しているスプレッドシート関数へのリンクです。

エクセル シートをお見せすることはできませんが、シートのトラバースは正しいと考えて間違いありません (テスト済みです)。

これが私のコードです:

<cfspreadsheet action="read" src="spreadsheet.xlsx" name="sheet">
<cfoutput>
    #sheet.rowcount-3#
<cfloop from="2" to="#sheet.rowcount-3#" index="row">
    <cfquery datasource="Questions" result="rState">
        INSERT INTO States
        (
            State,
            StateAbbr
        )
        VALUES 
        (
            <cfqueryparam cfsqltype="cf_sql_varchar" value="#SpreadsheetGetCellValue(sheet,row,1)#">,
            <cfqueryparam cfsqltype="cf_sql_varchar" value="#SpreadsheetGetCellValue(sheet,row,2)#">
        )
    </cfquery>
    #SpreadsheetGetCellValue(sheet,row,1)#<br />
    #SpreadsheetGetCellValue(sheet,row,2)#<br />
    <cfloop from="3" to="15" index="col"> <!--- multi row selection (edit based on excel sheet col relationship) --->
        <cfif SpreadsheetGetCellValue(sheet,row,col) EQ "">
            <cfset SpreadsheetSetCellValue(sheet,"N/A",row,col) />
        </cfif>
        <cfquery datasource="Questions" result="rResponse">
            IF NOT EXISTS 
            (
                SELECT Response
                FROM Responses
                WHERE Response=<cfqueryparam cfsqltype="cf_sql_nvarchar" value="#SpreadsheetGetCellValue(sheet,row,col)#">
            )
            INSERT INTO Responses
            (
                Response
            )
            VALUES
            (
                <cfqueryparam cfsqltype="cf_sql_nvarchar" value="#SpreadsheetGetCellValue(sheet,row,col)#">
            )
        </cfquery>
        #row#X#col#<br />
        #SpreadsheetGetCellValue(sheet,row,col)#<br />
    </cfloop>
</cfloop>
</cfoutput>

編集:使用している Excel シートを表示することはできませんが、リストを再作成したので、どのような種類のドロップダウン セルについて話しているかがわかります。注:私が使用しているシート、オプションリストはセルで構築されていませんでした。作成者は検証句で静的値を使用しました!!!

4

1 に答える 1