为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
收到一只叮咚 2021-12-05 14:55:46
我可以使用 C# 将 spss(.sav) 文件转换为 .csv 文件吗?在这里,我想浏览 1 个 .sav 文件,我需要生成相同的 .csv 文件。任何人都可以提供任何链接或转换代码。我有大约 100 个 spss 文件,所以我需要创建一个控制台应用程序,它将从父文件夹中获取每个文件并为每个 sav 文件生成相应的 csv 文件
查看完整描述

1 回答

?
慕的地6264312

TA贡献1817条经验 获得超6个赞

有几种可能:


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

如果(且仅当)您计划(或至少可以)在 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}");

}


查看完整回答
反对 回复 2021-12-05
  • 1 回答
  • 0 关注
  • 441 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信