1. LinqToExcel 這個.dll檔需要另外在NuGet套件安裝,目前只提供快速查詢Excel資料的功能,沒有將資料寫入Excel的功能,所以用Microsoft.Office.Interop.Excel來實現寫入的功能.
2. Microsoft.Office.Interop.Excel
using LinqToExcel.Attributes;
class Guest
{
//將Excel欄位名稱與程式變數連結
//the name of column in excel file, 引號內的名稱是Excel檔案的欄位名稱
[ExcelColumn("時間戳記")]
public string Time { get; set; }
[ExcelColumn("姓名 : ")]
public string Name { get; set; }
[ExcelColumn("職稱 : ")]
public string Jobtitle { get; set; }
[ExcelColumn("學校 : ")]
public string School { get; set; }
[ExcelColumn("科系 : ")]
public string Depart { get; set; }
[ExcelColumn("手機 :")]
public string Phone { get; set; }
[ExcelColumn("E-mail : ")]
public string Email { get; set; }
[ExcelColumn("餐點 : ")]
public string Meal { get; set; }
[ExcelColumn("卡號")]
public string CardNum { get; set; }
}
//讀取Excel資料 string pathToExcelFile = @"G:\e_register\e_register\SIGRegistration.xlsx"; //s string sheetName = "sheet1"; //Excel檔案內的sheet名稱 var excelFile = new ExcelQueryFactory(pathToExcelFile); var artistAlbums = from a in excelFile.Worksheet(sheetName) where a.CardNum == tb_cardnum.Text select a; foreach (var a in artistAlbums) { tb_name.Text = a.Name; //tb_name為TextBox元件名稱,以下一樣 tb_cellphone.Text = a.Phone; tb_depart.Text = a.Depart; tb_school.Text = a.School; tb_jobtitle.Text = a.Jobtitle; tb_email.Text = a.Email; }
//將資料寫入Excel
string ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source='G:\e_register\e_register\SIGRegistration.xlsx';Extended Properties=Excel 12.0";
using (OleDbConnection oledbConn = new OleDbConnection(ConnectionString))
{
oledbConn.Open();
string sql = "Update [sheet1$] set 時間戳記 = @p1 where 卡號=@p2";
using (OleDbCommand cmd = new OleDbCommand(sql, oledbConn))
{
cmd.Parameters.AddWithValue("@p1", DateTime.Now.ToString());
cmd.Parameters.AddWithValue("@p2", tb_cardnum.Text);
try
{
cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
}
附件有結合RFID僅供參考程式碼
沒有留言:
張貼留言