如何在Excel中取消选择单元格?使用Matlab创建图表会添加具有makred区域值的图表

时间:2017-06-19 13:43:14

标签: excel matlab charts com

Excel 2016会记住您标记为"的单元格。 (选中)在关闭文件之前最后一次,同一个asrea将在下一次打开文件时被标记。

不标记区域的唯一方法是由创建的未经修改的文件,例如 Matlab。

如何使用Matlab取消标记Excel中的所有区域?

在我的程序(下面的代码)中,我使用Matlab访问现有的Excel文件。该代码创建一个具有设定范围的新图表。

不幸的是,总是在图表中创建更多图表并在范围内创建selecet。为了更加精确,在matlab文件中选择的区域将被添加为新图形。 (当它为空时,无论如何都会添加一个空图表)

在这里你可以看到标记区域: here you can see the marked area

然后在运行代码后将添加为图形,其中包含标记的范围: new nameless graph range

原始程序,包含用于理解项目的代码和信息:

原始目标:

  • 使用Matlab
  • 在已存在的.xlsx文件中自动创建图表
  • 轻松选择范围,X和Y值(按表和列)
  • 适用于.xlsx个文件的所有尺寸。 (最多20,000行,50列和几张)

一般问题:

  • 未触动的文件
  • 在每个其他文件中添加其他图表

代码:

% 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

当它不起作用时,它会执行相同的操作,当它工作但是向图表添加更多图形时。确切地说,它将文件的每一列添加为Y值,没有X值(所以1,2,3,4 ...),使用第一行作为其名称。

问题摘要

  • 有没有办法取消标记,使用Matlab代码在Excel中取消选择区域?
  • 你知道问题的来源吗?
  • 任何有用的解决方案

1 个答案:

答案 0 :(得分:0)

我发现自己是一个解决方案。或者更多地解决这个问题。

再次:问题,即使在您选择自己的数据以及X和Y值之前,预选的单元格也会自动显示在图表中。

解决方案:

  

清除自动图表创建和选择您自己的数据的步骤之间的图表

这样做你只需在SheetObj = Excel.Worksheets.get('Item', 'Tabelle1');之后放置这个单行:

%% Clear content 
Chart.ChartArea.ClearContents;

因此,在选择要填充的数据之前,您的图表将为空。

这对我有用...希望它对你有帮助。