Es gibt keine "geheime Soße", die der neuesten F # CTP-Version (Visual Studio 2010 Beta1) hinzugefügt wurde, um die Office-Interoperabilität zu verbessern. Vielleicht haben Sie F # mit C#'s new support for Dynamic verwechselt.
Office-Interop in F # ist jedoch identisch mit C# - Sie können die systemeigenen COM-APIs oder die neueren verwalteten Visual Studio-Tools für Office (VSTO) -Bibliotheken verwenden. Leider verfügt F # nicht über die UI-Designer zum Erstellen von VSTO-Add-Ins wie C#. Daher ist die Verwendung der COM-APIs am einfachsten, um Office-Interoperabilität herzustellen.
Das folgende Snippet erstellt ein Excel-Arbeitsblatt mit Informationen über die Bilder in Ihrem Ordner Eigene Bilder:
#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)
Hallo Chris, das ist verrückt. Ich habe gerade dieses Video von Dom Syme http://channel9.msdn.com/Blogs/David+Gristwood/An-F-Tutorial-with-Don-Syme-2-of-4 geschaut, wo er soem explorative codig mit F # macht. . Ich fand das cool. In der Lage zu sein, auf Excel als Frontend zu tippen, macht einfach nur Sinn. Vielen Dank! – gjvdkamp