任何人都可以提供一個Web鏈接或演示如何使用.NET 4.0(Visual Studio 2010 Beta 1)進行F#和Excel集成?用於.NET 4.0的F#和Excel集成(Visual Studio 2010 Beta 1)
我知道如何在CTP版本中做到這一點,但據我所知,它應該在.NET 4.0(Visual Studio 2010 Beta 1)中更簡單。
任何人都可以提供一個Web鏈接或演示如何使用.NET 4.0(Visual Studio 2010 Beta 1)進行F#和Excel集成?用於.NET 4.0的F#和Excel集成(Visual Studio 2010 Beta 1)
我知道如何在CTP版本中做到這一點,但據我所知,它應該在.NET 4.0(Visual Studio 2010 Beta 1)中更簡單。
爲了提高Office互操作性,最新的F#CTP版本(Visual Studio 2010 Beta1)沒有添加「祕密醬油」。也許你有F#與C#'s new support for Dynamic混淆。
但是,F#中的Office interop與C#相同 - 您可以使用本機COM API或更新的託管的Visual Studio Tools for Office(VSTO)庫。不幸的是,F#沒有用於創建像C#這樣的VSTO加載項的UI設計器,因此執行Office interop最簡單的方法就是使用COM API。
下面的代碼片段創建一個Excel工作表有關您的圖片收藏文件夾圖片信息:
#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)
只需寫寫空VSTO殼,然後創建F#集DLL並使用它。我總是使用優秀的VS2010設計師,然後將其鏈接到F#DLL,你將得到最好的兩個世界....
嗨克里斯,這是瘋了。我只是通過Dom Syme觀看這段視頻http://channel9.msdn.com/Blogs/David+Gristwood/An-F-Tutorial-with-Don-Syme-2-of-4他在那裏用F# 。我覺得那很酷。能夠將Excel作爲前端拍打,只會讓人頭暈目眩。謝謝! – gjvdkamp 2011-04-12 20:11:21