0

编辑:我发现了问题。索赔被列为细胞类别。使用 cell2mat 将其转换为 char,并且代码有效。谢谢大家!

我有一个字符串变量设置为文件路径/位置。我想使用这个变量作为 xlsread 函数的输入,但是 Matlab 告诉我 xlsread 不能接受变量输入。我在确定解决方法是否可行时遇到了很多麻烦。有人可以帮我吗?

 function C = claimReader()

 inp = csv2struct(['C:\Documents and Settings\nkulczy\My Documents\085 Starry Sky\','Starry_Sky_inputs_vert.csv']);
 inputTitles = [{'Output_Dir'};{'Claimz'};{'Prodz'};{'Fault_Locations'};{'Fault_Type'};{'Primary_Failed_Part'};{'Part_Group'};{'Selected_SEAG'};{'Change_Point'};{'Date_Compile'};{'Minimum_Date'}];

 claim = inp.(cell2mat(inputTitles(2)));  %returns a file path/location string

 C = csv2struct(claim);

 end


 function Out = csv2struct(filename)

 %% read xls file with a single header row

 [~, ~, raw] = xlsread(filename);

 [~ , ~, ext] = fileparts(filename);

 if ~strcmpi(ext, '.csv') %convert non .csv files to .csv, so blanks stay blank
      filename=[pwd,'tempcsv',datestr(now,'yymmddHHMMSSFFF'),'.csv'];
      xlswrite(filename,raw);
      [~ , ~, raw] = xlsread(filename);
      delete(filename);
 end

 if size(raw,1)==11 && size(raw,2)==2 %transpose SS inputs (must      match dimensions of input matrix EXACTLY!!!)
     raw = raw';
 end

 nRow = size(raw,1);
 nCol = size(raw,2);
 header = raw(1,:);
 raw(1,:) = [];

 end
4

2 回答 2

3

使用如下语法,应该没有任何问题:

pathname = 'c:\...\filename.xlsx';
A = xlsread(pathname);

编辑:关于您的代码:

我看不到您在哪里定义filename-您应该将claim(它包含所需的路径?)传递给xlsread-function。可能你得到一个带有字符的单元格。所以你的输入需要是claim{1}

于 2013-10-02T14:08:49.387 回答
1

查看 的文档xlsread,第一个输出 ( yourNums) 将仅返回工作表中的数值。txt只会返回文本。rawData将返回工作表中的原始数据。

flNm = 'c:\myFolder\myFile.xlsx';

[yourNums, txt, rawData] = xlsread(flNm);

TS后更新:

claim是一个元胞数组。所以你需要通过claim{1}才能让它成为一个字符串。

于 2013-10-02T14:14:55.013 回答