5

Excel ワークブック/ワークシートを開く方法と、終了後にファイルを保存する方法を教えてくれる FAQ を探していました。

ほとんどの FAQ と F# で購入したすべての本では、新しいワークブック/ワークシートを作成する方法が示されていますが、開く方法や保存する方法は示されていません。

F# の初心者である私は、誰かが親切に答えまたはおそらくいくつかのポインタを提供してくれれば、非常に感謝していますか?

アップデート

なぜ C# や VB ではなく F# なのか?

初心者であるにも関わらず (Forth、VBA & Excel 2003、2007 & 2010、および Visual Basic を除く)、VB、VBA & C# の両方でこれを行うことができます。残念なことに私の手には十分な時間があり、私は自分の小さな灰色の細胞をアクティブに保ち、新しい言語を試すのが好きな人になるために、自分自身に挑戦し続けるのが好きです....まあ!

F# は現在、Visual Studio 2010 の不可欠な部分になっているので、そうではないと思いました。これを考慮してください - 新しい言語を使用したくない、または少なくとも新しい言語を試すつもりがない場合、VBA、VB、C# よりも好きだったのではないかといつも思います。誰もそれを使用しない場合、なぜ最初に作成する必要があるのでしょうか。穴居人が 2 本の棒をこすり合わせて火を起こす実験をしていなかったら、私たちは今どこにいて、マッチが発明されていたでしょうか?

完全な答えは良いことですが、私の挑戦を続けるために、いくつかの指針を好みます。

最後になりましたが、お手数をおかけしてご返信いただきありがとうございます。

4

2 に答える 2

3

それらが Office 用の特定の F# ライブラリであるとは思わないので、VB.NET/C# で使用するのとまったく同じ .NET ライブラリを使用するだけです。F# は .NET 言語であるため、C# で実行できることはすべて F# でも実行できます (ただし、既にご存知のことでしょう :) )。API 呼び出しはまったく同じで、VB/C# 構文ではなく F# 構文を使用して行われるだけです。たとえば、このようなもの

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# はまあまあです。F# はグラフィック カード プログラミング言語のようなもので、C# は汎用 CPU プログラミング言語のようなものです。多くのことは C# でより適切に実行されますが、F# でより適切に実行されるものは実際に C# でより適切に実行されます。

ただし、本当にその方法を使用したい場合は、既におなじみの Office API を F# 構文で使用することをお勧めします。ある時点で、特定のタスクを実行する方法が本当にわからない場合は、スタックオーバーフローでコードと正確にやりたいことについて質問してください。これらの質問は、幅広い包括的な質問に比べて驚くほど早く回答されるため、長く待つ必要はありません。(プログラマーは、具体的な答えを伴う正確な質問が好きなようです ^^)

少しでもお役に立てば幸いです。

于 2011-02-11T20:40:56.970 に答える
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)

Excel で F# を使用することは、自然に適合するように思えます。

Excel で結果を得るには、それぞれが数式によって駆動されるいくつかの不変値を使用する必要があります。Excel には優れたユーザー インターフェイスがあり、美しい世界のモデルです。行、列、セルが大好きですが、自動化またはカスタマイズするにはマクロが必要です。F# を使えるのに、なぜこれを学ぶのでしょうか? 数式と不変の値は、その設計の基本です。

理想的には、F# でもユーザー定義関数 (UDF) として数式を自分で記述します。 http://excel-dna.net/を参照してください。次に、おそらく、オブジェクト/タイプで何か面白いことをしたいと思うでしょう-「github com mndrake ExcelObjectHandler」を探してください(3番目のリンクを投稿するのに十分な評判がありません)。

ジャック

于 2016-05-10T10:48:57.667 に答える