Message Boards Message Boards

0
|
7976 Views
|
10 Replies
|
6 Total Likes
View groups...
Share
Share this post:

Import data from an Excel file?

Hi,

I have an Excel file like this:

enter image description here

How do I import the data to Mathematica so that I have a list like below:

Ukraine={x1,x2,x3,x4,x5,x6,x7,x8,x9}

Best regards,

POSTED BY: M.A. Ghorbani
10 Replies

Thanks a lot, Neil.

POSTED BY: M.A. Ghorbani

The posted code works as long as your kernel is cleared. If the variables (ie Istanbul) are defined it will fail. One option is to handle that.

sheet = Import["data-2.xlsx", "Rules"];
Map[Remove, "Sheets" /. sheet]; MapThread[
 Set[Evaluate[Symbol[#1]], #2] &, {"Sheets" /. sheet, 
  "Data" /. sheet}]

By doing Remove, the symbol is erased so it can be used in the assignment.

Regards,

Neil

POSTED BY: Neil Singer

There is no file attached

POSTED BY: Neil Singer

Here is the file.

Thank you so much, Neil.

You helped me every time.

Attachments:
POSTED BY: M.A. Ghorbani
POSTED BY: Neil Singer

Dear Neil,

You are right. I have about 17 sheets in one excel file. I tried to apply your code for my data. Maybe I didn't get it right.

If possible, could you please perform your code for the attached data.xlsx file?

I appreciate your help and time.

POSTED BY: M.A. Ghorbani

You can programmatically get to all the elements in an excel sheet.

sheet = Import["test.xlsx", "Rules"]; 

This gives rules for everything (data, sheets, number of sheets, etc)

You can programmatically assign the sheet names by converting them to symbols (from strings) and assigning the data:

MapThread[
     Set[Evaluate[Symbol[#1]], #2] &, {"Sheets" /. sheet, 
      "Data" /. sheet}]

Add Flatten if you just want a plain list and not respect the rows and columns

MapThread[
     Set[Evaluate[Symbol[#1]], Flatten[#2]] &, {"Sheets" /. sheet, 
      "Data" /. sheet}]

Regards,

Neil

POSTED BY: Neil Singer

Thanks a lot Neil.

I considered an excel file (the attached file) with two sheets named "Ukraine" and "Istanbul" . When I use the names of the sheets, I can not get the expected output.

In[12]:= Import["C:\\Users\\agri-ghorbani\\Desktop\\data.xlsx"][[1]]

Out[12]= {{51.3, 44.3}, {29.2, 102.8}, {76.9, 66.7}}

In[13]:= Import["C:\\Users\\agri-ghorbani\\Desktop\\data.xlsx"][[
  Ukraine]];

During evaluation of In[13]:= Part::pkspec1: The expression Ukraine cannot be used as a part specification.

In[14]:= Import["C:\\Users\\agri-ghorbani\\Desktop\\data.xlsx"][[2]]

Out[14]= {{45.2, 39.7, 38.9}, {79.8, 65.6, 65.4}, {109.8, 24.6, 35.4}}

In[15]:= Import["C:\\Users\\agri-ghorbani\\Desktop\\data.xlsx"][[
  Istanbul]];

During evaluation of In[15]:= Part::pkspec1: The expression Istanbul cannot be used as a part specification.
Attachments:
POSTED BY: M.A. Ghorbani
Posted 5 years ago

Try this-

Import["C:\\Users\\agri-ghorbani\\Desktop\\data.xlsx", {"Data","Ukraine"}]
POSTED BY: Girish Arabale

Thank you so much, Girish.

POSTED BY: M.A. Ghorbani
Reply to this discussion
Community posts can be styled and formatted using the Markdown syntax.
Reply Preview
Attachments
Remove
or Discard

Group Abstract Group Abstract