2014-01-18 160 views
1

请帮我用我的脚本。我已经做了选择从Excel文件,但现在我不知道我怎么能增加价值到我的名单。我不仅从一个文件中获取来自更多文件的数据。如何从excel文件中读取

这是我真正的脚本:

基地按钮读启动事件。

private void next_Click(object sender, EventArgs e) 
{ 
    for (int i = 0; i < UniqueValue.traceToFile.Count; i++) 
    { 
     ReadFromExcel read = new ReadFromExcel(); 
     read.ReadData(UniqueValue.traceToFile[i]); 
    } 
} 

下一步经过是这样:

class ReadFromExcel : Config 
{ 
    public void ReadData(string fullpath) 
    { 
     DataSet da = new DataSet(); 
     OleDbDataAdapter adapter = new OleDbDataAdapter(); 
     string cell = "C7"; 
     string name = "List1"; 

     string FileName = fullpath; 
     string _ConnectionString = string.Empty; 
     string _Extension = Path.GetExtension(FileName); 
     // Checking for the extentions, if XLS connect using Jet OleDB 
     if (_Extension.Equals(".xls", StringComparison.CurrentCultureIgnoreCase)) 
     { 
      _ConnectionString = string.Format("Provider=Microsoft.Jet.OLEDB.4.0; Data Source={0};Extended Properties=Excel 8.0", FileName); 
     } 
     // Use ACE OleDb 
     else if (_Extension.Equals(".xlsx", StringComparison.CurrentCultureIgnoreCase)) 
     { 
      _ConnectionString = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=Excel 8.0", FileName); 
     } 

     OleDbConnection con = new OleDbConnection(_ConnectionString); 
     string strCmd = "SELECT * FROM [" + name + "$" + cell + "]"; 
     OleDbCommand cmd = new OleDbCommand(strCmd, con); 

     try 
     { 
      con.Open(); 
      da.Clear(); 
      adapter.SelectCommand = cmd; 
      adapter.Fill(da); 
     } 

     catch (Exception ex) 
     { 
      MessageBox.Show(ex.ToString()); 
     } 

     finally 
     { 
      con.Close(); 
     } 
    } 
} 

现在我需要这个结果被写入到我的清单。我从每个文件只读取一个单元格。

的结果列表

public static List<int> money = new List<int>(); 

我真的为所有的答案可以帮助我的感谢。

回答

0

我想下面的代码会帮助你。 在这个例子中,dt,dt2和dt3将考虑从你的函数ReadData函数返回excel中的数据。

public static List<int> money = new List<int>(); 

protected void Page_Load(object sender, EventArgs e) 
{ 
    DataTable dt = new DataTable(); 
    dt.Columns.Add("ID", typeof(Int32)); 
    dt.Columns.Add("Name"); 
    dt.Rows.Add(); 
    dt.Rows[dt.Rows.Count - 1]["ID"] = 1; 
    dt.Rows[dt.Rows.Count - 1]["Name"] = "Test1"; 



    DataTable dt2 = new DataTable(); 
    dt2.Columns.Add("ID", typeof(Int32)); 
    dt2.Columns.Add("Name"); 
    dt2.Rows.Add(); 
    dt2.Rows[dt2.Rows.Count - 1]["ID"] = 2; 
    dt2.Rows[dt2.Rows.Count - 1]["Name"] = "Test2"; 


    DataTable dt3 = new DataTable(); 
    dt3.Columns.Add("ID", typeof(Int32)); 
    dt3.Columns.Add("Name"); 
    dt3.Rows.Add(); 
    dt3.Rows[dt3.Rows.Count - 1]["ID"] = 3; 
    dt3.Rows[dt3.Rows.Count - 1]["Name"] = "Test2"; 


    money = (from row in dt.AsEnumerable() select Convert.ToInt32(row["ID"])).ToList(); 
    money.AddRange((from row in dt2.AsEnumerable() select Convert.ToInt32(row["ID"])).ToList()); 
    money.AddRange((from row in dt3.AsEnumerable() select Convert.ToInt32(row["ID"])).ToList()); 
} 
+0

我会尝试。如果它会为我工作,所以我写信给你。 –

+0

好的没有问题.. –

+0

你的想法是工作,但它不完全是我正在寻找的东西。例如,我有9个excel文件。每个文件都包含任何包含数据的表。我将只读取每个文件中的一个单元格。 Cell在所有文件中都将保持相同的“C7”。而且我需要从C7添加到所有文件的钱列表中。并且请你可以保留我对xls或xlsx文件的防范。 –

-1
Excel.Application excel; 
Excel.Workbook wb; 
Excel.Worksheet sh; 

DataTable dt=new DataTable(); 

excel = new Excel.Application(); 
excel.Visible = true; 
wb = excel.Workbooks.Open("File Path"); 
sh = wb.Sheets.Add(); 
sh.Name = "Data"; 
count = 2; 
sh.Cells[count, "A"].Value2 = "Column Name 1"; 
sh.Cells[count, "B"].Value2 = "Column Name 2"; 
sh.Cells[count, "C"].Value2 = "Column Name 3"; 
sh.Cells[count, "D"].Value2 = "Column Name 4"; 
sh.Cells[count, "E"].Value2 = "Column Name 5"; 
sh.Range["A" + count + "", "E" + count + ""].Font.Size = 12; 
sh.Range["A" + count + "", "E" + count + ""].Borders.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Black); 
sh.Range["I2"].WrapText = true; 

try 
{ 
    con.Open(); 
    da.Clear(); 
    adapter.SelectCommand = cmd; 
    adapter.Fill(dt); 
    foreach (DataRow row in dt.Rows) 
    { 
    sh.Cells[count, "A"].Value2 = row["Column Name"].ToString(); 
    sh.Cells[count, "B"].Value2 = row["Column Name"].ToString(); 
    sh.Cells[count, "C"].Value2 = row["Column Name"].ToString(); 
    sh.Cells[count, "D"].Value2 = row["Column Name"].ToString(); 
    sh.Cells[count, "E"].Value2 = row["Column Name"].ToString(); 
    } 
    wb.SaveAs("File Path" + "File Nmae" + ".xls"); 
    excel.Workbooks.Close(); 
    excel.Quit(); 

} 
catch (Exception ex) 
{ 
    MessageBox.Show(ex.ToString()); 
} 

finally 
{ 
    con.Close(); 
} 
+0

-1:你不解释你的代码,只有当Excel实际安装在机器上时,你的代码才能正常工作,然后在使用ASP.NET时不起作用。 –