2014-02-20 59 views
0

如何使用ColdFusion10將Excel電子表格上傳到現有表格中? 我有一個已保存的Excel電子表格,我有CFQuery(「myQuery」)輸出我需要的數據。如何循環查詢並導入到現有表中?如何使用coldfusion將Excel電子表格上傳到現有表格中?

數據庫:MS SQL服務器

至此,我明白,我需要遍歷查詢我有了所有的數據。

<cffunction name="uploadDogSheet" access="public" output="yes" returnType="void" 
    hint="upload the spreadSheet"> 

<cfset currentRowChecked = "1"> 
<cfset lastRow = numberOfRows> <!-- sets the number of rows that it will validate--> 


    <cfspreadsheet 
    action="read" 
    src="#SESSION.theExcelFile#" 
    headerrow= "1" 
    excludeHeaderRow = "true" 
    query = "allDoggyData" 
    rows = "1-#lastRow#" />  


    <cfscript>  

     allDataQuery = new Query(
     sql ="SELECT * FROM allDoggyData", 
     dbtype = "query", 
     allData = allData); 
     allDataQueryResult = allDataQuery.execute().getResult(); 
    </cfscript> 




    <cfloop query="allDoggyData"> 

<CFQUERY DATASOURCE="#mydatabase#" name="input_req"> 
insert into temp_dog_upload (dogNameColumn, dogBreedColumn, dogColor) 
      values 
(
<cfqueryparam value="#allDoggyData.dogNameExcelColumn#" cfsqltype="cf_sql_varchar">, 
<cfqueryparam value="#allDoggyData.dogBreedExcelColumn#" cfsqltype="cf_sql_varchar">, 
<cfqueryparam value="#allDoggyData.dogColorExcelColumn#" cfsqltype="cf_sql_varchar"> 
)    
</CFQUERY> 

</cfloop> 

<p>The sheet has been uploaded!<p></span> 

+1

你使用了什麼數據庫? MSSQL,MYSQL還是? – fyroc

+0

數據庫:MS SQL Server – ConfusedDeer

+0

爲什麼不直接在Management Studio中使用「導入數據」任務? – fyroc

回答

4

你所問的是非常簡單的。將電子表格上傳到服務器,然後使用cfspreadsheet進行閱讀。

<cfspreadsheet 
action="read" 
src = "filepath" 
columns = "range" 
columnnames = "comma-delimited list" 
excludeHeaderRow = "true | false" 
format = "CSV|HTML" 
headerrow = "row number" 
name = "text" 
query = "query name" 
rows = "range" 
sheet = "number" 
sheetname = "text"> 

則簡單地說,你在cfspreadsheet

<cfloop query="queryname"> 

    <cfquery name="" datasource=""> 
     INSERT INTO .... 
    </cfquery 

</cfloop> 

附註中定義的查詢循環這是我的答案,在您刪除帖子之前,我無法再提交我的答案。

+0

這是我目前的,bul我得到'錯誤執行數據庫查詢'錯誤:插入到temp_dog_upload(dogNameColumn,dogBreedColumn)值 ( ) \t \t \t \t ConfusedDeer

+0

你能有確切的錯誤,您正在使用的精確代碼編輯你的問題?包括循環和cfspreadsheet? – fyroc

+0

更新的問題。 – ConfusedDeer

2

有一對夫婦的方法來服用。他們都有一個非常重要的共同細節。首先將電子表格數據放入登臺表中。首先根據需要處理和驗證,然後從暫存表寫入主表。

方法1是讓您的網頁接受來自用戶的文件並將它們放在某個地方。然後,編寫一個查找這些文件的SSIS包,將它們加載到登臺表中,然後開始工作,直到完成作業。然後編寫代理來安排此作業以適當的時間間隔運行。

方法2是繼續使用ColdFusion。您已將電子表格讀入查詢。循環查詢以填充登臺表並繼續處理。

有幾件事要注意每種方法。對於方法1,可能有多個文件需要處理。你的軟件包將不得不處理。對於方法2,可能有兩個用戶正在同時處理文件。你必須確保這兩個請求不會互相干擾。

至於你的具體問題,「我怎麼通過查詢和進口環到現有的表?」,類似這樣的:

<cfoutput query="yourquery"> 
<cfquery datasource="something"> 
insert into atable 
(fields go here) 
values 
(values, using cfqueryparam go here) 
</cfquery> 
</cfoutput> 
+0

這是我目前的,bul我得到'執行數據庫查詢錯誤'錯誤:插入到temp_dog_upload(dogNameColumn,dogBreedColumn)值(> ConfusedDeer

+0

我沒有回答你的問題,因爲我需要才能工作。 – ConfusedDeer

+0

Unanswering很好,但您的理由無效。具有查詢屬性的cfoutput實際上與具有查詢屬性的cfloop相同。如果您使用cfloop,您仍然需要一個cfoutput標記來訪問該查詢中的值。如果採取這種方法,請將cfloop塊放入cfoutput塊。否則,你會在循環中做額外的工作。 –

相關問題