我給我的客戶端模板,他們應該填充,然後他們上傳電子表格,我讀cfspreadsheet
的文件,以便將數據複製到數據庫表。ColdFusion CFSpreadsheet讀取空單元格
很容易。該模板只有一列。客戶端無法上載其中有多個列的工作表。這用於工作。
所以一個列標題是ING_CAS
但是當我在cfspreadsheet
讀取該文件,我得到COL_2
,COL_3
,ING_CAS
。因此,不僅空白單元格被讀取,而且由於此屬性headerrow="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>
你能告訴我們你的'cfspreadsheet'代碼嗎?我相信它應該默認忽略空單元格,否則每次都會讀取整個空白電子表格。你確定這些單元格是空白的並且沒有填充一些「隱形」字符。當您選擇空白行和列然後刪除時,它是否按預期工作? – 2013-05-02 15:37:46
聽起來像你的xls(x)有單元組合並居中,它將ing_cas放入col_3。嘗試使用A1中的ing_cas和A2中的數據重新生成模板並上傳新的電子表格。 – Travis 2013-05-02 15:39:45
您是否嘗試過將「髒」電子表格中的值複製到新文件中,保存併發布?我遇到了一個問題,即客戶在查看範圍外出現了一些奇怪的字符,並且炸燬了電子表格。 – steve 2013-05-02 15:39:50