5

我正在尝试将一组系数写入 1 列 (A1) 下的 Excel 文件中。这是我的片段:

    filename = 'cheby2coefs.xlsx';

for Order = 1:1 
    fprintf('This is');
    disp(Order);

    [b,a] = cheby2(Order, 20, 300/500);
    disp([b,a]);
    %xlswrite(filename,{'Order ',Order},'A1'); %string
    xlswrite(filename,'b','A1');  %string
    xlswrite(filename,b');
    xlswrite(filename,'a');       %string
    xlswrite(filename,a');
end

我的目标是这样的输出: 在此处输入图像描述

但是,我的代码只是不断创建其他工作表。实现这一点的正确方法是什么?

4

3 回答 3

4

问题出在以下xlswrite几行:

xlswrite文档:

xlswrite(filename,A,sheet)写入指定的工作表。

这意味着您正在将字符串 'b' 写入工作表 'A1'xlswrite(filename,'b','A1');

xlswrite(filename,A)将数组 A 写入 Excel 文件 filename 中的第一个工作表,从单元格 A1 开始。

你实际上不需要做任何事情就可以从 A1 开始写作。假设 b 是一个行向量:

xlswrite(filename,b');

正如你所写,应该足够了。

如果要指定工作表和列,可以使用

xlswrite(filename,A,sheet,xlRange)

更新:我现在不能尝试这个,但我认为它应该可以工作。

您可以计算aand bfor eachorder并将它们写入 xls 文件,如下所示:

r = 1; % row number
str = {'a', 'b'};
order = [1 3 5]; % The orders you want to calculate a and b with
for idx = 1:size(order, 2)
    [b,a] = cheby2(order(idx), 20, 300/500); % I do not know about second 
                                             % and third parameters, you should 
                                             % check them.
    vals = [a; b]; % assuming they are row vectors
    cellName = strcat('A', r);
    orderName = strcat('Order ', order(idx));
    xlswrite(filename, orderName, 1, cellName)
    r = r + 1;
    for jdx=1:2
        cellName = strcat('A', r);
        xlswrite(filename, str{jdx}, 1, cellName);
        r = r + 1;
        cellName = strcat('A', r);
        xlswrite(filename, vals(jdx, :), 1, cellName);
        r = r + size(vals, 2);
    end
end
于 2013-01-17T12:14:26.683 回答
3

xlswrite因为您没有指定工作表编号,所以每次调用都会不断创建新工作表。

相反,试试这个:

%// Write b under column A1 in the 1st worksheet
xlswrite(filename, 'b', 1, 'A1')
xlswrite(filename, b(:), 1, 'A2')

通过首先使用语法b将其转换为列向量来确保将其写入列是一种很好的做法。b(:)

此外,如果要在 column 下写入下一组系数B1,可以执行以下操作:

%// Write a under column B1 in the 1st worksheet
xlswrite(filename, 'a', 1, 'B1')
xlswrite(filename, a(:), 1, 'B2')

请注意,传递的图纸编号仍然存在1

于 2013-01-17T12:14:34.273 回答
0

你试过xlswrite1吗?你可以从这里下载模块

这是完整的模块:

filename = 'cheby2coefs.xlsx';
Excel = actxserver('Excel.Application');
Workbook = invoke(Excel.Workbooks, 'open', filename);
set(Excel,'Visible',1);

temp_text= [{'Text'}];
Location = ['A1:A1'];
sheetname = 'Sheet1';
%%

[status, message] = xlswrite1(ExcelFilename, temp_text, sheetname, Location);
if status == 0,
    errordlg(message.message);
end

invoke(Workbook,'Save');
invoke(Excel,'Quit');
delete(Excel);

希望能帮助到你。

于 2013-01-17T12:46:04.733 回答