我可以使用C#将spss(.sav)文件转换为.csv文件吗?在这里,我想浏览1个.sav文件,并且需要生成相同的.csv文件。任何人都可以提供任何链接或代码进行转换。
我有大约100个spss文件,因此我需要创建一个控制台应用程序,它将从父文件夹中获取每个文件并为每个sav文件生成相应的csv文件
答案 0 :(得分:3)
有几种可能性:
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.1)看一下PSPP如果(并且仅当)您计划(或至少可以)根据GPL发布代码,则可以查看PSPP源代码。无论如何,如果您不能GPL代码,请不要。做。 。相反,请执行无尘室实施,因为否则,您将永远处于湿滑的环境中。
2.2)看一下规格在线有documentation个SAV文件格式。这可能需要一些时间,但是您最终可能会弄清楚如何将其转换为CSV。
如果运送GPLed软件没有问题(或能够按需下载文件),则可以使用PSPPs控制台应用程序。 PSPP是SPSS的GNU替代品,SPSS旨在(但尚未)提供SPSS提供的功能。显然,它附带了一个方便的小型CLI工具pspp-convert
(see 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}");
}