【问题标题】:Data type cannot be converted in matlab or excelmatlab或excel中无法转换数据类型
【发布时间】:2016-07-13 14:16:37
【问题描述】:

我最近从数据库中复制并粘贴了一些数据(具体来说是 USGS 流规数据。我复制并粘贴到 excel 中,创建了我自己的时间列。

当我将数据导入 matlab 时,只显示我创建的列。

obs = xlsread('ObservedMR.xlsx','jun30For');

我尝试将 excel 中的值转换为数字,但无济于事。在 excel 中,数字是左对齐的(我知道这意味着它们没有被注册为数字),但没有其他字符可见。

当我创建一个空矩阵并尝试在其中复制和粘贴数据时,我收到一条错误消息,提示我无法粘贴包含字符串的数据。

使用以下,

 p = readtable('ObservedMR.xlsx','Sheet','jun30For')

我明白了

p = 

x0       x0_31  
___    _________

  1    '0.31  ' 
  2    '0.31  ' 
  3    '0.31  ' 
  4    '0.31  ' 
  5    '0.31  ' 
  6    '0.31  ' 

我在尝试使用 str2num(需要输入字符串或字符)和 table2array.(类型 double 和单元格)时收到错误消息。

我打算尝试使用

regexprep(p, ''' , '')

替换引号,但我收到有关单引号未闭合的消息。

有谁知道我可以如何使用这些数据,通过编写代码来编辑引号和空格、以其他方式导入、以某种方式转换等等?

谢谢!

【问题讨论】:

  • 当您在excel中选择列右键和属性时,您应该能够知道它们是什么格式。
  • 听起来你有空白问题。在 Excel 中尝试查找并替换不间断空格字符。否则,您的区域设置可能需要 , 作为小数点,但您的工作表有 .。同样,在 Excel 中查找和替换可能是最简单的解决方法。
  • @GameOfThrows 出于某种原因,excel 不允许我查看属性。我使用的是 Windows 10,所以这可能是我看不到它的原因。
  • @Dan 我昨天尝试了第一个选项。我现在尝试使用逗号,但也没有用。

标签: database excel matlab import quotes


【解决方案1】:

您可以在readtable 中指定列的格式。

p = readtable('ObservedMR.xlsx','Sheet','jun30For', 'Format', '%f%f')

会将列读取为浮点数。如果转换不正确,请尝试将它们读取为字符串 %s,然后在 Matlab 中使用 str2num

无论如何,我建议您在 Excel 中更正您的数据。如果单击单元格并查看公式栏,您可能会在数字左侧看到引号 ',表示单元格存储为文本。将其转换为数字,保存 Excel 并完成。

【讨论】:

  • 我尝试使用上述行,但我收到错误 Invalid parameter name: Format.我认为这可能与错误本身有关。我尝试了浮点数和字符串。在 excel 中,公式栏中不会出现引号。我尝试将单元格转换为数字,但无济于事。
  • 只是一个愚蠢的事情。难道小数点分隔符是逗号而不是点?如果您已经这样配置 Excel(某些国家/地区使用逗号),那么使用点将被视为文本。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多