c# - 如何解决此“无法将类型'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.MyDocuments);
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();
}
}
}
}
解决方案
importExcelToDataGridViewWorkbook.ActiveSheet
是一个object
类型,而不是Excel.Worksheet
类型,所以你应该手动转换它:
importExcelToDataGridViewWorksheet = importExcelToDataGridViewWorkbook.ActiveSheet as Microsoft.Office.Interop.Excel.Worksheet;
或者
importExcelToDataGridViewWorksheet = (Microsoft.Office.Interop.Excel.Worksheet)importExcelToDataGridViewWorkbook.ActiveSheet;
推荐阅读
- fortran - 如何在 ivf 中手动调用 mkl-fftw3?
- python - 有没有办法以 int 格式逐字符读取文件
- reporting-services - 独立安装 SSRS 2019
- html - NodeJS:如何编写最简单的 HTML+CSS+img 服务器?
- javascript - 如何使用 fs.writeFile 格式化 csv 文件
- woocommerce - 防止订单混合某些类别的产品
- python - Python:以科学计数法打印数字列表
- python - 加载可投票后使用 df.loc(panda,已安装最新版本)的问题
- android - 在作为参数的函数中操作布局的问题;view.editText 不能为空
- javascript - 如何使用 E-308 作为算法将 SRM 转换为 L*a*b*?