2011-01-22 12 views
5

He estado buscando preguntas frecuentes para decirme cómo abrir un libro de trabajo/hoja de trabajo de Excel y también cómo guardar el archivo una vez que haya terminado.Automatizando Excel 2010 usando F #

Noté que en la mayoría de las preguntas frecuentes y en todos los libros que he comprado en F # uno se muestra cómo crear un nuevo libro/hoja de trabajo pero nunca se muestra cómo abrirlo o guardarlo.

Siendo un novato en F #, agradecería muchísimo si alguien pudiera proporcionarme una respuesta o quizás algunos consejos.

actualización

cuanto a por qué F # y no en C# o VB?

Me complace decir que a pesar de ser un novato (con la excepción de Forth, VBA & Excel 2003, 2007 & 2010 y Visual Basic) que puedo hacer esto tanto en VB, VBA & C# y desde que he Retirado por motivos médicos, con tiempo suficiente desafortunadamente en mis manos, me gusta plantearme retos constantemente para mantener activas mis pequeñas células grises y ser un tonto para probar nuevos idiomas ... ¡bueno!

F # ahora es una parte integral de Visual Studio 2010, así que pensé: ¿por qué no? Considere esto - si no estamos dispuestos a usar o al menos probar un nuevo idioma - siempre me pregunto si podría haberlo preferido a VBA, VB, C# ..... y si lo miras desde otro punto de ver, si nadie va a usarlo, ¿por qué crearlo en primer lugar? Supongo que puedes decir si los hombres de las cavernas no habían experimentado e hicieron fuego frotando dos palos, ¿dónde estaríamos ahora y los fósforos se habrían inventado?

Aunque una respuesta completa sería buena, prefiero algunos consejos para mantener mi desafío.

Y por último pero no menos importante, ¡gracias por tomarse la molestia de responder!

+0

¿Por qué F # not standard C# or VB? – Bonshington

Respuesta

3

No creo que sea una biblioteca F # específica para Office, por lo que solo usará la misma biblioteca .NET que usa en VB.NET/C#. F # es un lenguaje .NET, por lo que todo lo que se puede hacer en C# se puede hacer en F # (pero probablemente ya lo sabía :)). La llamada a la API será exactamente la misma, solo que se hará con la sintaxis F # en lugar de la VB/C#. Así, por ejemplo, algo que se parece a este

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

se expresará en C# como

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

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

Ahora, lo que pronto se dará cuenta es que la API no está diseñado exactamente para ser utilizado fácilmente desde una Idioma funcional. Se puede hacer, pero esta tarea en particular está mucho más adaptada a C#/VB.NET.

Si realmente quieres disfrutar de F #, te sugiero que uses en el área donde realmente se nota su fortaleza. Mi experiencia personal es que el lenguaje funcional es increíble cuando se trata de muchas matemáticas. También es maravilloso si desea introducir fácilmente el paralelismo en su aplicación (ya que el código F # normalmente no tiene efectos secundarios). Entonces, cualquier cosa que requiera datos crujientes en una gran cantidad de datos es perfecta para eso. Pero para la tarea que consiste principalmente en reunir un montón de llamadas API a una biblioteca externa, F # es algo así como meh. Se podría decir que F # es como un lenguaje de programación de tarjeta gráfica, mientras que C# es un lenguaje de programación de CPU de propósito general. Muchas cosas funcionan mejor con C#, pero las cosas que funcionan mejor en F # ejecutan realmente mejor en él.

Pero si realmente quieres seguir esa ruta, mi sugerencia es intentar utilizar la API de Office como ya la conoces, pero con una sintaxis F #. Si en algún momento no tiene idea de cómo hacer una tarea específica, haga una pregunta al respecto en stackoverflow con su código y exactamente quiere lo que quiere hacer. Esas preguntas se responden ridículamente rápido en comparación con la amplia pregunta que abarca todo, por lo que no esperará mucho. (Programador parece amar pregunta precisa con una respuesta específica ^^)

Espero que ayudó un poco.

1

Encontré este http://iouri-khramtsov.blogspot.co.uk/2011/12/automating-excel-with-f.html consejos útiles. En resumen, usaría algo como esto:

#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) 

Usar F # con Excel parece un ajuste natural.

Llegar a un resultado en Excel requiere el uso de varios valores inmutables, cada uno impulsado por fórmulas. Excel tiene una interfaz de usuario brillante, un encantador modelo del mundo, me encantan las filas, las columnas y las celdas, pero para automatizar o personalizar cosas se requieren macros. ¿Por qué aprender esto cuando puedes usar F #? Las fórmulas y los valores inmutables son fundamentales para su diseño.

Idealmente, usted mismo debería escribir fórmulas como una Función definida por el usuario (UDF) también en F # - vea http://excel-dna.net/. Entonces, tal vez, desearía hacer algo interesante con objetos/tipos: busque "github com mndrake ExcelObjectHandler" (no tengo suficiente reputación para publicar un tercer enlace).

Jack

Cuestiones relacionadas