Il n'y a pas de 'sauce secrète' ajoutée à la dernière version F # CTP (Visual Studio 2010 Beta1) pour améliorer Office interop. Peut-être avez-vous F # confus avec C#'s new support for Dynamic. Toutefois, Office interop en F # est identique à C# - vous pouvez utiliser les API COM natives ou les nouvelles bibliothèques Visual Studio Tools pour Office (VSTO) gérées. Malheureusement, F # n'a pas les concepteurs d'interface utilisateur pour créer des compléments VSTO comme C#, donc la façon la plus simple d'utiliser Office interop est d'utiliser les API COM.
L'extrait suivant crée une feuille de calcul Excel avec des informations sur les images dans votre dossier Mes images:
#r "Microsoft.Office.Interop.Excel"
open System
open System.IO
open System.Reflection
open Microsoft.Office.Interop.Excel
let app = ApplicationClass(Visible = true)
let sheet = app.Workbooks
.Add()
.Worksheets.[1] :?> _Worksheet
let setCellText (x : int) (y : int) (text : string) =
let range = sprintf "%c%d" (char (x + int 'A')) (y+1)
sheet.Range(range).Value(Missing.Value) <- text
let printCsvToExcel rowIdx (csvText : string) =
csvText.Split([| ',' |])
|> Array.iteri (fun partIdx partText -> setCellText partIdx rowIdx partText)
let rec filesUnderFolder basePath =
seq {
yield! Directory.GetFiles(basePath)
for subFolder in Directory.GetDirectories(basePath) do
yield! filesUnderFolder subFolder
}
// Print header
printCsvToExcel 0 "Directory, Filename, Size, Creation Time"
// Print rows
filesUnderFolder (Environment.GetFolderPath(Environment.SpecialFolder.MyPictures))
|> Seq.map (fun filename -> new FileInfo(filename))
|> Seq.map (fun fileInfo -> sprintf "%s, %s, %d, %s"
fileInfo.DirectoryName
fileInfo.Name
fileInfo.Length
(fileInfo.CreationTime.ToShortDateString()))
|> Seq.iteri (fun idx str -> printCsvToExcel (idx + 1) str)
Salut Chris, c'est fou. Je regardais juste cette vidéo par Dom Syme http://channel9.msdn.com/Blogs/David+Gristwood/An-F-Tutorial-with-Don-Syme-2-of-4 où il fait une codig explorative avec F # . Je pensais que c'était cool. Être capable de claquer sur Excel comme front end juste boggles l'esprit. Merci! – gjvdkamp