2
$\begingroup$

It seems that I can get the first column of excle data, say "test.xls", if I know the total length...

data = Table[{i}, {i, 6}];
Export["test.xls", data];    
Import["test.xls", {"Data",1,Range[len],1}]

But the problem is, If I don't know the total length, can I do the same thing? especially consider the data scale is quite large.

$\endgroup$
9
  • $\begingroup$ Can you provide a small example xls to ease answering? $\endgroup$
    – Philipp
    Jan 13 '15 at 16:03
  • $\begingroup$ @Philipp updated with data filled in test.xls. $\endgroup$
    – van abel
    Jan 13 '15 at 16:07
  • $\begingroup$ @Öskå the real range is set by Range[len],1 thus this will import first column with row from 1 to the len. Although the results is a row, quite strange. $\endgroup$
    – van abel
    Jan 13 '15 at 16:26
  • $\begingroup$ Saving as csv is no option? $\endgroup$
    – Philipp
    Jan 13 '15 at 16:28
  • $\begingroup$ @Öskå Aha, yes, your code work for me and solved my problem. But why my Import["test.xls", {"Data", 1, ;; , 1}] don't work??? $\endgroup$
    – van abel
    Jan 13 '15 at 16:29
7
$\begingroup$

The answer you are looking for is here: Import a Spreadsheet.

enter image description here

Thus you can use:

Import["~/test.xls", {"Data", 1, All, 2}]

The syntax in your case is {"Data", # of sheet(s), # of row(s), # of column(s)}.

$\endgroup$
2
$\begingroup$

Its easy: just look at the structure of your imported data. Since you did not provide a file, we will use example data from Wolfram:

tab = Import["ExampleData/elements.xls"]
{{{"AtomicNumber", "Abbreviation", "Name", "AtomicWeight"}, {1., "H", 
"Hydrogen", 1.00793}, {2., "He", "Helium", 4.00259}, {3., "Li", 
"Lithium", 6.94141}, {4., "Be", "Beryllium", 9.01218}, {5., "B", 
"Boron", 10.8086}, {6., "C", "Carbon", 12.0107}, {7., "N", 
"Nitrogen", 14.0067}, {8., "O", "Oxygen", 15.9961}, {9., "F", 
"Fluorine", 18.9984}}}'

Now you see, there is a first bracket spreading the tables of the spreadsheet. Here only one. Then rows and then columns. Hence, what you want is the first column of the first table in the spreadsheet:

tab[[1, All, 1]]
{"AtomicNumber", 1., 2., 3., 4., 5., 6., 7., 8., 9.}

to look at the example spreadsheet, you can save it by using:

Export["test.xls", Import["ExampleData/elements.xls"]]
$\endgroup$
2
  • $\begingroup$ @Öskå exactly!! $\endgroup$
    – van abel
    Jan 13 '15 at 16:11
  • $\begingroup$ Can't you just save as csv and then read until you leave the first column? $\endgroup$
    – Philipp
    Jan 13 '15 at 16:14

Not the answer you're looking for? Browse other questions tagged or ask your own question.