Main Content

xlsread

(非推奨) スプレッドシート ファイルを読み取る

xlsread は推奨されません。代わりに、readtablereadmatrix または readcell を使用してください。詳細については、互換性についての考慮事項を参照してください。

説明

num = xlsread(filename) は、filename という名前の Microsoft® Excel® スプレッドシート ワークブックにある最初のワークシートを読み取り、数値データを行列に返します。

num = xlsread(filename,sheet) は、指定されたワークシートを読み取ります。

num = xlsread(filename,xlRange) は、ワークブックの最初のワークシートの指定された範囲から読み取ります。Excel 範囲構文は、'A1:C3' のように使用してください。

num = xlsread(filename,sheet,xlRange) は、指定されているワークシートと範囲から読み取ります。

num = xlsread(filename,sheet,xlRange,'basic') は、スプレッドシートからのデータを basic インポート モードで読み取ります。コンピューターに Excel for Windows® がない場合、または MATLAB® Online™ を使用している場合、xlsread は自動的に basic インポート モードで動作します。このモードでは、XLS、XLSX、XLSM、XLTX および XLTM のファイルがサポートされます。

指定しない引数がある場合は、num = xlsread(filename,'','','basic') のようにプレースホルダーとして空の文字ベクトル '' を使用します。

さらに、[num,txt,raw] = xlsread(___) は、前述の構文の任意の入力引数を使用して、cell 配列 txt にテキスト フィールドを返し、cell 配列 raw に数値とテキストの両方のデータを返します。

___ = xlsread(filename,-1) は、データを対話的に選択するための Excel ウィンドウを開きます。ワークシートを選択し、マウスを目的の範囲までドラッグ アンド ドロップし、[OK] をクリックします。この構文は、Microsoft Excel ソフトウェアがある Windows コンピューターでのみサポートされます。

[num,txt,raw,custom] = xlsread(filename,sheet,xlRange,'',processFcn) は、processFcn が関数ハンドルの場合、スプレッドシートからデータを読み取り、そのデータに対して processFcn を呼び出し、最終結果を数値データとして配列 num に返します。関数 xlsread は、cell 配列 txt にテキスト フィールド、cell 配列 raw に数値とテキスト両方のデータ、配列 customprocessFcn からの 2 番目の出力をそれぞれ返します。関数 xlsread は、スプレッドシートに格納されているデータを変更しません。この構文は、Excel ソフトウェアがある Windows コンピューターでのみサポートされます。

すべて折りたたむ

myExample.xlsx という名前の Excel ファイルを作成します。

values = {1, 2, 3 ; 4, 5, 'x' ; 7, 8, 9};
headers = {'First','Second','Third'};
xlswrite('myExample.xlsx',[headers; values]);

myExample.xlsxSheet1 には以下が格納されます。

   First    Second    Third
       1         2        3
       4         5    x    
       7         8        9

最初のワークシートから数値データを読み取ります。

filename = 'myExample.xlsx';
A = xlsread(filename)
A =
     1     2     3
     4     5   NaN
     7     8     9

前出の例の Excel ファイルから特定範囲のデータを読み取ります。

filename = 'myExample.xlsx';
sheet = 1;
xlRange = 'B2:C3';

subsetA = xlsread(filename,sheet,xlRange)
subsetA =
     2     3
     5   NaN

最初の例の Excel ファイルから 2 列目を読み取ります。

filename = 'myExample.xlsx';

columnB = xlsread(filename,'B:B')
columnB =
     2
     5
     8

パフォーマンスを向上させるには、'B1:B3' のように範囲に行番号を含めます。

最初の例の Excel ファイルから、数値データ、テキスト データおよび数値とテキストを組み合わせたデータを要求します。

[num,txt,raw] = xlsread('myExample.xlsx')
num =
     1     2     3
     4     5   NaN
     7     8     9

txt = 
    'First'    'Second'    'Third'
    ''         ''          ''     
    ''         ''          'x'    

raw = 
    'First'    'Second'    'Third'
    [    1]    [     2]    [    3]
    [    4]    [     5]    'x'    
    [    7]    [     8]    [    9]

エディターで、ワークシートからのデータを処理する関数を作成します。この場合、範囲 [0.2,0.8] の外の値を 0.2 または 0.8 に設定します。

function [Data] = setMinMax(Data)

minval = 0.2; 
maxval = 0.8;
 
for k = 1:Data.Count
  v = Data.Value{k};
  if v > maxval
    Data.Value{k} = maxval;
  elseif v < minval
    Data.Value{k} = minval;
  end
end

コマンド ウィンドウで、myExample.xlsx に乱数データを追加します。

A = rand(5);
xlswrite('myExample.xlsx',A,'MyData')

MyData というワークシートには 0 から 1 の範囲の値が含まれます。

ワークシートからデータを読み取り、範囲 [0.2,0.8] の外にある値をリセットします。シート名を指定しますが、xlRange 入力と 'basic' 入力のプレースホルダーとして '' を使用します。

trim = xlsread('myExample.xlsx','MyData','','',@setMinMax);

ワークシート上で関数を実行し、カスタム インデックス出力を表示します。

エディターで、変更された要素 (カスタム出力) のインデックスを返すため、前出の例で使用された関数 setMinMax を修正します。

function [Data,indices] = setMinMax(Data)

minval = 0.2; 
maxval = 0.8;
indices = [];
 
for k = 1:Data.Count
  v = Data.Value{k};
  if v > maxval
    Data.Value{k} = maxval;
    indices = [indices k];
  elseif v < minval
    Data.Value{k} = minval;
    indices = [indices k];
  end  
end

ワークシート MyData からデータを読み取り、カスタム インデックス出力 idx を要求します。

[trim,txt,raw,idx] = xlsread('myExample.xlsx',...
    'MyData','','',@setMinMax);

入力引数

すべて折りたたむ

ファイル名。文字ベクトルまたは string として指定します。拡張子が含まれていない場合、xlsread は指定された名前とサポートする Excel 拡張子によってファイルを検索します。xlsread は、Windows 版 Excel で現在開いているファイルに保存されたデータを読み取ることができます。

例: 'myFile.xlsx' または "myFile.xlsx"

データ型: char | string

ワークシート。以下のいずれかの値として指定します。

  • ワークシート名を含む文字ベクトルまたは string。名前にコロン (:) を含めることはできません。スプレッドシート ファイルでシート名を決めるには、関数 xlsfinfo を使用します。basic モードの XLS ファイルの場合、sheet は大文字小文字を区別します。

  • ワークシート インデックスを示す正の整数。このオプションは basic モードの XLS ファイルではサポートされません。

データ型: char | string | single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

四角形の範囲。文字ベクトルまたは string として指定します。

読み取る範囲を定義する 2 つの対角を使用して xlRange を指定します。たとえば、'D2:H4' は、ワークシート上の 2 つの角 D2H4 の間にある 3 行 5 列の四角形領域を表します。xlRange 入力では大文字小文字は区別されず、Excel A1 参照スタイル (Excel ヘルプを参照) が使用されます。

XLS ファイルを basic モードで読み取る際は、範囲選択がサポートされません。この場合は xlRange の代わりに '' を使用してください。

sheet が指定されない場合、xlRange は対角と 1 つのコロンの両方を含まなければなりません。これは、セル数が 1 つの場合でも適用されます ('D2:D2' など)。それ以外の場合、関数 xlsread は入力をワークシート名 ('sales''D2' など) として解釈します。

sheet を指定する場合、xlRange は次のようになります。

  • 1 つのセルを記述するために 1 つのコロンと対角を含む必要はありません。

  • Excel ファイルで定義された名前付き範囲を参照します (Excel のヘルプを参照)。

指定した xlRange がマージされたセルにオーバーラップする場合:

  • Excel 搭載の Windows コンピューターでは、マージされたすべてのセルが含まれるよう xlsread によって範囲が拡張されます。

  • Windows 版 Excel が搭載されていないコンピューターでは、xlsread は指定された範囲のデータのみを返します。マージされたセルについては、空または NaN の値を返します。

データ型: char | string

basic モードでの読み取り要求フラグ。文字ベクトルまたは string の 'basic' として指定します。

basic モードは、Windows 版 Excel がないコンピューターの既定の設定です。basic モードでは、xlsread

  • XLS、XLSX、XLSM、XLTX および XLTM ファイルのみを読み取ります。

  • XLS ファイルを読み取るときは xlRange の入力はサポートされません。この場合は xlRange の代わりに '' を使用してください。

  • 関数ハンドル入力をサポートしません。

  • 日付を Excel のシリアル日付値としてインポートします。Excel シリアル日付値では MATLAB 日付値とは異なる参照日が使用されます。

データ型: char | string

カスタム関数のハンドル。この引数は Excel がある Windows コンピューターでのみサポートされます。関数 xlsread はスプレッドシートから読み取り、そのデータのコピーに対して関数を実行し、最終結果を返します。関数 xlsread はスプレッドシートに保存されたデータを書き換えません。

関数 xlsread はカスタム関数を呼び出すと、データにアクセスできるようにするため、Excel アプリケーションからの範囲のインターフェイスを渡します。カスタム関数は、このインターフェイスを入力と出力の両方を兼ね備えた 1 つの引数としてもつ必要があります (ワークシート上での関数の実行を参照してください)。

例: @myFunction

出力引数

すべて折りたたむ

数値データ。double 値の行列として返されます。配列にはヘッダー行からの情報、あるいは数値以外のデータを格納した外側の行または列からの情報は含まれません。内部スプレッドシートの行と列のテキスト データは、出力 num 内では NaN として表現されます。

テキスト データ。cell 配列として返されます。内部スプレッドシートの行と列の数値は、txt 内では空の文字ベクトル '' として表現されます。

basic インポート モードの XLS ファイルでは、出力 txt はスプレッドシート内のテキスト データに先行する数値データ先頭列の代わりに空の文字ベクトル '' を含みます。これ以外のすべての場合、txt にはこれらの追加の列は含まれません。

basic モードの XLS ファイルを除き、未定義の値 ('#N/A' など) は出力 txt'#N/A' として表示されます。

ワークシートからの数値データとテキスト データ。cell 配列として返されます。

Windows 版 Excel 搭載のコンピューターでは、未定義の値 ('#N/A' など) が 'ActiveX VT_ERROR:' として raw 出力に表示されます。他のコンピューターまたは MATLAB Online では、XLSX、XLSM、XLTX、および XLTM ファイルの未定義の値が '#N/A' として表示されます。

processFcn に対応する関数の 2 番目の出力。custom の値とデータ型は関数によって決まります。

制限

  • xlsread は、7 ビット ASCII 文字のみを読み取ります。

  • xlsread は不連続の範囲はサポートしていません。

  • コンピューターに Excel for Windows がない場合、または MATLAB Online を使用している場合、xlsread は自動的に basic インポート モードで動作します。

  • Linux® プラットフォームと Mac プラットフォームでの xlsread は、関数 writetable で書き込まれたスプレッドシートを開くことができません。

アルゴリズム

  • xlsread は、basic モードでインポートする場合を除いて、書式設定された日付を表すテキスト ('10/31/96' など) をインポートします。

バージョン履歴

R2006a より前に導入

すべて折りたたむ

R2019a: xlsread は非推奨

xlsread は推奨されません。代わりに、readtablereadmatrix または readcell を使用してください。xlsread を削除する予定はありません。

R2019a 以降、スプレッドシート データを table、行列、cell 配列としてインポートするには readtablereadmatrixreadcell をそれぞれ使用してください。関数 readtable、関数 readmatrix、関数 readcell は、関数 xlsread に比べて次の利点があります。

  • より優れたクロスプラットフォームのサポートとパフォーマンス

  • データ形式とデータ型の自動検出

  • エラーおよび欠損データの処理を含む、データのインポート処理を制御するインポート オプションを使用可能

次の表に、xlsread の一般的な使用方法と、代わりに readtablereadmatrix または readcell を使用するようにコードを更新する方法を示します。

非推奨

推奨

xlsread を使用して、スプレッドシート データを行列として読み取る:

M = xlsread(filename)

スプレッドシート データを table として読み取る:

T = readtable(filename)
ただし、データを引き続き行列として読み取るには、次を使用します。
M = readmatrix(filename)

xlsread を使用して、スプレッドシート データを cell 配列として読み取る:

[~,~,C] = xlsread(filename)

スプレッドシート データを table としてインポートする:

T = readtable(filename)
ただし、データを引き続き cell 配列としてインポートするには、次を使用します。
C = readcell(filename)

xlsread を使用して、特定のシートと範囲を行列として読み取る:

M = xlsread(filename,sheet,range)

特定のシートと範囲を table として読み取る:

T = readtable(filename,'Sheet',sheet,'Range',range)
ただし、データを引き続き行列として読み取るには、次を使用します。
M = readmatrix(filename,'Sheet',sheet,'Range',range)

xlsread を使用して、特定のシートと範囲を cell 配列として読み取る:

[~,~,C] = xlsread(filename,sheet,range)

特定のシートと範囲を table として読み取る:

T = readtable(filename,'Sheet',sheet,'Range',range)
ただし、データを引き続き cell 配列として読み取るには、次を使用します。
C = readcell(filename,'Sheet',sheet,'Range',range)