我有一个函数可以生成一些变量,比如分数、对、错、未回答。使用按钮调用此函数。问题是如何每次将函数生成的这些值添加/附加到 XLSX 文件中?或者,如何创建 MAT 文件以便添加?可能的解决方案是什么?
问问题
910 次
2 回答
2
附加到 xls 文件所涉及的挑战是知道其最后一行,以避免使用 xlswrite 命令覆盖数据。我建议看一下这个文件交换提交XLSAPPEND,因为它会为你处理这个问题。
于 2015-04-09T17:36:18.830 回答
0
听起来您正在运行一个 GUI,并希望将数据重复输出到 Excel 文件。可以加快文件输出的一种选择是在 GUI 处于活动状态时保持COM 服务器打开以进行输出,而不是在每次调用xlswrite
or时重复打开和关闭一个xlsappend
。这是一个示例脚本来说明如何执行此操作:
function excel_output_example
% Start COM server:
excel = actxserver('Excel.Application');
excelWorkbook = excel.Workbooks.Add(1);
excelSheet = excel.ActiveSheet;
fileName = 'example.xlsx';
rowIndex = 1; % Keeps track of the next row to output data to
% Create GUI:
hFigure = figure('Position', [100 100 120 70], ...
'DeleteFcn', @(~, ~) stop_excel(excelWorkbook, excel));
uicontrol(hFigure, 'Style', 'pushbutton', ...
'Position', [20 20 80 30 ], ...
'String', 'Add to Excel', ...
'Callback', @output_to_excel);
function output_to_excel(~, ~) % Adds a random value to the next row in column A
excelSheet.Range(sprintf('A%d', rowIndex)).Value = rand();
rowIndex = rowIndex+1;
end
function stop_excel(workbookObj, comObj) % Stops the COM server
workbookObj.SaveAs(fileName);
workbookObj.Close();
comObj.Quit();
comObj.delete();
end
end
这将打开一个带有按钮的小 GUI 窗口。每次按下按钮时,都会在 Excel 文件的 A 列中的下一个可用行中添加一个新的随机值。当 GUI 窗口关闭时,Excel 文件被保存并且 COM 服务器停止。例如,在按下按钮 5 次并关闭 GUI 后,您将在 Excel 文件中看到如下内容:
于 2017-08-30T17:56:10.797 回答