2012-05-22 25 views
5

हम MSSQL डेटाबेस के लिए एक्सेल फ़ाइल से डेटा आयात करने के लिए एक आवेदन को चलाने के लिए सर्वर में माइक्रोसॉफ्ट ऑफिस स्थापित करने के लिए की जरूरत है?हम Asp.net में एक्सेल आयात के लिए सर्वर में माइक्रोसॉफ्ट ऑफिस स्थापित करने की आवश्यकता है?

किसी भी सुझाव या विचार?

कोड मैं

public partial class _Default : System.Web.UI.Page 
{ 
private String strConnection = "Data Source=MYCBJ017550027;Initial Catalog=MySamplesDB;Integrated Security=True"; 
protected void Page_Load(object sender, EventArgs e) 
{ 

} 
protected void btnSend_Click(object sender, EventArgs e) 
{ 
string path = fileuploadExcel.PostedFile.FileName; 
string excelConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path + ";Extended Properties=Excel 12.0;Persist Security Info=False"; 
OleDbConnection excelConnection =new OleDbConnection(excelConnectionString); 
OleDbCommand cmd = new OleDbCommand("Select [ID],[Name],[Designation] from [Sheet1$]",excelConnection); 
excelConnection.Open(); 
OleDbDataReader dReader; 
dReader = cmd.ExecuteReader(); 
SqlBulkCopy sqlBulk = new SqlBulkCopy(strConnection); 
sqlBulk.DestinationTableName = "Excel_table"; 
sqlBulk.WriteToServer(dReader); 
excelConnection.Close(); 
} 
} 
+0

क्या यह ऐसा कुछ है जिसे आप स्वचालित करने की कोशिश कर रहे हैं, या बस एक बार करते हैं? यदि आप इसे एक बार कर रहे हैं, तो Excel फ़ाइल को CSV के रूप में सहेजें, फिर इसे बीसीपी का उपयोग करके SQL पर आयात करें। – vcsjones

उत्तर

8

इस्तेमाल किया आप केवल xls फ़ाइलों तो Microsoft.Jet.OLEDB.4.0 कि आपके .net ढांचे के साथ इनबिल्ट है का उपयोग पढ़ रहे हैं।

आप xlsx फ़ाइलों को पढ़ रहे हैं तो Microsoft.ACE.OLEDB.12.0 का उपयोग करें। इसके लिए ड्राइवर माइक्रोसॉफ्ट साइट से स्वतंत्र रूप से डाउनलोड किया जा सकता है। इंटरऑपिंग के लिए आपको माइक्रोसॉफ्ट ऑफिसर को स्थापित करने की आवश्यकता नहीं है।

उपयोग कनेक्शन स्ट्रिंग निम्नलिखित

string excelConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0; 
Data Source=" + path + ";Extended Properties=Excel 12.0;HDR=YES"; 

Download drivers from here

Refer this for running example

2

रूप @Romil कहा कि तुम उस के लिए नेट ढांचे का उपयोग कर सकते हैं:

string ConnectionString = string.Format(@"Provider=Microsoft.Jet.OLEDB.4.0; Data Source={0}; Extended Properties=""Excel 8.0;HDR=Yes"";", fileName); 

using (OleDbConnection conn = new OleDbConnection(ConnectionString)) 
{ 
    conn.Open(); 
    DataTable schemaTable = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" }); 

    foreach (DataRow schemaRow in schemaTable.Rows) 
    { 
      string sheet = schemaRow["TABLE_NAME"].ToString(); 
      using (OleDbCommand cmd = new OleDbCommand("SELECT * FROM [" + sheet + "]", conn)) 
      { 
       cmd.CommandType = CommandType.Text; 
       DataTable outputTable = new DataTable(sheet); 
       output.Tables.Add(outputTable); 
       new OleDbDataAdapter(cmd).Fill(outputTable); 
      } 
    } 
       conn.Close(); 
} 
0

जेट के साथ समस्या , क्या आपको अभी भी डेटा प्रो स्थापित करना है इसके लिए ider (हालांकि यह भी मुफ़्त है) या इसके लिए काम करने के लिए कार्यालय स्थापित है। यदि आपको बस एक्सेल फ़ाइल को पढ़ने की ज़रूरत है तो वहां पूरी तरह से प्रबंधित libs हैं जो कुछ भी स्थापित करने की आवश्यकता के बिना ट्रैक ठीक करेंगे।

मैं यहाँ कुछ सूचीबद्ध किया है। मैंने अच्छे परिणामों के साथ एक्सेल्रेडर का भरपूर उपयोग किया है।

http://excelreader.codeplex.com/
http://epplus.codeplex.com/

एक्सेल पाठक बातों का प्रलेखन पक्ष पर प्रकाश होने लगते हैं। तो यहां इसका उपयोग करने का एक उदाहरण है

IExcelDataReader reader = null; 
try 
{ 
    using (FileStream stream = new FileStream(ofd.FileName, FileMode.Open)) 
    { 
     string ext = System.IO.Path.GetExtension(ofd.FileName).Replace(".", "").ToUpper(); 
     if (ext == "XLS") 
      reader = ExcelReaderFactory.CreateBinaryReader(stream); 
     else 
      reader = ExcelReaderFactory.CreateOpenXmlReader(stream); 

     reader.IsFirstRowAsColumnNames = true; 
     using (DataSet ds = reader.AsDataSet()) 
     { 
      foreach (DataRow dr in ds.Tables[0].Rows) 
      { 
       ImportData toAdd = new ImportData() 
        { 
         Format = dr[0].ToString(), 
        }; 

       Database.Datastore.InsertObject(toAdd); 
      } 
     } 
    } 
} 
संबंधित मुद्दे