如何取消 Excel 中的 select 单元格?使用 Matlab 创建图表添加具有 makred 区域值的图形
How to un-select cells in Excel? Using Matlab to create a chart adds graph with value of makred area
Excel 2016 会记住你"marked" (选中)关闭文件前的最后一个单元格,下次打开时会标记相同的区域文件。
不标记区域的唯一方法是 例如 Matlab 创建的未修改文件。
如何使用 Matlab 取消标记 Excel 中的所有区域?
在我的程序(下面的代码)中,我使用 Matlab 访问现有的 Excel 文件。该代码创建一个具有设定范围的新图表。
不幸的是,总是在图表中创建更多图形并在范围内选择。为了更精确,在 matlab 文件中选择的区域将作为新图形添加。 (当它为空时,无论如何都会添加一个空图)
在这里你可以看到标记的区域:
然后在 运行 之后,代码将作为图表添加,其中标记的范围恰好是:
包含用于理解项目的代码和信息的原始程序:
原定目标:
- 使用 Matlab
在已经存在的 .xlsx
文件中自动创建图表
- 自由选择范围、X 和 Y 值(通过 sheet 和列)的简单方法
- 适用于
.xlsx
个文件的所有尺寸。 (最多 20.000 行和 50 列和几个 sheets)
一般问题:
- 未修改的文件工作
- 每隔一个文件都会添加额外的图表
代码:
% Start Excel and open workbook
Excel = actxserver('Excel.Application');
WB = Excel.Workbooks.Open('C:\...\test.xlsx');
%the workbook
Excel.visible = 1;
% Add chart
Chart = invoke(WB.Charts,'Add');
% Get Sheet object
SheetObj = Excel.Worksheets.get('Item', 'Tabelle1'); % 'Tabelle1' is german Ecel equation for 'sheet1'
%% FORMATTING %%
% Name chart sheet
Chart.Name = 'TestChart';
% Set chart type
Chart.ChartType = 'xlXYScatterSmoothNoMarkers';
% Set chart title, see https://msdn.microsoft.com/en-us/library/office/ff196832.aspx
Chart.HasTitle = true;
Chart.ChartTitle.Text = 'Test Title';
% Set chart legend, see https://msdn.microsoft.com/en-us/library/office/ff821884.aspx
Chart.HasLegend = true;
%% Set source data range of chart, do X and Y data for each series
columns = 3:7; % set columns 3 to 7 as Y-Values
%%
colnames = {'xdata', 'my series 1', 'my series 2', 'my series 3','my series 4','my series 5','my series 6', 'my series 7', 'my series 8','my series 9'};
for col = columns
%% Get Excel column *letter* from column *number*
colchar = strrep([char(96+floor((col-1)/26)) char(97+rem(col-1,26))],char(96),'');
% Last row of data, see https://msdn.microsoft.com/en-us/library/office/ff839539.aspx
%% Data must be contiguous (no gaps / blank cells)
lastrow = num2str(SheetObj.Range([colchar, '2']).End('xlDown').Row);
%% Y data, creating range strings by concatenation of column character and row number
Srs = Chart.SeriesCollection.Add(SheetObj.Range([colchar, '2:', colchar, lastrow]));
%% X data, same approach is used for last row, but only column = 1 = "A"
Srs.XValues = SheetObj.Range(['A2:A', lastrow]); % set column A as X-Value
%% Set column name
Srs.Name = colnames{col};
end
代码的作用:
运行时,将创建一个新图表,其中 A 列作为 X 值,第 3 至 7 列作为 Y 值,colnames
列。
当它不起作用时,它会做同样的事情,当它起作用时,它会向图表添加更多图形。确切地说,它将文件的每一列添加为没有 X 值的 Y 值(因此 1、2、3、4 ...),使用第一行作为它们的名称。
问题总结
- 有没有办法使用 Matlab 代码取消标记、取消选择 Excel 中的区域?
- 你知道问题出在哪里吗
- 任何有用的解决方案
我找到了解决方案。或者更多解决这个问题的方法。
再说一次:问题是,预先select编辑的单元格会自动显示在您的图表中,甚至在您select编辑您自己的数据之前以及 X 和 Y 值。
解决方案:
clear the chart between the steps of automatic graph creation and selection of your own data
这样做你只需要在 SheetObj = Excel.Worksheets.get('Item', 'Tabelle1');
:
之后放置一行
%% Clear content
Chart.ChartArea.ClearContents;
因此在您 select 填充数据之前您的图表将是空的。
这对我有用...希望对你也有帮助。
Excel 2016 会记住你"marked" (选中)关闭文件前的最后一个单元格,下次打开时会标记相同的区域文件。
不标记区域的唯一方法是 例如 Matlab 创建的未修改文件。
如何使用 Matlab 取消标记 Excel 中的所有区域?
在我的程序(下面的代码)中,我使用 Matlab 访问现有的 Excel 文件。该代码创建一个具有设定范围的新图表。
不幸的是,总是在图表中创建更多图形并在范围内选择。为了更精确,在 matlab 文件中选择的区域将作为新图形添加。 (当它为空时,无论如何都会添加一个空图)
在这里你可以看到标记的区域:
然后在 运行 之后,代码将作为图表添加,其中标记的范围恰好是:
包含用于理解项目的代码和信息的原始程序:
原定目标:
- 使用 Matlab 在已经存在的
- 自由选择范围、X 和 Y 值(通过 sheet 和列)的简单方法
- 适用于
.xlsx
个文件的所有尺寸。 (最多 20.000 行和 50 列和几个 sheets)
.xlsx
文件中自动创建图表
一般问题:
- 未修改的文件工作
- 每隔一个文件都会添加额外的图表
代码:
% Start Excel and open workbook
Excel = actxserver('Excel.Application');
WB = Excel.Workbooks.Open('C:\...\test.xlsx');
%the workbook
Excel.visible = 1;
% Add chart
Chart = invoke(WB.Charts,'Add');
% Get Sheet object
SheetObj = Excel.Worksheets.get('Item', 'Tabelle1'); % 'Tabelle1' is german Ecel equation for 'sheet1'
%% FORMATTING %%
% Name chart sheet
Chart.Name = 'TestChart';
% Set chart type
Chart.ChartType = 'xlXYScatterSmoothNoMarkers';
% Set chart title, see https://msdn.microsoft.com/en-us/library/office/ff196832.aspx
Chart.HasTitle = true;
Chart.ChartTitle.Text = 'Test Title';
% Set chart legend, see https://msdn.microsoft.com/en-us/library/office/ff821884.aspx
Chart.HasLegend = true;
%% Set source data range of chart, do X and Y data for each series
columns = 3:7; % set columns 3 to 7 as Y-Values
%%
colnames = {'xdata', 'my series 1', 'my series 2', 'my series 3','my series 4','my series 5','my series 6', 'my series 7', 'my series 8','my series 9'};
for col = columns
%% Get Excel column *letter* from column *number*
colchar = strrep([char(96+floor((col-1)/26)) char(97+rem(col-1,26))],char(96),'');
% Last row of data, see https://msdn.microsoft.com/en-us/library/office/ff839539.aspx
%% Data must be contiguous (no gaps / blank cells)
lastrow = num2str(SheetObj.Range([colchar, '2']).End('xlDown').Row);
%% Y data, creating range strings by concatenation of column character and row number
Srs = Chart.SeriesCollection.Add(SheetObj.Range([colchar, '2:', colchar, lastrow]));
%% X data, same approach is used for last row, but only column = 1 = "A"
Srs.XValues = SheetObj.Range(['A2:A', lastrow]); % set column A as X-Value
%% Set column name
Srs.Name = colnames{col};
end
代码的作用:
运行时,将创建一个新图表,其中 A 列作为 X 值,第 3 至 7 列作为 Y 值,colnames
列。
当它不起作用时,它会做同样的事情,当它起作用时,它会向图表添加更多图形。确切地说,它将文件的每一列添加为没有 X 值的 Y 值(因此 1、2、3、4 ...),使用第一行作为它们的名称。
问题总结
- 有没有办法使用 Matlab 代码取消标记、取消选择 Excel 中的区域?
- 你知道问题出在哪里吗
- 任何有用的解决方案
我找到了解决方案。或者更多解决这个问题的方法。
再说一次:问题是,预先select编辑的单元格会自动显示在您的图表中,甚至在您select编辑您自己的数据之前以及 X 和 Y 值。
解决方案:
clear the chart between the steps of automatic graph creation and selection of your own data
这样做你只需要在 SheetObj = Excel.Worksheets.get('Item', 'Tabelle1');
:
%% Clear content
Chart.ChartArea.ClearContents;
因此在您 select 填充数据之前您的图表将是空的。
这对我有用...希望对你也有帮助。