2014-08-30 24 views
1

我想讀取Excel表格中的3列並將它們導入到mySQL數據庫中。我對C#非常新,需要儘可能詳細的幫助。我使用塊中的MySQL_DB_Management是一個朋友的類,它基本上用來創建我的連接字符串。我到目前爲止的代碼如下:需要讀取excel表C#並導入到mySQL只有3列

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Windows.Forms; 
using Excel = Microsoft.Office.Interop.Excel; 
using MySQL_DB_Management; 
using System.Data.SqlClient; 
using System.Data.OleDb; 

namespace Class_Code_Discrepancy 
{ 
    public partial class CC_Disc_Fixer : Form 
    { 
    MySqlDB mysql; 
    SqlConnection sql; 

    public CC_Disc_Fixer() 
    { 
     InitializeComponent(); 
     //create connection strings 
     sql = new SqlConnection(@"server=1.1.1.1;" + @"Trusted_Connection=false;" + @"uid=RO_agent;" + 
           @"password=mypass;" + @"database=Depot;"); 
     mysql = new MySqlDB("1.1.1.1", "platform", "root", "password"); 
    } 

private void Upload_Click(object sender, EventArgs e) 
    {   
     string excelconn = @"Provider=Microsoft.Ace.OLEDB.12.0;" + 
           @"Data Source=c:\Notebook Classcode Master 20121024.xlsx;" + 
           @"Extended Properties=Excel 12.0;HDR=NO;FirstRowHasNames=NO"; 
     OleDbConnection xlconn = new OleDbConnection(excelconn); 

     //DataSet xldataset = new DataSet(); 
     //OleDbDataAdapter xladaptor = new OleDbDataAdapter(); 
     xlconn.Open(); 
     OleDbCommand sel = new OleDbCommand(); 
     sel.Connection = xlconn; 
     DataTable dtsheet = xlconn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null); 
    } 

任何幫助,我需要做的下一個將不勝感激。

回答

1

嘗試查看ExcelDataReader庫,使用該庫,可以將Excel文件讀取到DataSet中,就像在其頁面上顯示的一樣。

FileStream stream = File.Open(filePath, FileMode.Open, FileAccess.Read); 

//1. Reading from a binary Excel file ('97-2003 format; *.xls) 
IExcelDataReader excelReader = ExcelReaderFactory.CreateBinaryReader(stream); 
//... 
//2. Reading from a OpenXml Excel file (2007 format; *.xlsx) 
IExcelDataReader excelReader = ExcelReaderFactory.CreateOpenXmlReader(stream); 
//... 
//3. DataSet - The result of each spreadsheet will be created in the result.Tables 
DataSet result = excelReader.AsDataSet(); 
//... 
//4. DataSet - Create column names from first row 
excelReader.IsFirstRowAsColumnNames = true; 
DataSet result = excelReader.AsDataSet(); 

然後你就可以用foreach循環遍歷它

foreach (DataTable dt in result.Tables) 
{ 
    foreach (DataRow dr in dt.Rows) 
    { 
     foreach (DataColumn dc in dt.Columns) 
      { 
       // do something 
      } 
    } 
} 

如果你想進入電影只有前三欄,你可以不喜歡它

result.Tables[0].Rows[0][0]; 
result.Tables[0].Rows[0][1]; 
result.Tables[0].Rows[0][2]; 
+0

我試着用這無濟於事,我無法越過這個異常:在mscorlib.dll中發生未處理的類型'System.IO.FileNotFoundException'異常。其他信息:找不到文件blah blah.xlsx。該文件絕對存在,但由於某種原因它不會找到它。我做了一些研究,但沒有發現修復它。有任何想法嗎? – Raaigar 2014-08-31 17:34:14

+0

你的字符串'filePath' - 字符串的路徑如何?是否像'string filePath = @「C:\ Users \ BlahBlah \ Desktop \ ExcelFile.xlsx」;'? – nmck 2014-08-31 22:29:28

+0

確定修復了文件路徑字符串,現在它工作。現在在你的例子中有#4的問題。 VS保持錯誤說我不能再次使用變量「result」,因爲它已經被定義了。我甚至需要做#4來導入到mysql? – Raaigar 2014-09-01 20:42:58