यदि आप इसे सीधे ADO.NET में करना चाहते हैं, और आपकी एक्सेल फाइलें इतनी बड़ी नहीं हैं कि वे एक ही बार में मेमोरी में फिट हो सकें, तो आप इन दो विधियों का उपयोग कर सकते हैं:
// store Excel sheet (or any file for that matter) into a SQL Server table
public void StoreExcelToDatabase(string excelFileName)
{
// if file doesn't exist --> terminate (you might want to show a message box or something)
if (!File.Exists(excelFileName))
{
return;
}
// get all the bytes of the file into memory
byte[] excelContents = File.ReadAllBytes(excelFileName);
// define SQL statement to use
string insertStmt = "INSERT INTO dbo.YourTable(FileName, BinaryContent) VALUES(@FileName, @BinaryContent)";
// set up connection and command to do INSERT
using (SqlConnection connection = new SqlConnection("your-connection-string-here"))
using (SqlCommand cmdInsert = new SqlCommand(insertStmt, connection))
{
cmdInsert.Parameters.Add("@FileName", SqlDbType.VarChar, 500).Value = excelFileName;
cmdInsert.Parameters.Add("@BinaryContent", SqlDbType.VarBinary, int.MaxValue).Value = excelContents;
// open connection, execute SQL statement, close connection again
connection.Open();
cmdInsert.ExecuteNonQuery();
connection.Close();
}
}
एक्सेल शीट को वापस पाने और उसे एक फाइल में स्टोर करने के लिए, इस विधि का उपयोग करें:
public void RetrieveExcelFromDatabase(int ID, string excelFileName)
{
byte[] excelContents;
string selectStmt = "SELECT BinaryContent FROM dbo.YourTableHere WHERE ID = @ID";
using (SqlConnection connection = new SqlConnection("your-connection-string-here"))
using (SqlCommand cmdSelect = new SqlCommand(selectStmt, connection))
{
cmdSelect.Parameters.Add("@ID", SqlDbType.Int).Value = ID;
connection.Open();
excelContents = (byte[])cmdSelect.ExecuteScalar();
connection.Close();
}
File.WriteAllBytes(excelFileName, excelContents);
}
बेशक, आप इसे अपनी आवश्यकताओं के अनुसार अनुकूलित कर सकते हैं - आप बहुत सी अन्य चीजें भी कर सकते हैं - इस पर निर्भर करते हुए कि आप वास्तव में क्या करना चाहते हैं (आपके प्रश्न से बहुत स्पष्ट नहीं है)।