大家好 我是一名开发人员,今天有客户找到我 希望我能将它的.mat 文件转换成Excel格式。由于我从未接触过MATLAB 。于是我让客户截图给我看下mat文件内容。
2022年8月9日19:10:553 后记:
已经有了非常好用的在线转换程序
www.DataConvert.cn
可以直接处理 2维数组
看到图片之后 第一反应是拿记事本打开看看是什么格式果然 是乱码 。
然后我简单的搜索了一下matlab ,和.mat文件 。
发现这个软件其实是很成熟的一款数据处理分析软件。
因为我使用的是C# 我去找了下开源库 MathNet 很方便的将.mat文件转换成Array数组
拿到数组之后 再讲数组转成DataTable 最终另存为Excel文件。
- Thread t = new Thread(()=> {
- for (int i = 0; i < openFileDialog.FileNames.Length; i++)
- {
- string Filename = openFileDialog.FileNames[i];
- string sheetName = openFileDialog.SafeFileNames[i].Replace(".mat", ".xlsx");
- Matrix<double> m2 = MatlabReader.Read<double>(Filename);
- double[,] testArray = m2.ToArray();
- DataTable dt = new DataTable();
- dt = ConvertDataTable(testArray);
- string fname = savePath + sheetName;
- if (isfa)
- {
- DataTable dt_new = RevertRowToColumn(dt);
- DataTableToExce1(dt_new, sheetName, fname);
- }
- else
- {
- DataTableToExce1(dt, sheetName, fname);
- }
- this.Invoke(new EventHandler(delegate
- {
- label1.Text = (i + 1).ToString() + "/" + openFileDialog.FileNames.Length + " " + openFileDialog.SafeFileNames[i];
- }));
- if (i == openFileDialog.FileNames.Length - 1)
- {
- System.Diagnostics.ProcessStartInfo psi = new System.Diagnostics.ProcessStartInfo("Explorer.exe");
- psi.Arguments = "/e,/select," + savePath;
- System.Diagnostics.Process.Start(psi);
- }
- this.Invoke(new EventHandler(delegate
- {
- label1.Text = "转换完成";
- }));
- }
- });
- t.Start();