Reading data from excel 2010 using Microsoft.Office.Interop.Excel

前端 未结 5 1720
后悔当初
后悔当初 2020-12-17 14:43

I am not able to read data in Excel. Here is the code I am using:

using Excel = Microsoft.Office.Interop.Excel;

Excel         


        
相关标签:
5条回答
  • 2020-12-17 15:14

    Try this:

    MessageBox.Show(xlRange.Cells[i][j].Value);
    
    0 讨论(0)
  • 2020-12-17 15:15

    Haven´t tested it, but I think it should read

    MessageBox.Show(xlRange.Cells[i,j].ToString());
    

    or alternatively

    MessageBox.Show(xlRange.Cells[i,j].Value.ToString());
    
    0 讨论(0)
  • 2020-12-17 15:29

    use the following function to get data as DATATABLE object for N'th sheet :

    public DataTable GetWorkSheet(int workSheetID)
        {
            string pathOfExcelFile = fileFullName;
            DataTable dt = new DataTable();
    
            try
            {
                excel.Application excelApp = new excel.Application();
    
                excelApp.DisplayAlerts = false; //Don't want Excel to display error messageboxes
    
                excel.Workbook workbook = excelApp.Workbooks.Open(pathOfExcelFile, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing); //This opens the file
    
                excel.Worksheet sheet = (excel.Worksheet)workbook.Sheets.get_Item(workSheetID); //Get the first sheet in the file
    
                int lastRow = sheet.Cells.SpecialCells(excel.XlCellType.xlCellTypeLastCell, Type.Missing).Row;
                int lastColumn = sheet.Cells.SpecialCells(excel.XlCellType.xlCellTypeLastCell, Type.Missing).Column;
    
                excel.Range oRange = sheet.get_Range(sheet.Cells[1, 1], sheet.Cells[lastRow, lastColumn]);//("A1",lastColumnIndex + lastRow.ToString());
    
                oRange.EntireColumn.AutoFit();
    
    
                for (int i = 0; i < oRange.Columns.Count; i++)
                {
                    dt.Columns.Add("a" + i.ToString());
                }
    
                object[,] cellValues = (object[,])oRange.Value2;
                object[] values = new object[lastColumn];
    
                for (int i = 1; i <= lastRow; i++)
                {
    
                    for (int j = 0; j < dt.Columns.Count; j++)
                    {
                        values[j] = cellValues[i, j + 1];
                    }
                    dt.Rows.Add(values);
                }
    
                workbook.Close(false, Type.Missing, Type.Missing);
                excelApp.Quit();
            }
            catch (Exception ex)
            {
                System.Windows.Forms.MessageBox.Show(ex.Message, "Error", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Error);
    
            }
            return dt;
    
        }
    
    0 讨论(0)
  • 2020-12-17 15:31

    Try this code:

    MessageBox.Show(((Excel.Range)xlRange.Cells[i,j]).Value2.ToString());
    

    This code works sucessfully for me.

    0 讨论(0)
  • 2020-12-17 15:33

    I found the solution for above, here is the code:

    string temp = (string)(xlRange.Cells[i, j] as Excel.Range).Value2;
    MessageBox.Show(temp);
    
    0 讨论(0)
提交回复
热议问题