我有一个包含 3 列和 212 行数据的 XLS 文件。有没有办法在中间插入 3 列零,中间有 x 行,所以总共有 365 行?
问问题
835 次
3 回答
1
您可以执行此操作的另一种方法是通过 excel activex 控件。
以下假设您有一个 excel 传播 c:\temp\zeros.xlsx。
它从第 3 行开始插入 5 行,每行有 3 列零。
显然,您可以调整分配给 insertRow 和 insertRowCount 的值以满足您的特定要求。
或者,您可以改用复制/插入,但这应该足够好了。
% Create Excel ActiveX control (and therefore application) and make it visible
excel = actxserver('Excel.Application');
excel.visible = 1;
% Open the the spreadsheet
workbook = excel.Workbooks.Open('c:\temp\zeros.xlsx');
sheet = workbook.ActiveSheet;
% Insert rows
insertRow = 3;
insertRowCount = 5;
range = get(sheet,'Range', sprintf('A%d:C%d', insertRow, insertRow ) );
for r=1:insertRowCount
range.Insert()
end
% Set cell values on inserted rows
cellValue = 0;
for r=1:insertRowCount
for c=1:3
set(get(sheet,'Cells',r+insertRow-1,c),'Value',cellValue);
end
end
于 2012-11-23T04:11:27.663 回答
0
于 2012-11-22T21:37:25.650 回答
0
如果可能的话,我是一个 Linux 人,所以我的 Microsoft 技能有点欠缺,也就是说,可能有比这更好的方法来解决问题,但以下应该可行:
%# Set parameters
FN = 'YourExcelWorkbookPath.xlsx';
r = 3; %#Row to start inserting zeros
n = 2; %#Number of rows of zeros to insert
%# Import the excel data
[~, ~, Raw] = xlsread(FN);
%# Insert the zeros
RawOut = [Raw(1:r-1, :); num2cell(zeros(n, 3)); Raw(r:end, :)];
%# Write the output back to excel workbook
xlswrite(FN, RawOut);
对不起,我在上班,所以没时间做长篇大论。本质上,我将工作簿读入matlab中的单元格数组,在中间插入一个零单元格数组,然后将整个内容写回工作簿。不优雅,但它在测试工作簿上对我有用。
编辑:当然,如果您的工作簿包含除 3 列数据之外的许多其他信息,则您需要使用这种方法来破解以使插入发生在正确的位置。因此,我会采用@grantnz (+1) 建议的 ActiveX 方法。更多的微软-y。
于 2012-11-23T03:41:45.260 回答