从Excel到Xamarin铺平道路
众所周知,Excel是Microsoft提供的一种相当常见的电子表格实用程序,用于组织和操作数据。如果您以前使用过Excel,您可能会发现维护数百个电子表格可能是一项繁琐的任务。将数据存储、制造和查询到应用程序中以有意义的方式可视化它从未如此简单。
本文将指导您如何轻松地将工作表导入Infragistics Excel库,然后将数据转换为XamCategoryChart
可以分析的对象,并使用Xamarin Forms项目自动显示可视化。
Xamarin.Forms Infragistics Excel引擎Infragistics Ultimate UI for Xamarin
Infragistics Excel引擎与Xamarin.Forms无缝集成,使您能够在应用程序中使用excel数据。我们的数据可视化工具提供了一种有效的方式来从计算机屏幕上获取电子表格数据,并将其跳到您的指尖。
最新的Infragistics Xamarin
工具套件中的XamCategoryChart组件提供了移动应用程序开发的下一个重大创新。高性能的数据可视化在跨平台环境中满足简单但丰富的API。
代码更少,提供更多
导入工作表数据首先,您的可移植类库项目需要导入您的Excel数据。您将文件添加为嵌入式资源,并为文件创建流以开始其转换。
public MainPage() { InitializeComponent(); ExcelData _data; var assembly = typeof(MainPage).GetTypeInfo().Assembly; Stream stream = assembly.
GetManifestResourceStream("XFCategoryChart.tst1.xls"); _Data = GetExcelData(stream); /// (续) }
使用流创建工作簿。当您从Excel文件打开流时,Excel引擎将允许您创建工作簿对象。最好使用Excel文件,其中第一条记录是要存储为XamDataChart属性的字段标题。
私有ExcelData GetExcelData(Stream streamName) {工作簿Workbook 1; 使用 (streamName) { workbook1 = Workbook.Load(streamName); } int columnsNumber = 0; 字符串列; 列表gridColumns = 新列表 (); var工作表 = workbook1.Worksheets[0];while (worksheet.Rows[0].GetCellValue(columnsNumber) != null) { columnsNumber ; } (var columnIndex = 0; columnIndex < columnsNumber;
columnIndex ) { column = worksheet.Rows[0].GetCellText(columnIndex); gridColumns.Add(column); } /// (续) }
XamCategoryChart
要求数据采用实现IEnumerable的对象的形式。来自Systems.Collections.Generic类的字典可用于存储每个记录。您将需要遍历Excel文件并添加新行
/// (从上面继续) var worksheetRowsCount = worksheet.Rows.Count(); var items = new ExcelData(); for (var i = 1; i < worksheetRowsCount; i ) { var newRow = new Dictionary<string,object = "">(); var row = worksheet.Rows[i]; for (var columnIndex = 0; columnIndex < columnsNumber; columnIndex ) { var cellValue = row.GetCellText(columnIndex); double doubleValue; if (double.TryParse(cellValue, out doubleValue)) { newRow[gridColumns[columnIndex]] = doubleValue; } else { newRow[gridColumns[columnIndex]] = cellValue; } items.Add(newRow); } 返回items; } 公共类ExcelData : ObservableCollection<Dictionary<string,object = "">> { public void NotifyReset() { OnCollectionChanged (新的System.Collections.Specialized.
NotifyCollectionChangedEventArgs(System.Collections.
Specialized.NotifyCollectionChangedAction.Reset)); } }
添加XamCategoryChart
并绑定到ExcelData
public MainPage() { InitializeComponent(); … this.BindingContext = _data; }
完整代码示例
以下代码段演示如何使用跨平台Xamarin Forms项目获取数据并使其对内容页可用。
公共分部类MainPage : ContentPage { public MainPage() { InitializeComponent(); Exceldata_data; var assembly = typeof(MainPage).GetTypeInfo().Assembly; Stream = assembly.
GetManifestResourceStream("XFCategoryChart.tst1.xls"); string text = ""; using (var reader = new System.IO.StreamReader(stream)) { text = reader.ReadToEnd(); _Data = GetExcelData(stream); } 此.BindingContext = _data; } 私有ExcelData GetExcelData(Stream streamName) {工作簿Workbook 1; 使用 (streamName) { workbook1 = Workbook.Load(streamName); } int columnsNumber = 0; 字符串列; 列表gridColumns = 新列表 (); var工作表 = workbook1.Worksheets[0];while (worksheet.Rows[0].GetCellValue(columnsNumber) != null) { columnsNumber ; } 对于 (var columnIndex = 0; columnIndex < columnsNumber;
columnIndex ) { column = worksheet.Rows[0].GetCellText(columnIndex); gridColumns.Add(column); } var worksheetrows.Rows.Count.var items = new ExcelData(); for (var i = 1; i < worksheetRowsCount; i ) { var newRow = new Dictionary<string, object = "">(); var row = worksheet.Rows[i]; for (var columnIndex = 0; columnIndex < columnsNumber;columnIndex ) { var cellValue = row.GetCellText(columnIndex); double doubleValue; if (double.TryParse(cellValue, out doubleValue)) { newRow[gridColumns[columnIndex]] = doubleValue; } else { newRow[gridColumns[columnIndex]] = cellValue; } } items.Add(newRow); } 返回项目; } } 公共类ExcelData : ObservableCollection<Dictionary<string,object = "">> { public void NotifyReset() { OnCollectionChanged(new System.Collections.Specialized.
NotifyCollectionChangedEventArgs(System.Collections.Specialized.
NotifyCollectionChangedAction.Reset)); } }现在,通过我们的私有NuGet feed持续交付终极UI for Xamarin ,您可以比以往更快地获得更多的功能和控制。立即下载试用版以开始使用,然后查看快速编写和快速运行课程 ,您可以立即创建跨平台的Xamarin.Forms移动应用程序。
</blockquote