SpeadsheetGear for .NET Standard を触ってみた

こんにちは。エクセルソフトの田淵です。

.NET から Excel がインストールされていなくても xlsx ファイルを弄れる SpreadsheetGear という製品があるのですが、それが今回のバージョンアップで、.NET Standard 1.3 対応のライブラリもリリースしました。

つまり、Xamarin.iOS/Xamarin.Android や Xamarin.Forms で UWP も対応しているということです。なので触ってみました。

評価版はこちらのフォームに必要事項をご記入の上申し込んでください。

案内されるページに評価用文字列の入手方法が記載されています。

インストール

このように NuGet から「SpreadsheetGear」を検索して追加して、App.xaml.csに評価用文字列を記述するだけなのですが、Xamarin.Forms で .NET Standard のライブラリを使用する場合は、手動でプロジェクトファイル(csproj)を書き換える必要があります。.NET Standard についてや対応方法は

NET Standard と Xamarin
GitHub のサンプル

をご覧ください。(後日、私の Xamarin のブログにもエントリーをアップする予定です。)

使ってみよう

SSG のサンプル では、Excel の計算式を使って結果を取得する方法が書かれていました。これをちょろっとだけ弄ったサンプルを作ってみました。

[code language=”csharp”]
private void AverageClicked(object sender, EventArgs e)
{
var numbers = new double[]
{
double.TryParse(num1.Text, out var d1) ? d1 : 0,
double.TryParse(num2.Text, out var d2) ? d2 : 0,
double.TryParse(num3.Text, out var d3) ? d3 : 0
};
averageLabel.Text = CalculateAverage(numbers).ToString();
}

private double CalculateAverage(double[] numbers)
{
// Create a new empty workbook in a new workbook set.
SpreadsheetGear.IWorkbook workbook = SpreadsheetGear.Factory.GetWorkbook();

// Get a reference to the first worksheet.
SpreadsheetGear.IWorksheet worksheet = workbook.Worksheets["Sheet1"];

// Get a reference to the top left cell of Sheet1.
SpreadsheetGear.IRange a1 = worksheet.Cells["A1"];
SpreadsheetGear.IRange a2 = worksheet.Cells["A2"];
SpreadsheetGear.IRange a3 = worksheet.Cells["A3"];
SpreadsheetGear.IRange a4 = worksheet.Cells["A4"];

a2.Value = numbers[0];
a3.Value = numbers[1];
a4.Value = numbers[2];
// Set a formula.
a1.Formula = "=AVERAGE(A2:A4)";

return (double)a1.Value;
}
[/code]

XAML は Entry を3つ並べただけです。

[code lang=xml]
<StackLayout Padding="8">
<Entry x:Name="num1" Text="1" />
<Entry x:Name="num1" Text="1" />
<Entry x:Name="num1" Text="1" />
<Button Clicked="AverageClicked" Text="Average" />
<Label x:Name="averageLabel" Text="Average: " />
</StackLayout>
[/code]

こんな感じです。

ちゃんと計算できていますね!

iOS ではファイルをローカルに保存できないので、あまり Excel ファイルを作成して保存する。という用途では使わないかもしれませんが、.NET Standard で使える Excel 用のライブラリは貴重だなと思います。

通常の .NET Framework 版もあり、WPF などで色々凝った Excel を生成、保存する。なども可能ですので興味があれば見てみてください。

SpreadsheetGear サイト

以上です。

タイトルとURLをコピーしました