WPF MVVM JSON Operations (Convert Excel To Json)
WPF MVVM JSON Operations (Convert Excel To
Json)
Folder: View - > MainWindow.xaml
<Window x:Class="WpfExceltoJson.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WpfExceltoJson"
xmlns:vm="clr-namespace:WpfExceltoJson.ViewModel"
mc:Ignorable="d"
Title="MainWindow" Height="350" Width="525">
<Window.Resources>
<vm:ExcelToJson x:Key="ViewModel"/>
</Window.Resources>
<Grid DataContext="{Binding Source={StaticResource ViewModel}}">
<Button x:Name="Submit" Height="50" Content="Conver Excel To Json " Background="Aqua" Command="{Binding ConvertExcelToJson }" Margin="208,134,168,135"/>
</Grid>
</Window>
Folder: Model - > Empty
Nothing Empty
Folder: ViewModel - > ExcelToJson.cs
public class ExcelToJson
{
private ICommand _ConvertExcelToJson;
public ICommand ConvertExcelToJson
{
get
{
if (_ConvertExcelToJson == null)
{
_ConvertExcelToJson = new RelayCommand(Param => this.ConverFile(),
null);
}
return _ConvertExcelToJson;
}
}
public void
ConverFile()
{
var pathToExcel = @"C:\temp\file.xlsx";
var sheetName = "sheetOne";
//This
connection string works if you have Office 2007+ installed and your
//data is saved
in a .xlsx file
var connectionString = String.Format(@"Provider=Microsoft.ACE.OLEDB.12.0;Data
Source={0};
Extended Properties=""Excel
12.0 Xml;HDR=YES""", pathToExcel);
//Creating and
opening a data connection to the Excel sheet
using (var conn = new OleDbConnection(connectionString))
{
conn.Open();
var cmd = conn.CreateCommand();
cmd.CommandText = String.Format(
@"SELECT * FROM [{0}$]",
sheetName
);
using (var rdr =
cmd.ExecuteReader())
{
//LINQ query -
when executed will create anonymous objects for each row
var query =
(from DbDataRecord row in rdr
select row).Select(x =>
{
//dynamic item = new ExpandoObject();
Dictionary<string, object> item
= new Dictionary<string, object>();
item.Add(rdr.GetName(0), x[0]);
item.Add(rdr.GetName(1),
x[1]);
item.Add(rdr.GetName(2), x[2]);
return item;
});
//Generates JSON from the LINQ query
var json = JsonConvert.SerializeObject(query, Formatting.Indented);
File.WriteAllText(@"C:\temp\new.json", json);
//return json;
}
}
}
}
}Folder: ICommandUpdater- > RelayCommand.cs
public class RelayCommand:ICommand
{
public RelayCommand(Action<object>
execute) : this(execute, null)
{
}
public RelayCommand(Action<object>
execute, Predicate<object> canExecute)
{
if (execute == null)
throw new ArgumentNullException("execute");
_execute = execute;
_canExecute = canExecute;
}
public bool
CanExecute(object parameter)
{
return _canExecute == null ? true :
_canExecute(parameter);
}
public event EventHandler CanExecuteChanged
{
add { CommandManager.RequerySuggested += value; }
remove { CommandManager.RequerySuggested -= value; }
}
public void Execute(object parameter)
{
_execute(parameter);
}
private readonly Action<object>
_execute;
private readonly Predicate<object>
_canExecute;
}
Project Input/Output File Path:
C:\temp\file.xlsx
Comments
Post a Comment