barman.ar16
جمعه 18 فروردین 1396, 16:30 عصر
سلام به اساتید بزرگوار
من بوسیله این تکه کد اطلاعات رو از فایل اکسل میخونم و میریزم درون یک دیتا گرید ویو تا بعد اون رو درون بانک ذخیره کنم :
ابتدا :
public DataTable ReadExcel(string fileName, string fileExt)
{
string conn = string.Empty;
DataTable dtexcel = new DataTable();
if (fileExt.CompareTo(".xls") == 0)
conn = @"provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + fileName +
";Extended Properties='Excel 8.0;HRD=NO;IMEX=1';"; //for below excel 2007
else
conn = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + fileName +
";Extended Properties='Excel 12.0;HDR=NO;IMEX=1';"; //for above excel 2007
using (OleDbConnection con = new OleDbConnection(conn))
{
try
{
OleDbDataAdapter oleAdpt = new OleDbDataAdapter("select * from [Sheet1$]", con);
//here we read data from sheet1
oleAdpt.Fill(dtexcel); //fill excel data into dataTable
}
catch
{
}
}
return dtexcel;
}
و سپس در روایداد یک باتن :
string filePath = string.Empty;
string fileExt = string.Empty;
OpenFileDialog file = new OpenFileDialog(); //open dialog to choose file
if (file.ShowDialog() == System.Windows.Forms.DialogResult.OK) //if there is a file choosen by the user
{
filePath = file.FileName; //get the path of the file
fileExt = Path.GetExtension(filePath); //get the file extension
if (fileExt.CompareTo(".xls") == 0 || fileExt.CompareTo(".xlsx") == 0)
{
try
{
DataTable dtExcel = new DataTable();
dtExcel = ReadExcel(filePath, fileExt); //read excel file
dataGridView1.Visible = true;
dataGridView1.DataSource = dtExcel;
dataGridView1.Columns[0].HeaderText = "نام";
dataGridView1.Columns[1].HeaderText = "نام خانوادگی";
dataGridView1.Columns[2].HeaderText = "نام پدر";
dataGridView1.Columns[3].HeaderText = "کد ملی";
dataGridView1.Columns[4].HeaderText = "شماره پرسنلی";
dataGridView1.Columns[5].HeaderText = "خالص دریافتی";
dataGridView1.Columns[6].HeaderText = "کد کنترل";
}
catch (Exception ex)
{
FrmMessageBox frmm = new FrmMessageBox();
frmm.lblmatn.Text = "انتخاب کنید Xlsx یا Xls لطفا فایل مناسب با پسوند";
frmm.btnyes.Visible = false;
frmm.btnno.Visible = false;
frmm.btnok.Visible = true;
frmm.ShowDialog();
}
}
میخوام وقتی فایل اکسل خونده شد اگر در ستون کد ملی داده تکراری وجود داشت عملیات نمایش صورت نگیره و خطا داده بشه
یک مطلب تکمیلی رو هم اینجا بگم
علت اینکه نمیخوام ستون کد ملی رو در دیتابیس از نوع کلید اصلی و یونیک انتخاب کنم اینه که چون من 3 سری داده دارم اگر به ستون های جدولم دقت کنید آخرین ستون کد کنترل داره که برای هر کدوم از سری ها شماره های 1 و 2 و 3 رو انتخاب کردم در واقع من میخوام کاری کنم که کد ملی توی هر سری فقط تکراری نباشه و اگر یک کد ملی در سری 2 یا 3 تکرار شد اشکالی وجود نداشته باشه
بنابراین مجبورم توی دیتا گرید ویو این قضیه رو چک کنم بعد درون بانکم ذخیره شند
متشکرم
من بوسیله این تکه کد اطلاعات رو از فایل اکسل میخونم و میریزم درون یک دیتا گرید ویو تا بعد اون رو درون بانک ذخیره کنم :
ابتدا :
public DataTable ReadExcel(string fileName, string fileExt)
{
string conn = string.Empty;
DataTable dtexcel = new DataTable();
if (fileExt.CompareTo(".xls") == 0)
conn = @"provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + fileName +
";Extended Properties='Excel 8.0;HRD=NO;IMEX=1';"; //for below excel 2007
else
conn = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + fileName +
";Extended Properties='Excel 12.0;HDR=NO;IMEX=1';"; //for above excel 2007
using (OleDbConnection con = new OleDbConnection(conn))
{
try
{
OleDbDataAdapter oleAdpt = new OleDbDataAdapter("select * from [Sheet1$]", con);
//here we read data from sheet1
oleAdpt.Fill(dtexcel); //fill excel data into dataTable
}
catch
{
}
}
return dtexcel;
}
و سپس در روایداد یک باتن :
string filePath = string.Empty;
string fileExt = string.Empty;
OpenFileDialog file = new OpenFileDialog(); //open dialog to choose file
if (file.ShowDialog() == System.Windows.Forms.DialogResult.OK) //if there is a file choosen by the user
{
filePath = file.FileName; //get the path of the file
fileExt = Path.GetExtension(filePath); //get the file extension
if (fileExt.CompareTo(".xls") == 0 || fileExt.CompareTo(".xlsx") == 0)
{
try
{
DataTable dtExcel = new DataTable();
dtExcel = ReadExcel(filePath, fileExt); //read excel file
dataGridView1.Visible = true;
dataGridView1.DataSource = dtExcel;
dataGridView1.Columns[0].HeaderText = "نام";
dataGridView1.Columns[1].HeaderText = "نام خانوادگی";
dataGridView1.Columns[2].HeaderText = "نام پدر";
dataGridView1.Columns[3].HeaderText = "کد ملی";
dataGridView1.Columns[4].HeaderText = "شماره پرسنلی";
dataGridView1.Columns[5].HeaderText = "خالص دریافتی";
dataGridView1.Columns[6].HeaderText = "کد کنترل";
}
catch (Exception ex)
{
FrmMessageBox frmm = new FrmMessageBox();
frmm.lblmatn.Text = "انتخاب کنید Xlsx یا Xls لطفا فایل مناسب با پسوند";
frmm.btnyes.Visible = false;
frmm.btnno.Visible = false;
frmm.btnok.Visible = true;
frmm.ShowDialog();
}
}
میخوام وقتی فایل اکسل خونده شد اگر در ستون کد ملی داده تکراری وجود داشت عملیات نمایش صورت نگیره و خطا داده بشه
یک مطلب تکمیلی رو هم اینجا بگم
علت اینکه نمیخوام ستون کد ملی رو در دیتابیس از نوع کلید اصلی و یونیک انتخاب کنم اینه که چون من 3 سری داده دارم اگر به ستون های جدولم دقت کنید آخرین ستون کد کنترل داره که برای هر کدوم از سری ها شماره های 1 و 2 و 3 رو انتخاب کردم در واقع من میخوام کاری کنم که کد ملی توی هر سری فقط تکراری نباشه و اگر یک کد ملی در سری 2 یا 3 تکرار شد اشکالی وجود نداشته باشه
بنابراین مجبورم توی دیتا گرید ویو این قضیه رو چک کنم بعد درون بانکم ذخیره شند
متشکرم