2011-01-22 2 views
5

Я искал FAQ, чтобы узнать, как открыть книгу Excel/Рабочий лист, а также как сохранить файл после завершения.Автоматизация Excel 2010 с использованием F #

Я заметил, что в большинстве часто задаваемых вопросов и всех книг, которые я приобрел на F # one, показано, как создать новую Рабочую книгу/Рабочую таблицу, но никогда не показано, как ее открыть или сохранить.

Будучи новичком в F #, я был бы очень признателен, если бы кто-нибудь мог любезно предоставить мне ответ или, возможно, несколько указателей?

Update

А почему F # и не C# или VB?

Я рад сказать, что несмотря на будучи новичком (за исключением Forth, VBA & Excel 2003, 2007 & 2010 и Visual Basic), я могу сделать это как в VB, VBA & C# и так как я ушел на пенсию по медицинским показаниям, с большим количеством времени, к сожалению, на моих руках, мне нравится постоянно задавать себе проблемы, чтобы держать мои маленькие серые клетки активными и быть присосками для изучения новых языков .... хорошо!

F # теперь является межстрановой частью Visual Studio 2010, поэтому я подумал - почему бы и нет. Подумайте об этом - если мы не хотим использовать или, по крайней мере, пробовать новые языки, я всегда буду удивляться, если бы я предпочел это VBA, VB, C# ..... и если вы посмотрите на него с другой точки если никто не собирается его использовать - зачем создавать его в первую очередь? Полагаю, вы можете сказать, что если пещерные люди не экспериментировали и не стреляли, протирая две палочки - где бы мы были теперь и были бы матчи, которые были изобретены?

Хотя полный ответ был бы хорошим, я бы предпочел несколько указателей, чтобы удержать вызов.

И последнее, но не менее важное - спасибо, что взяли на себя труд ответить!

+0

Почему F # не является стандартным C# или VB? – Bonshington

ответ

3

Я не думаю, что это специальная библиотека F # для Office, поэтому вы просто будете использовать ту же библиотеку .NET, которую вы используете в VB.NET/C#. F # - это .NET-язык, поэтому все, что можно сделать на C#, можно сделать в F # (но вы, вероятно, уже знали это :)). Вызов API будет абсолютно таким же, просто он будет выполнен с использованием синтаксиса F # вместо VB/C#. Так, например, то, что выглядят как этот

public void SaveMyWorkbook() { 
    string filePath = @"C:\failworkbooks\catfail.xlsx"; 
    workbook.Save(filepath); 
} 

будет выражаться в F #, как

let filePath = "C:\\failworkbooks\\catfail.xlsx"; 

let saveWorkbook() = workbook.Save(filePath) |> ignore //if the Save method return something 

Теперь, что вы скоро поймете, что API не точно разработан, чтобы быть легко использован с функциональный язык. Это можно сделать, но эта задача в особенности намного больше подходит для C#/VB.NET.

Если вы действительно хотите насладиться F #, я предлагаю вам использовать его в районе, где его сила действительно проявляется. Мой личный опыт заключается в том, что функциональный язык является удивительным, когда задействовано много математики. Также замечательно, если вы хотите легко ввести параллелизм в своем приложении (поскольку код F # обычно является свободным от побочных эффектов). Так что все, что требует хруст данных на большом количестве данных, идеально подходит для него. Но для задачи, состоящей в основном из объединения кучи вызова API во внешнюю библиотеку, F # является своего рода meh. Можно сказать, что F # является своего рода языком программирования на графической карте, а C# - языком программирования общего назначения. Многое работает лучше с C#, но материал, который работает лучше на F #, запускает действительно лучше на нем.

Но если вы действительно хотите пройти этот маршрут, мое предложение - попытаться использовать Office API, как вы уже знаете, но с синтаксисом F #. Если в какой-то момент вы действительно не знаете, как сделать конкретную задачу, задайте вопрос об этом в stackoverflow с вашим кодом и точно хотите, чтобы вы это сделали. На этот вопрос ответят смешно быстро по сравнению с широким всеобъемлющим вопросом, поэтому вы не будете долго ждать. (Программист, похоже, интересуется точным вопросом с конкретным ответом ^^)

Я надеюсь, что это помогло немного.

1

Я нашел этот http://iouri-khramtsov.blogspot.co.uk/2011/12/automating-excel-with-f.html полезный совет. Вкратце, вы использовали бы что-то вроде этого:

#r "Microsoft.Office.Interop.Excel" // Assuming it's a script 

let excel = ApplicationClass(Visible = true) 

let openFileName = @"C:\MyDir\MyFilenameToOpen.xls" 
excel.Workbooks.Open(openFileName) 

// Do stuff 

let savedFileName = @"C:\MyDir\MyFilename.xls" 
workbook.SaveAs(savedFileName) 

Использование F # с Excel кажется естественным.

Получение результата в Excel требует использования нескольких неизменяемых значений, каждый из которых управляется формулами. Excel имеет блестящий пользовательский интерфейс, прекрасную модель мира - мне нравятся строки, столбцы и ячейки, но для автоматизации или настройки вещей требуются макросы. Зачем учиться этому, когда вы можете использовать F #? Формулы и неизменные значения имеют основополагающее значение для его дизайна.

В идеале вы должны писать формулы самостоятельно как пользовательские функции (UDF) также в F # - см. http://excel-dna.net/. Тогда, возможно, вы захотите сделать что-то интересное с помощью объектов/типов. Ищите «github com mndrake ExcelObjectHandler» (у меня недостаточно репутации для публикации третьей ссылки).

Jack

Смежные вопросы