首页 > 解决方案 > 如何解决此“无法将类型'object'隐式转换为'Microsoft.Office.Interop.Excel.Worksheet'?

问题描述

我正在打开一个 CSV 文件进行阅读。我得到了这个错误:

无法将类型“对象”隐式转换为“Microsoft.Office.Interop.Excel.Worksheet”。

出于某种原因,这个项目有这个错误,而我必须打开 CSV 文件的其他项目从来没有这个错误。

我做错什么了?

我的代码:

    public partial class Form1 : Form
    {
        //Define Excel data
        _Application importExcelToDataGridViewApp;
        _Workbook importExcelToDataGridViewWorkbook;
        _Worksheet importExcelToDataGridViewWorksheet;
        string position;
        Microsoft.Office.Interop.Excel.Range importExcelToDataGridViewRange;

        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            OpenFileDialog op = new OpenFileDialog();
            op.Title = "Browse for file";
            op.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDoc‌​uments);
            op.Filter = "Excel CSV File(*.csv)|*.csv|";
            op.FilterIndex = 1;


            if (op.ShowDialog() == DialogResult.OK)
            {
                try
                {
                    importExcelToDataGridViewApp = new Microsoft.Office.Interop.Excel.Application();

                    importExcelToDataGridViewWorkbook = importExcelToDataGridViewApp.Workbooks.Open(op.FileName);
                    importExcelToDataGridViewWorksheet = importExcelToDataGridViewWorkbook.ActiveSheet; <-- ERROR HERE
                    importExcelToDataGridViewRange = importExcelToDataGridViewWorksheet.UsedRange;

                    List<string> positionList = new List<string>();

                    for (int i = 2; i <= importExcelToDataGridViewRange.Rows.Count; i++)
                    {
                        string username= importExcelToDataGridViewWorksheet.Cells[i, 1].Value; 
                        int salary= (int)importExcelToDataGridViewWorksheet.Cells[i, 2].Value;
                        dataGridView1.Rows.Add(username, salary);

                    }
                }
                catch (Exception err)
                {
                    ErrorWindow eWindow = new ErrorWindow();
                    eWindow.label4.Text = err.GetType().ToString();
                    eWindow.errorDetails.Text = err.Message;
                    eWindow.ShowDialog();
                }
            }

            
        }
    }

标签: c#csv

解决方案


importExcelToDataGridViewWorkbook.ActiveSheet是一个object类型,而不是Excel.Worksheet类型,所以你应该手动转换它:

importExcelToDataGridViewWorksheet = importExcelToDataGridViewWorkbook.ActiveSheet as Microsoft.Office.Interop.Excel.Worksheet;

或者

importExcelToDataGridViewWorksheet = (Microsoft.Office.Interop.Excel.Worksheet)importExcelToDataGridViewWorkbook.ActiveSheet;

在此处输入图像描述


推荐阅读