ホーム>source

C#を使用してspss(.sav)ファイルを.csvファイルに変換できますか?ここでは、1つの.savファイルを参照し、同じ.csvファイルを生成する必要があります。変換用のリンクまたはコードを誰でも提供できます。

100個のspssファイルがあるため、親フォルダーから各ファイルを取得し、各savファイルに対応するcsvファイルを生成するコンソールアプリを作成する必要があります

あなたの答え
  • 解決した方法 # 1

    いくつかの可能性があります。

    1)ライブラリを使用する

    SPSSファイルを読み込むためのライブラリがあるようです。

    NuGetパッケージをインストールできますSpssLib そして、 SpssReader を作成します   FileStream からのオブジェクト

    using(var fileStream = File.OpenRead("spss-file.sav"))
    {
        var spssReader = new SpssReader(fileStream);
        // read variable names from spssReader.Variables and store to CSV
        // read records from spssReader.Records and store to CSV
    }
    
    
    2)ソリューションを手作業でコーディングする

    何らかの理由でライブラリを使用できない場合は、ソリューションを手動でコーディングできます。

    2.1)PSPPをご覧ください

    If(および場合のみ)GPLの下でコードをリリースすることを計画している(または少なくともそれで問題ない)場合は、PSPPソースコードを確認できます。とにかく、コードをGPLできない場合は、しないでください。行う。それ。 代わりにクリーンルームでの実装を行ってください。そうしないと、常に滑りやすい状況になってしまいます。

    2.2)仕様をご覧ください

    オンラインでSAVファイル形式のドキュメントがあります。時間がかかる場合がありますが、最終的にはこれをCSVに変換する方法を理解することができます。

    3)PSPPを使用する

    GPL対応ソフトウェアの出荷に問題がない場合(または、何らかの方法でオンデマンドでファイルをダウンロードできる場合)、PSPPコンソールアプリケーションを利用できます。 PSPPは、SPSSのGNU代替品であり、SPSSが提供する機能を提供することを目指しています(ただし、まだ提供していません)。明らかに、便利な小さなCLIツール pspp-convert が付属しています  (ドキュメントを参照してください)。コマンドライン経由で呼び出すことができます

    pspp-convert input.sav output.csv
    
    

    Process の助けを借りて  クラスでは、別のプロセス(この場合はプログラム)を開始できます。 pspp-convert の場合  現在のディレクトリ、または PATH にある任意のディレクトリにある  変数、ファイルをCSVに変換するのは簡単です

    public ConvertSpssFile(string inputFile)
    {
        var outputFile = Path.ChangeExtension(inputFile, "csv");
        Process.Start("pspp-convert", $"{inputFile} {outputFile}");
    }
    
    

関連記事

  • 前へ java - JPAクエリ:サブクエリをグループ化条件に結合する
  • 次へ amazon s3 - spark-sql-streamingからhdfs&s3への書き込み中に小さなファイルの問題を回避する方法