I wanted to ask how can I view an Excel file from a Mathematica notebook and modify it.

I have seen a similar question, Open Excel file with Mathematica, but the answer involves .NET. Is there any other way to open an Excel file and modify it?

  • $\begingroup$ You could Import[] a spreadsheet, but I don't believe there's a native way to have a spreadsheet interface within Mathematica... $\endgroup$ – J. M.'s torpor Jul 5 '12 at 7:00
  • $\begingroup$ @J.M. well there is TableView ... $\endgroup$ – Mr.Wizard Jul 5 '12 at 7:04
  • $\begingroup$ @J.M.: I dont want to import the values because I want that end user can open the Excel file and change its values if needed and then use it in application. $\endgroup$ – Jennifer Jul 5 '12 at 7:06
  • $\begingroup$ @Mr.Wiz, undocumented, I see... :) $\endgroup$ – J. M.'s torpor Jul 5 '12 at 7:06
  • 1
    $\begingroup$ Then I don't quite understand why you want to use Mathematica to open Excel files... something about "use the proper tool for the job"? $\endgroup$ – J. M.'s torpor Jul 5 '12 at 7:07

Amending the file directly would indeed require something like .Net. If you were willing to consider an import-export roundtrip but with a spreadsheet like interface in Mathematica, then something like this might work:

rawdata = (Import["myspreadsheet.xlsx"][[2]]);
 (* where 2 is the number of the worksheet you want to use *)
newdata = TableView[rawdata]

Now, change the data cells you want to change and then type Shift-Enter when the cursor is in that TableView.

Then in another cell, evaluate:

newnewdata = %[[1]]

This will give you an expression with the list of changed data, stripped of the enclosing TableView Head.

You can then Export that changed expression back to Excel if that is what you wish.

  • $\begingroup$ TableView has some useful column sorting capabilities. $\endgroup$ – Mike Honeychurch Jul 5 '12 at 9:34
  • $\begingroup$ @Verbeia: Thanks...but I have tried it in another way. I have posted my answer. $\endgroup$ – Jennifer Jul 6 '12 at 7:07
 Button["Browse", (g = SystemDialogInput["FileOpen"]; SystemOpen[g]), Method -> "Queued"],    
 Button["Import", y = Import[g, "Data"]]}]

I have made two Buttons, one for browsing theExcel file and other imports it.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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