使用C#将.sav(spss)文件转换为.csv文件

时间:2018-08-20 11:08:02

标签: c# export-to-csv spss

我可以使用C#将spss(.sav)文件转换为.csv文件吗?在这里,我想浏览1个.sav文件,并且需要生成相同的.csv文件。任何人都可以提供任何链接或代码进行转换。

我有大约100个spss文件,因此我需要创建一个控制台应用程序,它将从父文件夹中获取每个文件并为每个sav文件生成相应的csv文件

1 个答案:

答案 0 :(得分:3)

有几种可能性:

1)使用库

There seems to be a library to read SPSS files

您可以安装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

如果(并且仅当)您计划(或至少可以)根据GPL发布代码,则可以查看PSPP源代码。无论如何,如果您不能GPL代码,请不要。做。 。相反,请执行无尘室实施,因为否则,您将永远处于湿滑的环境中。

2.2)看一下规格

在线有documentation个SAV文件格式。这可能需要一些时间,但是您最终可能会弄清楚如何将其转换为CSV。

3)使用PSPP

如果运送GPLed软件没有问题(或能够按需下载文件),则可以使用PSPPs控制台应用程序。 PSPP是SPSS的GNU替代品,SPSS旨在(但尚未)提供SPSS提供的功能。显然,它附带了一个方便的小型CLI工具pspp-convertsee the documentation)。您可以通过命令行使用

来调用它
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}");
}