2012-05-22 8 views
5

エクセルファイルからmssqlデータベースにデータをインポートするアプリケーションを実行するには、サーバーにMicrosoft officeをインストールする必要がありますか?Asp.netでのExcelインポートのためにMicrosoft officeをサーバーにインストールする必要はありますか?

ご意見やご提案はありますか?

だけXLSファイルを読んでいるなら、私は、あなたの.NET Frameworkのに作り付けされMicrosoft.Jet.OLEDB.4.0を使用

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

これは自動化しようとしているのですか、1回だけしますか?この作業を1回だけ行う場合は、ExcelファイルをCSVとして保存し、BCPを使用してSQLにインポートします。 – vcsjones

答えて

8

を使用するコード。

xlsxファイルを読む場合は、Microsoft.ACE.OLEDB.12.0を使用してください。このドライバは、Microsoftのサイトから自由にダウンロードできます。 interopingのためにMicrosoftの役員をインストールする必要はありません。

使用@Romilあなたはそのための.NETフレームワークを使用することができます言ったように、接続文字列

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

次ジェットと

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

問題、あなたはまだデータprovをインストールする必要がありますか?それのために(これも無料ですが)またはそれを動作させるためにオフィスをインストールしてください。単にExcelファイルを読む必要がある場合は、そこに十分な管理されたlibsがたくさんあり、何もインストールする必要がなくトラックをうまくやることができます。

ここにいくつか挙げました。私はexcelreaderたくさんの良い結果を使用しています。

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

Excelのリーダー物事のドキュメント側の光のように見えます。ここでは、使用方法の例を示します。

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); 
      } 
     } 
    } 
} 
関連する問題