こんにちは。エクセルソフトの田淵です。
.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 を生成、保存する。なども可能ですので興味があれば見てみてください。
以上です。