C# 从Excel API C获取单元格值#
我有一个为Excel制作的功能区,以及一个cs文件,作为外接程序的核心。 单击CustomRibbon上的按钮时,我希望解析其中一行的数据值C# 从Excel API C获取单元格值#,c#,api,excel,vba,C#,Api,Excel,Vba,我有一个为Excel制作的功能区,以及一个cs文件,作为外接程序的核心。 单击CustomRibbon上的按钮时,我希望解析其中一行的数据值 private void button1_Click(object sender, RibbonControlEventArgs e) { Console.WriteLine(Globals.ThisAddIn.Application.Cells[0, 0]); } 但这给了我一个错误 来自HRESULT的异常:
private void button1_Click(object sender, RibbonControlEventArgs e)
{
Console.WriteLine(Globals.ThisAddIn.Application.Cells[0, 0]);
}
但这给了我一个错误
来自HRESULT的异常:0x800A03EC
我想做的就是能够解析工作表中单元格中的数据,并将数据写入工作表。即使在启动我的程序时,当我这样做时:
sheet.Cells[0,0]= "hello";
它也会给我一个错误。尝试使用单元格的值2字段
sheet.Cells[1,1].Value2 = "hello";
也在这一行
Console.WriteLine(Globals.ThisAddIn.Application.Cells[1, 1]);
“单元格”字段是工作表的属性。您不能在Excel应用程序上使用它;您需要先创建或打开工作簿,然后创建或使用现有的工作表
编辑:忘记Excel范围是1索引而不是0索引。尝试使用单元格的值2字段
sheet.Cells[1,1].Value2 = "hello";
也在这一行
Console.WriteLine(Globals.ThisAddIn.Application.Cells[1, 1]);
“单元格”字段是工作表的属性。您不能在Excel应用程序上使用它;您需要先创建或打开工作簿,然后创建或使用现有的工作表
编辑:忘记Excel范围是1索引而不是0索引。用于引用Excel工作表中单元格的“最低”适用索引为[1,1],对应于a列单元格1。我看到您试图引用0,0,这超出了表的范围
尽管C#通常使用基于零的表索引,但Excel Interop的程序员似乎遵循了不同的方法。或者他们希望保持约定一致,因为Excel表中的第一行以1开头,而不是0。我不是Excel爱好者,但这是我最好的猜测
编辑:根据Siddharth的请求,下面是一个将DataGridView控件的内容复制到Excel工作表的示例。请注意,这只是演示了基本功能,并不是一个完整的示例或必要的最佳实践:
#using Microsoft.Office.Interop;
Excel.Application xlApp;
Excel.Workbook xlWorkBook;
Excel.Worksheet xlWorkSheet;
xlApp = new Excel.ApplicationClass();
xlWorkBook = xlApp.Workbooks.Add(1);
xlWorkSheet = Excel.Worksheet xlWorkBook.ActiveSheet;
// Notice the index starting at [1,1] (row,column)
for (int i=1; i<DataGridView.Columns.Count+1; i++)
xlWorkSheet.Cells[1, i] = DataGridView.Columns[i - 1].HeaderText;
for each(DataGridViewRow row in DataGridView.Rows)
{
for each (DataGridViewColumn column in DataGridView.Columns)
{
xlWorkSheet.Cells[row.Index+2,column.Index+1] = DataGridView.Rows[row.Index].Cells[column.Index].Value;
}
}
#使用Microsoft.Office.Interop;
Excel.applicationxlapp;
Excel.工作簿;
Excel工作表;
xlApp=new Excel.ApplicationClass();
xlWorkBook=xlApp.Workbooks.Add(1);
xlWorkSheet=Excel.Worksheet xlWorkBook.ActiveSheet;
//注意索引从[1,1](行,列)开始
对于(int i=1;iExcel工作表中引用单元格的“最低”适用索引是[1,1],它对应于a列的单元格1。我发现您试图引用的0,0超出了表的范围
虽然C#通常使用基于零的表索引,但Excel Interop的程序员似乎遵循了不同的方法。这或者说他们希望保持约定一致,因为Excel表的第一行以1开头,而不是0。我不是Excel爱好者,但这是我的最佳猜测
编辑:根据Siddharth的要求,下面是一个将DataGridView控件的内容复制到Excel工作表的示例。请注意,这只是演示了基本功能,不是一个完整的示例,也不一定是最佳实践:
#using Microsoft.Office.Interop;
Excel.Application xlApp;
Excel.Workbook xlWorkBook;
Excel.Worksheet xlWorkSheet;
xlApp = new Excel.ApplicationClass();
xlWorkBook = xlApp.Workbooks.Add(1);
xlWorkSheet = Excel.Worksheet xlWorkBook.ActiveSheet;
// Notice the index starting at [1,1] (row,column)
for (int i=1; i<DataGridView.Columns.Count+1; i++)
xlWorkSheet.Cells[1, i] = DataGridView.Columns[i - 1].HeaderText;
for each(DataGridViewRow row in DataGridView.Rows)
{
for each (DataGridViewColumn column in DataGridView.Columns)
{
xlWorkSheet.Cells[row.Index+2,column.Index+1] = DataGridView.Rows[row.Index].Cells[column.Index].Value;
}
}
#使用Microsoft.Office.Interop;
Excel.applicationxlapp;
Excel.工作簿;
Excel工作表;
xlApp=new Excel.ApplicationClass();
xlWorkBook=xlApp.Workbooks.Add(1);
xlWorkSheet=Excel.Worksheet xlWorkBook.ActiveSheet;
//注意索引从[1,1](行,列)开始
对于没有工作表限定符的(int i=1;iCells[r,c]
单元格,默认为活动工作表。Cells[r,c]
没有工作表限定符的单元格,默认为活动工作表。+1解释得很好。也许您还可以包括一个代码示例:)+1解释得很好。也许您还可以包括一个代码示例:)