0

Excel シートのデータを SQL Server データベースのテーブルにインポートしようとしていますが、エラーが発生しました: Microsoft Office Access データベース エンジンは、オブジェクト 'Sheet1$' を見つけることができませんでした。オブジェクトが存在すること、およびその名前とパス名のつづりが正しいことを確認してください。

以下は私のコードです:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
using System.Data;
using System.Data.OleDb;

public partial class abc2 : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
    }

    protected void btnSend_Click(object sender, EventArgs e)
    {
         String strConnection = "Data Source=DITSEC3;Initial Catalog=test;Integrated Security=True";
         //file upload path
         string path = fileuploadExcel.PostedFile.FileName;
         //Create connection string to Excel work book
         string excelConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path + ";Extended Properties=Excel 12.0;Persist Security Info=False";
         //Create Connection to Excel work book
         OleDbConnection excelConnection =new OleDbConnection(excelConnectionString);
         //Create OleDbCommand to fetch data from Excel
         OleDbCommand cmd = new OleDbCommand("Select [ID],[Name],[Designation] from    [Sheet1$]",excelConnection);
         excelConnection.Open();
         OleDbDataReader dReader;
         dReader = cmd.ExecuteReader();
         SqlBulkCopy sqlBulk = new SqlBulkCopy(strConnection);
         //Give your Destination table name
         sqlBulk.DestinationTableName = "Excel_table";
         sqlBulk.WriteToServer(dReader);
         excelConnection.Close();
    }
}
4

2 に答える 2

0

インポートしようとしている Excel シートの名前は $sheet1 とは異なるため、シート名を取得するには次のコードを使用し、そのシート名を SQL クエリに渡してシートからデータを取得します。

http://social.msdn.microsoft.com/Forums/en/csharpgeneral/thread/05c92891-b839-45c8-80df-eb35e2d68258

于 2012-10-23T09:22:24.360 に答える
0

Excel.Application ExcelObj = new Excel.Application();

Excel.Workbook theWorkbook = null;

string strPath="ここに EXCEL ファイルのパスを記述"; theWorkbook = ExcelObj.Workbooks.Open(strPath、行方不明、行方不明、行方不明、行方不明、行方不明、行方不明、行方不明、行方不明、行方不明、行方不明、行方不明、行方不明);

Excel.Sheets シート = theWorkbook.Worksheets;

Excel.Worksheet worksheet = (Excel.Worksheet)sheets.get_Item(0);//2 番目のワークシート文字列の参照を取得 strWorksheetName = worksheet.Name;//ワークシートの名前を取得します。

選択クエリで strWorksheetName を使用して列データを取得します

于 2012-10-23T09:58:58.370 に答える