2015-04-07 63 views
-2

我有一个包含数据的excel表,其中第一行是列名,第二行是所有行。我想要将数据插入数据库中的表中。除了从Excel表格中获取数据之外,我已经完成了将数据插入数据库的所有工作。我已经尝试了下面的代码,但它以连续的方式给出数据,没有对行和列之间的歧视。但是,我要像(列名,rowdata)如何从c#中的Excel文件中获取行列格式的数据.net

这是数据的Excel数据文件

firstname lastname salary age 
sasi kiran 88000 32 
ravi kiran 92000 23 
jafer sharif 34000 45 
kiran bedi  45000 34 

下面的代码我曾尝试:

Excel.Application xlApp; 
    Excel.Workbook xlWorkBook; 
    Excel.Worksheet xlWorkSheet; 
    Excel.Range range; 
    string str; 
    int rCnt = 0; 
    int cCnt = 0; 
    xlApp = new Excel.Application(); 
    xlWorkBook = xlApp.Workbooks.Open(@"D:\Copy of Macro with Radio_Test.xlsx", 0, true, 5, "", "", true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0); 
    xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1); 
    range = xlWorkSheet.UsedRange; 

    for (rCnt = 1; rCnt <= range.Rows.Count; rCnt++) 
    { 
     for (cCnt = 1; cCnt <= range.Columns.Count; cCnt++) 
     { 
      str = (Convert.ToString((range.Cells[rCnt, cCnt] as Excel.Range).Value2)); 
      Console.WriteLine(str); 
      Console.ReadLine(); 
     } 
    } 

但在这里,我应该像

console.writeline(firstname, sasi); 
console.writeline(lastname, kiran); 

等等所有值 如何修改代码以实现结果

+0

我在做和思考一路寻找解决方案,这将是伟大的,如果任何机构可以提供解决方案 – peter

回答

1

如果我理解正确你的问题,此代码应提供预期输出:

int rowCount = range.Rows.Count; 
int colCount = range.Columns.Count; 
string[] headers = new string[colCount+1]; 
for (cCnt = 1; cCnt <= colCount; cCnt++) 
    { 
     headers[cCnt] = (Convert.ToString((range.Cells[1, cCnt] as Excel.Range).Value2)); 
    } 

for (rCnt = 2; rCnt <= rowCount; rCnt++) 
{ 
    for (cCnt = 1; cCnt <= colCount; cCnt++) 
    {     
     str = (Convert.ToString((range.Cells[rCnt, cCnt] as Excel.Range).Value2)); 
     Console.Write(heasders[cCnt]); 
     Console.Write(" "); 
     Console.WriteLine(str); 
    } 
    Console.WriteLine("----------------"); 
} 
Console.ReadLine(); 
+0

从异常来自hresult异常0x800a03ec投掷头[cCnt] =(Convert.ToString( (range.Cells [rCnt,cCnt] as Excel.Range).Value2));行 – peter

+0

@peter,我更新了我的答案(行索引应为1为标题,而不是0) – ASh

+0

您是伟大的,它的工作,非常感谢 – peter

1

另一种方式来做到这一点可能是使用Excel互操作,以Excel文件转换为.csv文件。在link之后是转换过程的一个示例,在加载.csv之后,您可以将数据加载到一组映射表格形式的POCO对象。希望它有帮助

相关问题