このトピックでは、FlexGridコンテンツをExcelのxlsxファイルにエクスポートまたはインポートする方法を示します。FlexGridコンテンツをExcel形式にエクスポートするには、FlexGridインスタンスをFlexGridXlsxConverter.saveメソッドに渡します。これにより、xlsxファイルコンテンツが生成され、このコンテンツをローカルファイルに保存したり、サーバーに送ることができます。Excel(xlsxファイル)コンテンツをFlexGridコントロールにインポートするには、FlexGridインスタンスとxlsxファイルコンテンツをFlexGridXlsxConverter.loadメソッドに渡します。この例では、「クイックスタート」でアプリケーションに追加したSale.csモデルを使用します。
次のコード例は、FlexGridコンテンツとExcel xlsxファイル間でエクスポートまたはインポートする方法を示します。
以下のコードを実装する前に、FlexGridをExcel xlsxファイルとの間でインポートおよびエクスポートするには、jszip.min.jsライブラリの参照を追加する必要があります。
_Layout.cshtml
| HTML |
コードのコピー
|
|---|---|
<!-- SheetJS library --> <script src="http://cdnjs.cloudflare.com/ajax/libs/jszip/2.2.1/jszip.min.js"></script> |
|
HomeController.cs
| C# |
コードのコピー
|
|---|---|
public ActionResult Index() { return View(Sale.GetData(500)); } |
|
App.js
| JavaScript |
コードのコピー
|
|---|---|
//コントロールの宣言 var gFlexGrid = null, IncludeHeadersExport = null, IncludeHeadersImport = null; //コントロールの初期化 function InitialControls() { gFlexGrid = wijmo.Control.getControl("#gFlexGrid"); IncludeHeadersImport = document.getElementById('IncludeHeadersImport'); IncludeHeadersExport = document.getElementById('IncludeHeadersExport'); } // エクスポート function exportExcel() { if (gFlexGrid) { wijmo.grid.xlsx.FlexGridXlsxConverter.save(gFlexGrid, { includeColumnHeaders: IncludeHeadersExport.checked }, 'FlexGrid.xlsx'); } }; // インポート function importExcel() { if (gFlexGrid) { if ($('#importFile')[0].files[0]) { wijmo.grid.xlsx.FlexGridXlsxConverter.load(gFlexGrid, $('#importFile')[0].files[0], { includeColumnHeaders: IncludeHeadersImport.checked }); } else { alert('Select an Excel file to Import.'); } } }; |
|
Index.cshtml
| Razor |
コードのコピー
|
|---|---|
@using C1MVCExcelImportExport.Models
@using C1.Web.Mvc.Grid
@model IEnumerable<Sale>
@{
ViewBag.Title = "ComponentOne ASP.NET MVC Excel Import Export";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<!-- App scripts -->
<script src="@Url.Content("~/Scripts/app.js")" type="text/javascript"></script>
<div class="container">
<div class="row">
<div class="col-md-6 col-xs-12">
<div class="form-inline well well-lg">
<input type="file" class="form-control" id="importFile" accept="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" />
<button class="btn btn-default" onclick="importExcel()">インポート</button>
<br />
<div class="checkbox">
<label>
<input id="IncludeHeadersImport" type="checkbox" checked="checked"> Include Column Headers
</label>
</div>
</div>
</div>
<div class="col-md-6 col-xs-12">
<div class="form-inline well well-lg">
<a href="#" class="btn btn-default" id="export" onclick="exportExcel()">エクスポート</a>
<div class="checkbox">
<label>
<input id="IncludeHeadersExport" type="checkbox" checked="checked"> 列のヘッダを含む
</label>
</div>
</div>
</div>
</div>
<div class="row">
@(Html.C1().FlexGrid().Id("gFlexGrid").AutoGenerateColumns(false).AllowSorting(true)
.("max-height", "400px").IsReadOnly(true)
Bind(bl => bl.DisableServerRead(true).Bind(Model)).CssClass("grid")
Columns(bl =>
{
bl.Add(cb => cb.Binding("Country").Header("Country").Width("*"));
bl.Add(cb => cb.Binding("Product").Header("Product").Width("*"));
bl.Add(cb => cb.Binding("Color").Header("Color").Width("*"));
bl.Add(cb => cb.Binding("Start").Header("Start").Width("*"));
bl.Add(cb => cb.Binding("Amount").Header("Amount").Format("n0").Width("*")
.Aggregate(C1.Web.Mvc.Grid.Aggregate.Sum));
})
)
</div>
</div>
<script type="text/javascript">
c1.documentReady(function () {
if (window["InitialControls"]) {
window["InitialControls"]();
}
});
</script>
|
|