最近在做一个订单管理的软件,考虑直接读取excel,然后把数据显示在datagridView上。,然后使用NPOI操作excel。
1 string strCon = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path + ";Extended Properties=‘Excel 12.0;HDR=YES;IMEX=0‘"; 2 //string strCon = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=d:/成绩表2013.xlsx;Extended Properties=‘Excel 12.0;HDR=YES;IMEX=0‘"; 3 OleDbConnection myConn = new OleDbConnection(strCon); 4 string sSelect = "SELECT * FROM [Sheet1$]"; 5 myConn.Open(); 6 OleDbDataAdapter myDataAdapter = new OleDbDataAdapter(sSelect, myConn); 7 DataSet myDataSet = new DataSet(); 8 myDataAdapter.Fill(myDataSet);//, "[Sheet1$]"); 9 myConn.Close(); 10 dataGridView_items.DataSource = myDataSet.Tables[0].DefaultView; //显示到datagridview
该方法效率很慢,显示数据会一行一行刷出来,不可用。 后来选择使用轻量级sqlite3:
在官网下载相关的dll:https://www.sqlite.org/download.html 下载项如下
.Net工具:
加载sqlite
using System.Data.SQLite; using System.Data.SqlClient;
使用:
注意使用try,catch, 否则会显示不出来数据并且不抱错。try catch之后会发现不能加载SQLite.Interop.dll。。 需要把该dll放到项目路径下,然后设置属性 复制到输出值:始终复制:
if (File.Exists(path)) { try { SQLiteConnection conn = new SQLiteConnection("Data Source = " + path); conn.Open(); SQLiteDataAdapter dataAdapter = new SQLiteDataAdapter("Select * from 商品", conn); DataSet ds = new DataSet(); dataAdapter.Fill(ds); dataGridView_items.DataSource = ds.Tables[0]; conn.Close(); } catch (System.Exception ex) { MessageBox.Show(ex.Message); } } else { MessageBox.Show("没有找到相关数据库"); }
时间: 2024-10-06 16:40:22