2016-08-12 9 views
-1

さまざまなサイズのデータ​​範囲をシートに書き込むと、データ範囲が既存のExcelテーブルの範囲よりも大きい場合、Excelテーブルが削除されているように見えるため、Excelを実行するたびにExcelでテーブルを作成します。コード。私は現在、テーブルの作成にかなりの困難があります。私が今持っているコードを試してみて、ListObjectを作成するには:MATLABを使用したExcelテーブルの作成

eSheets = e.ActiveWorkbook.Sheets; 
eSheet = eSheets.get('Item', j); 
eSheet.Activate;  
eSheet.Range(horzcat('A1:R',mat2str(size(obj,1)+1))).Select; 
eSheet.Listobjects.Add; 
eSheet.Listobjects.Item(1).TableStyle = 'TableStyleMedium2'; 
eSheet.ListObjects.Item(1).Name = tablename; 

任意のコメントや提案をいただければ幸いに

私はMathWorks社のMATLABではなく、機能

xlswrite(filename,A,sheet,xlRange) 

でeSheetの使用について知らない

答えて

1

ポストが下落してしまった(理由は分からない)...私はVBAフォーラムとMATLAB Newsgroupの助けを借りて自分の答えを見つけた。

e = actxserver('Excel.Application'); 
    ewb = e.Workbooks.Open('Path/to/file'); 
    eSheets = e.ActiveWorkbook.Sheets; 
    eSheet = eSheets.get('Item', j); 
    eSheet.Activate; 
    range = horzcat('A1:R',mat2str(size(obj,1)+1)); 
    range_todelete = horzcat('A1:R',mat2str(size(obj,1)+300)); 
    Range1 = eSheet.get('Range',range_todelete); 
    Range1.Value=[]; 
    eSheet.Range(range).Select;   
    name = 'Table_Name';   
    try eSheet.ListObjects(name).Item(1).Delete 
    catch 
    end 
    eSheet.Listobjects.Add; 
    eSheet.ListObjects.Item(1).Name = name; 
    eSheet.ListObjects.Item(1).TableStyle = 'TableStyleMedium2'; 
    Range = eSheet.get('Range',range); 
    Range.Value = cellarray; 
1

あなたはまた、Excelの表http://de.mathworks.com/help/matlab/ref/xlswrite.htmlにとして行列からデータを書き込むことができ

[A,B] = xlsfinfo('foofoo.xlsx'); 
sheetValid = any(strcmp(B, 'foo2')); 
テーブルシートがすでに存在する場合、あなたは文句を言わない古いものを上書きして、新しいものを作成するように https://de.mathworks.com/matlabcentral/answers/25848-how-to-check-existence-of-worksheet-in-excel-file

に見られるように、これはあなたがthougth探しているものであれば

あなたも、私はわからない、確認することができ

+0

eSheetは、excel activexサーバーを使用したExcelシートオブジェクトへの参照です。上記は、Excelの表の名前ではなく、表の名前を参照しています。 Excelでの計算やグラッフィングのダイナミックレンジとしてテーブルを使用します。 – sclel016

関連する問題