0

私はPowerBuilderを初めて使用するので、データウィンドウのSaveAs()メソッドを使用するときに、列名の「表示」値を維持できるかどうかを知りたいと思います。現在、私のレポートには「NuméroPB」や「Poste1-3」などの列が表示されていますが、保存するとデータベースの名前が表示されます。つまり、「no_pb」と「pos_1_3」..。

デプロイされたアプリケーションで作業しているので、変更と実装をできるだけユーザーフレンドリーにする必要があります。そうすれば、彼らはそれについて何も理解しません。

私はすでにdw2xlsapiを使用してレポートの正確なコピーを保存していますが、生データのみを保存するオプションが必要であり、APIを使用してそれを実現することはできないと思います。

また、ExcelOLEオブジェクトを使用しないように求められました...

誰かアイデアがありますか?

ありがとう、マイケル

4

2 に答える 2

1

dw.saveas(<string with filename and path>,CSV!,TRUE)データウィンドウデータをコンマ区切りの値のテキストファイルとして保存します。最初の行には列ヘッダー(dwペインタのデータベース名)が含まれます。

保存の列見出しを設定するには、最初に次のデータにアクセスできます。

any la_dwdata[]              // declare array   
la_dwdata = dw_1.Object.Data // get all data for all rows in dw_1 in the Primary! buffer

ここから、最初に一連の文字列と必要な列名で構成される出力ファイルを作成し、次に配列からのデータを文字列に変換します(配列をループします)。値の間にコンマを挿入し、ファイルに「CSV」拡張子を付けて名前を付けると、Excelに読み込まれます。このアプローチには非表示のデータも含まれるため、ユーザーが表示したくない場合は、他のロジックを使用してそれらを除外する必要があります。

これで、タブで区切られたデータの行と、それぞれの最後にあるcrlfで構成される文字列ができました。「ヘッダー文字列」は、「blah、blah、blah〜r〜n」の形式のユーザーフレンドリーな列名で作成します(これは、最後にcrlfが付いたコンマで区切られた3つの「blah」文字列です)。

次に、dw_1.Object.Dataから取得した文字列を解析して最初の行を見つけ、それを取り除き、作成したヘッダー文字列に置き換えます。replaceメソッドを使用して、残りのタブをコンマに置き換えることができます。これで、文字列を.CSV拡張子の付いたファイルに保存し、Excelに読み込むことができます。

于 2012-08-28T21:16:06.013 に答える
0

これは、表示列が生の列と一致することを前提としています。データストアを作成しますds_head。レポートDWをDataObject(データなし)として設定します。保存したいレポートでデータウィンドウを呼び出していますdw_report。完了したら、2つの一時ファイルを削除する必要があります。EncodingUTF8!データウィンドウのデータによっては、ANSIの代わりにまたは他のエンコーディングを指定する必要がある場合があります。注:ExcelはこのCSVを開きますが、ヘッダー行の末尾にコンマが含まれているため、他の一部のプログラムではこのCSVが気に入らない場合があります。

ds_head.saveAsFormattedText("file1.csv", EncodingANSI!, ",")
dw_report.saveAs("file2.csv", CSV!, FALSE, EncodingANSI!)
run("copy file1.csv file2.csv output.csv")
于 2012-09-14T14:59:04.157 に答える