1

queryを使って作成しcfspreadsheetました。クエリをタブ区切りのテキスト ファイルに変換できるかどうか疑問に思っています。これはクエリを取得するための私のコードです:

<cfspreadsheet action="read" src="C:\myFiles\Records.xlsx" query="myQuery" headerrow="1">

これは、cfquery で表された Excel からの私のレコードのリストです。

    FIRST_NAME  LAST_NAME   DOB     GENDER  
1   FIRST_NAME  LAST_NAME   DOB     GENDER 
2   Mike    Johns   01/12/98    M   
3   Helen   Johns   2/2/01  F

可能であれば、テキスト ファイルを次のようにしたいと考えています。

FIRST_NAME  LAST_NAME   DOB     GENDER 
Mike    Johns   01/12/98    M   
Helen   Johns   2/2/01  F

値と \n の間のタブ区切り文字で改行を作成します。試してみ.csvましたが、上記のようにファイルを整理できませんでした。.xlsxまた、ファイルを変換する他の方法があれば.txt教えてください。コマンドを探してxp_cmdshellいましたが、私の場合に役立つものは何もありません。

.csv ファイルを取得するために使用したコードを次に示します。

<cfspreadsheet action="read" format="csv" src="C:\myFiles\Records.xlsx" name="myCsv">

次にFileWrite()、.txt ファイルを取得していました。

<cfscript> 
    FileWrite("C:\myFiles\Records.txt", "#myCsv#"); 
</cfscript>

上記のコードでタブ区切りのテキスト ファイルが得られましたが、フィールドの値が空の場合、それらの列が消えてしまうという 1 つの問題が発生しました。たとえば、GENDER 列に値がない場合、その列は作成されませんでした。

Mike    Johns   01/12/98
4

1 に答える 1

1

これは文字通り、クエリの結果セットをタブ区切りの CSV ファイルに変換する問題と見なされる場合があります。つまり、cfspreadsheet は関与しません。あなたからの同様の質問に対する私が与えた答えを少し修正することで、あなたは答えを得るでしょう:

<cfspreadsheet 
action = "read" 
src="C:\myFiles\Records.xlsx" 
query="excelquery" 
sheet="1">

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

<cfset columns = arraynew(1)>
<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]")>

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

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

<!--- Append row to CSV file --->
<cffile action="append" file="#expandpath('result.csv')#" output="#rowList#" >
</cfoutput>
于 2016-11-23T06:32:30.960 に答える