You could try to refer to the code below.
Install System.Data.SQLite
using NuGet.
App.Config
<?xml version="1.0" encoding="utf-8"?>
<configuration>
...
<connectionStrings>
<add name="SQLiteDbContext" connectionString="Data Source=MyDatabase.sqlite" providerName="System.Data.SQLite.EF6" />
</connectionStrings>
<appSettings>
<!--The license context used-->
<add key="EPPlus:ExcelPackage.LicenseContext" value="NonCommercial" />
</appSettings>
</configuration>
MainWindow.xaml:
<Window.Resources>
<local:DateTimeConverter x:Key="converter"/>
<local:DecimalConverter x:Key="decimalConverter"/>
</Window.Resources>
<Grid>
<DataGrid x:Name="dg" Width="700" Height="400" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Header="Party" Width="40" Binding="{Binding Party}"></DataGridTextColumn>
<DataGridTextColumn Header="BillNo" Width="100" Binding="{Binding BillNo}"></DataGridTextColumn>
<DataGridTextColumn Header="BillDate" Width="100" Binding="{Binding BillDate,Converter={ StaticResource converter}, StringFormat=yyyy - MM - dd }"></DataGridTextColumn>
<DataGridTextColumn Header="Amount" Width="100" Binding="{Binding Amount , Converter={StaticResource decimalConverter},StringFormat=N2}"></DataGridTextColumn>
<DataGridTextColumn Header="DueDate" Width="100" Binding="{Binding DueDate,Converter={ StaticResource converter}, StringFormat=yyyy - MM - dd }"></DataGridTextColumn>
<DataGridTextColumn Header="PaidOn" Width="100" Binding="{Binding PaidOn,Converter={ StaticResource converter}, StringFormat=yyyy - MM - dd }"></DataGridTextColumn>
</DataGrid.Columns>
</DataGrid>
</Grid>
MainWindow.xmal.cs:
using OfficeOpenXml;
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SQLite;
using System.Globalization;
using System.IO;
using System.Linq;
using System.Windows;
using System.Windows.Data;
namespace SqlLiteDemo
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
CreateTable();
}
string xlFile = @"C:\Users\...\Desktop\testing.xlsx";
public void CreateTable()
{
SQLiteConnection.CreateFile("MyDatabase.sqlite");
SQLiteConnection m_dbConnection = new SQLiteConnection("Data Source=MyDatabase.sqlite");
m_dbConnection.Open();
string sql = "create table MyData (Party varchar(20), BillNo varchar(20), BillDate varchar(20) ,Amount varchar(20) ,DueDate varchar(20),PaidOn varchar(20)) ";
SQLiteCommand command = new SQLiteCommand(sql, m_dbConnection);
command.ExecuteNonQuery();
DataTable dt = new DataTable();
FileInfo existingFile = new FileInfo(xlFile);
ExcelPackage package = new ExcelPackage(existingFile);
dt = ExcelPackageToDataTable(package);
SQLiteDataAdapter sqliteAdapter = new SQLiteDataAdapter("SELECT * FROM MyData", m_dbConnection);
SQLiteCommandBuilder cmdBuilder = new SQLiteCommandBuilder(sqliteAdapter);
sqliteAdapter.Update(dt);
SQLiteCommand sqlCom = new SQLiteCommand("Select * From MyData", m_dbConnection);
SQLiteDataAdapter sda = new SQLiteDataAdapter(sqlCom);
DataSet ds = new DataSet();
sda.Fill(ds);
if (ds.Tables[0].Rows.Count > 0)
{
dg.ItemsSource = ds.Tables[0].DefaultView;
}
m_dbConnection.Close();
}
public static DataTable ExcelPackageToDataTable(ExcelPackage excelPackage)
{
DataTable dt = new DataTable();
ExcelWorksheet worksheet = excelPackage.Workbook.Worksheets.First();
if (worksheet.Dimension == null)
{
return dt;
}
List<string> columnNames = new List<string>();
int currentColumn = 1;
foreach (var cell in worksheet.Cells[1, 1, 1, worksheet.Dimension.End.Column])
{
string columnName = cell.Text.Trim();
if (cell.Start.Column != currentColumn)
{
columnNames.Add("Header_" + currentColumn);
dt.Columns.Add("Header_" + currentColumn);
currentColumn++;
}
columnNames.Add(columnName);
int occurrences = columnNames.Count(x => x.Equals(columnName));
if (occurrences > 1)
{
columnName = columnName + "_" + occurrences;
}
dt.Columns.Add(columnName);
currentColumn++;
}
for (int i = 2; i <= worksheet.Dimension.End.Row; i++)
{
var row = worksheet.Cells[i, 1, i, worksheet.Dimension.End.Column];
DataRow newRow = dt.NewRow();
foreach (var cell in row)
{
newRow[cell.Start.Column - 1] = cell.Text;
}
dt.Rows.Add(newRow);
}
return dt;
}
}
[ValueConversion(typeof(DateTime), typeof(String))]
public class DateTimeConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return DateTime.ParseExact(value.ToString(), "d-M-yyyy", CultureInfo.InvariantCulture);
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}
[ValueConversion(typeof(double), typeof(String))]
public class DecimalConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
return double.Parse(value.ToString(), CultureInfo.InvariantCulture);
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
}
Update:
Install System.Data.SqLite.Core
using NuGet.
App.config:
<configuration>
...
<appSettings>
<!--The license context used-->
<add key="EPPlus:ExcelPackage.LicenseContext" value="NonCommercial" />
</appSettings>
<connectionStrings>
<add name="DB" connectionString="data source=.\DB\DB.db;version=3;"/>
</connectionStrings>
</configuration>
Add the following code to the above code.
<Button x:Name="filter" Content="filter 28-02-2022 and 25-03-2022" Click="filter_Click" />
public void Filter()
{
SQLiteConnection.CreateFile("MyDatabase.sqlite");
SQLiteConnection m_dbConnection = new SQLiteConnection("Data Source=MyDatabase.sqlite");
m_dbConnection.Open();
string sql = "create table MyData (Party varchar(20), BillNo varchar(20), BillDate varchar(20) ,Amount varchar(20) ,DueDate varchar(20),PaidOn varchar(20)) ";
SQLiteCommand command = new SQLiteCommand(sql, m_dbConnection);
command.ExecuteNonQuery();
DataTable dt = new DataTable();
FileInfo existingFile = new FileInfo(xlFile);
ExcelPackage package = new ExcelPackage(existingFile);
dt = ExcelPackageToDataTable(package);
SQLiteDataAdapter sqliteAdapter = new SQLiteDataAdapter("SELECT * FROM MyData", m_dbConnection);
SQLiteCommandBuilder cmdBuilder = new SQLiteCommandBuilder(sqliteAdapter);
sqliteAdapter.Update(dt);
SQLiteCommand sqlCom = new SQLiteCommand("select * from MyData where ( (substr(DueDate,1,2) between '01' and '25' ) and (substr(DueDate,4,2)='03') and (substr(DueDate,7) = '2022') ) ", m_dbConnection);
SQLiteDataAdapter sda = new SQLiteDataAdapter(sqlCom);
DataSet ds = new DataSet();
sda.Fill(ds);
if (ds.Tables[0].Rows.Count > 0)
{
dg.ItemsSource = ds.Tables[0].DefaultView;
}
m_dbConnection.Close();
}
private void filter_Click(object sender, RoutedEventArgs e)
{
Filter();
}
The result:
Excel:
DataGrid :
Filter:
If the response is helpful, please click "Accept Answer" and upvote it.
Note: Please follow the steps in our documentation to enable e-mail notifications if you want to receive the related email notification for this thread.