mehran63
پنج شنبه 24 مرداد 1392, 17:46 عصر
کد زیر اطلاعات رو به درستی از اکسل به DataTable میریزه و در DataGridView به درستی نشون میده
private void button1_Click(object sender, EventArgs e)
{
OpenFileDialog of = new OpenFileDialog();
of.Filter = "Excel 2007 Files|*.xlsx";
of.Title = "Open Excel 2007 Files";
DialogResult dr = new DialogResult();
dr = of.ShowDialog();
if (dr == DialogResult.Cancel)
return;
string connectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;
Data Source= " + of.FileName + " ;Extended Properties=\"Excel 12.0;HDR=No;\"";
string strSQL = "SELECT * FROM [QueryExportToExcel$]";
OleDbConnection excelConnection = new OleDbConnection(connectionString);
excelConnection.Open();
OleDbCommand dbCommand = new OleDbCommand(strSQL, excelConnection);
OleDbDataAdapter dataAdapter = new OleDbDataAdapter(dbCommand);
DataTable dTable = new DataTable();
dataAdapter.Fill(dTable);
DataGridView1.DataSource = dTable;
int tehran = 0;
int esfahan = 0;
int shiraz = 0;
for (int i = 0; i < dTable.Rows.Count; i++)
{
string s=dTable.Rows[i][0].ToString().Trim();
if (s.Contains ( "تهران"))
{
tehran += Convert.ToInt32(dTable.Rows[i][1]) * 2;
}
if (s.Contains( "اصفهان"))
{
esfahan += Convert.ToInt32(dTable.Rows[i][1]) * 3;
}
if (s.Contains( "شیراز"))
{
shiraz += Convert.ToInt32(dTable.Rows[i][1]) * 5;
}
}
label1.Text ="امتیاز:"+ (tehran + esfahan + shiraz).ToString();
dTable.Dispose();
dataAdapter.Dispose();
dbCommand.Dispose();
excelConnection.Close();
excelConnection.Dispose();
}
}
فايل Excel را ميتوانيد از لينك زير برداريد
فایل اکسل (http://www.uplooder.net/cgi-bin/dl.cgi?key=4279bc04aba19af41b33b6da53e64145)
همانطور که میبینید اطلاعات از یه فایل Excel خوانده شده و در DataTable ریخته میشه و از اونجا برای عملیاتی که نیاز دارم استفاده میکنم
همانطور که در برنامه میبینید به ازای هر شهری که در فایل excel وجود دارد یک If گذاشتم
مشکل ایجاست که اگه یه شهر به این فایل اکسل اضافه بشه اونوقت من باید برنامه رو دوباره تغییر بدم و یه If دیگه هم واسه اون اضافه کنم.
برای رفع این مشکل چه کنم که دوباره برنامه رو تغییر ندم؟
private void button1_Click(object sender, EventArgs e)
{
OpenFileDialog of = new OpenFileDialog();
of.Filter = "Excel 2007 Files|*.xlsx";
of.Title = "Open Excel 2007 Files";
DialogResult dr = new DialogResult();
dr = of.ShowDialog();
if (dr == DialogResult.Cancel)
return;
string connectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;
Data Source= " + of.FileName + " ;Extended Properties=\"Excel 12.0;HDR=No;\"";
string strSQL = "SELECT * FROM [QueryExportToExcel$]";
OleDbConnection excelConnection = new OleDbConnection(connectionString);
excelConnection.Open();
OleDbCommand dbCommand = new OleDbCommand(strSQL, excelConnection);
OleDbDataAdapter dataAdapter = new OleDbDataAdapter(dbCommand);
DataTable dTable = new DataTable();
dataAdapter.Fill(dTable);
DataGridView1.DataSource = dTable;
int tehran = 0;
int esfahan = 0;
int shiraz = 0;
for (int i = 0; i < dTable.Rows.Count; i++)
{
string s=dTable.Rows[i][0].ToString().Trim();
if (s.Contains ( "تهران"))
{
tehran += Convert.ToInt32(dTable.Rows[i][1]) * 2;
}
if (s.Contains( "اصفهان"))
{
esfahan += Convert.ToInt32(dTable.Rows[i][1]) * 3;
}
if (s.Contains( "شیراز"))
{
shiraz += Convert.ToInt32(dTable.Rows[i][1]) * 5;
}
}
label1.Text ="امتیاز:"+ (tehran + esfahan + shiraz).ToString();
dTable.Dispose();
dataAdapter.Dispose();
dbCommand.Dispose();
excelConnection.Close();
excelConnection.Dispose();
}
}
فايل Excel را ميتوانيد از لينك زير برداريد
فایل اکسل (http://www.uplooder.net/cgi-bin/dl.cgi?key=4279bc04aba19af41b33b6da53e64145)
همانطور که میبینید اطلاعات از یه فایل Excel خوانده شده و در DataTable ریخته میشه و از اونجا برای عملیاتی که نیاز دارم استفاده میکنم
همانطور که در برنامه میبینید به ازای هر شهری که در فایل excel وجود دارد یک If گذاشتم
مشکل ایجاست که اگه یه شهر به این فایل اکسل اضافه بشه اونوقت من باید برنامه رو دوباره تغییر بدم و یه If دیگه هم واسه اون اضافه کنم.
برای رفع این مشکل چه کنم که دوباره برنامه رو تغییر ندم؟