PDA

View Full Version : خواندن از اکسل و ریختن در table SQL



federrer
دوشنبه 21 آذر 1390, 17:41 عصر
با سلام
خیلی گشتم اما کد کاملی برای خواندن از xls و ریختن در table SQL پیدا نکردم.

قسمت خواندن از اکسل رو نوشتم ولی در بخش ریختن در T1 که جدول SQL هست گیر کردم



string connstr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\\Book1.xls;Extended Properties='Excel 8.0;HDR=NO'";

OleDbConnection conn = new OleDbConnection(connstr);


OleDbCommand cmd = new OleDbCommand("SELECT * FROM [Sheet1$]", conn);
OleDbDataAdapter da = new OleDbDataAdapter(cmd);


DataSet ds = new DataSet();

da.Fill(ds);

mehdin69
سه شنبه 22 آذر 1390, 02:53 صبح
سلام دوست من
اميدوارم تا فردا مشكلت حل بشه
من الان سيستم در دسترسم نيست اگه حل نشد با پيام خصوصي يادآوري كن برات بنويسمش

mehdin69
سه شنبه 22 آذر 1390, 20:38 عصر
سلام اینم کدی که الان بنده استفاده می کنم و مشکلی نداره
خدمت شما


void UploadedFile(FileType fT)
{
string tableName;
if (fT == FileType.Payment)
tableName = "Payment";
else
tableName = "Export";

DataTable dTable = new DataTable();

//step 1
// Load Excel data into DataTable
string connectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;
Data Source=" + fileName + ";Extended Properties='Excel 12.0;HDR=YES;'";
string strSQL = "SELECT * FROM [" + tableName + "$]";

OleDbConnection xlConnection = new OleDbConnection(connectionString);
// This code will open excel file.
xlConnection.Open();

OleDbCommand dbCommand = new OleDbCommand(strSQL, xlConnection);
OleDbDataAdapter dataAdapter = new OleDbDataAdapter(dbCommand);
// create data table
try
{
//fill table with Excel data
dataAdapter.Fill(dTable);
}
catch
{
SetError("در باز کردن فایل و یا خواندن اکسل با مشکل مواجه است");
}

//step 2
//connect to server
SqlConnection sqlcon = new SqlConnection(conStr);
try { sqlcon.Open(); }
catch
{
SetError("اتصال به پايگاه داده با اشكال مواجه است");
return;
}

SqlBulkCopy bulkCopy = new SqlBulkCopy(sqlcon);
//Destination Table must match columns in Excel sheet
bulkCopy.DestinationTableName = tableName.ToString();
try
{
// Write from the source to the destination.
bulkCopy.WriteToServer(dTable);
bulkCopy.Close();
SetSucc("داده های شما با موفقیت ذخیره گردید");
}
catch
{
SetError("ذخیره داده ها با مشکل مواجه است");
}
sqlcon.Close();

dTable.Dispose();
dataAdapter.Dispose();
dbCommand.Dispose();
xlConnection.Close();
xlConnection.Dispose();

UpdateView();
}

void UpdateView()
{
gridExport.AutoGenerateColumns = false;
gridPayment.AutoGenerateColumns = false;
DataSet ds = new DataSet();
SqlConnection sqlCon = new SqlConnection(conStr);
sqlCon.Open();
SqlDataAdapter da = new SqlDataAdapter("SELECT * FROM Payment", sqlCon);
da.Fill(ds, "payment");
da = new SqlDataAdapter("SELECT * FROM Export", sqlCon);
da.Fill(ds, "Export");
gridPayment.DataSource = ds.Tables["Payment"];
gridExport.DataSource = ds.Tables["Export"];
sqlCon.Close();
}

mehdin69
سه شنبه 22 آذر 1390, 20:40 عصر
برای یادآوری میگم که کلاس SqlBulkCopy هم توی اینجا هست using System.Data.SqlClient

pazooki_s
یک شنبه 09 بهمن 1390, 11:02 صبح
سلام اگر اکسل پسورد داشته باشه باید چکارکرد؟