Excel 2016会记住您标记为"的单元格。 (选中)在关闭文件之前最后一次,同一个asrea将在下一次打开文件时被标记。
不标记区域的唯一方法是由创建的未经修改的文件,例如 Matlab。
在我的程序(下面的代码)中,我使用Matlab访问现有的Excel文件。该代码创建一个具有设定范围的新图表。
不幸的是,总是在图表中创建更多图表并在范围内创建selecet。为了更加精确,在matlab文件中选择的区域将被添加为新图形。 (当它为空时,无论如何都会添加一个空图表)
原始目标:
.xlsx
文件中自动创建图表
.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 ...),使用第一行作为其名称。
答案 0 :(得分:0)
我发现自己是一个解决方案。或者更多地解决这个问题。
再次:问题,即使在您选择自己的数据以及X和Y值之前,预选的单元格也会自动显示在图表中。
清除自动图表创建和选择您自己的数据的步骤之间的图表
这样做你只需在SheetObj = Excel.Worksheets.get('Item', 'Tabelle1');
之后放置这个单行:
%% Clear content
Chart.ChartArea.ClearContents;
因此,在选择要填充的数据之前,您的图表将为空。
这对我有用...希望它对你有帮助。