2016-11-21 34 views
1

我有excel文件,可以在一些字段中包含逗號。這可能會導致問題,如果我想使用cfspreadsheet將我的文件轉換爲csv。我想知道是否有replaceconvert\所有逗號。在我替換所有逗號後,我將能夠使用cfspreadsheet創建csv。這裏是我的代碼如何閱讀我的文件:如何在ColdFusion中替換.xlsx文件中的逗號?

<cfspreadsheet action = "read" format="csv" src="filePath\myFile.xlsx" name="csvvar"> 

如果任何人都可以幫助解決這個問題,請讓我知道。謝謝。

+0

對於這種情況,cfhttp可能比cfspreadsheet更好的標籤選擇。詳細信息在文檔中。然而,話雖如此,您的csv文件必須將數據用雙引號才能確定哪些逗號是分隔符,哪些是數據的一部分。 –

+0

@DanBracuk我想在創建csv文件之前替換逗號。我的文件在.xlsx中,我想用\這種方式替換,我的csv將跳過所有\。你也可以提供任何可以用cfhttp標籤完成的例子嗎? –

+0

我誤解了這個問題。我以爲你想讀取一個CSV文件。話雖如此,如果意圖是創建一個csv文件,我建議雙引號的所有數據單元格,以便數據中的逗號將更少。 –

回答

1

從Excel轉換爲查詢。然後,在每行的單元格數據中,將「,」替換爲「\」。像這樣的東西

<cfspreadsheet 
action = "read" 
src="filePath\myFile.xlsx" 
query="excelquery" 
sheet="1"> 

<!--- Create CSV file in current directory---> 
<cffile action="write" file="#expandpath('result.csv')#" output=""> 

<cfset columns = arraynew(1)> 
    <!--- Store the list of column names as an array ---> 
<cfset columns = listToArray(excelquery.ColumnList)> 

<cfoutput query="excelquery"> 
<cfset rowList = ""> 

<cfloop from="1" to="#arraylen(columns)#" index="n"> 
    <cfset colName = columns[n]> 
    <cfset cellData = evaluate("#colName#[currentrow]")> 

    <!--- Replace , by \ in each cell ---> 
    <cfset cellData = replace(cellData, ",", "\", "all")> 

    <!--- Comma-separated row data ---> 
    <cfset rowList = listAppend(rowList,cellData)> 
</cfloop> 

<!--- Place a carriage-return at the end of the row ---> 
<cfset rowList = rowList & '<br>'> 

<!--- Append row to CSV file ---> 
<cffile action="append" file="#expandpath('result.csv')#" output="#rowList#" > 
</cfoutput>