C#从我的winform文本框中导入文本到已经打开的Excel工作簿中的选定范围

尝试在我的winform文本框中写入一个或多个选定的单元格中的值。

场景:

  1. 打开Excel文件使用Windows资源pipe理器(所以这里没有编码)

  2. 在这个Excel文件的工作表中select一个单元格(我知道select多个单元格可能是一个问题,但我想稍后解决)

  3. 打开我的winform应用程序(让我们称之为LookApp以供参考)
  4. 在应用程序中做东西,使文本框包含一个string(让我们调用stringProductCode来引用)
  5. 按下LookApp上的一个button
  6. stringProductcode插入到所选单元格中
  7. Excel将重点放在LookApp上

很明显,我可以处理第1步到第5步。但是我已经search了networking,并且在编码步骤6的方向上找不到一个片段。可能很容易编码第7步,一旦我知道第6步…

我是MSOffice编码的新手,或者是winform /数据库以外的人。 我已经在我的项目中取消了MS Interop,但不知道如何使用它:(

我真的希望你能帮忙!

你可以在你的类中声明一个Excel范围字段(Form等等)

Range currentCellRange; 

然后注册到Excel的WorkSheet SelectionChange事件

 exWs.SelectionChange += exWs_SelectionChange; 

exWs_SelectionChange方法中,将当前单元格Range指定给currentCellRange字段

 void exWs_SelectionChange(Range target) { currentCellRange = target; } 

当按下button时,使用currentCellRange位置的行和列中的WorkSheet来设置单元格的值。

 private void button1_Click(object sender, EventArgs e) { exWs.Cells[currentCellRange.Row, currentCellRange.Column].Value = textBox1.Text; } 

此外,当您完成Excel时,请记住在应用程序实例上调用Quit()

感谢您的回答,但似乎有点复杂…

偶尔遇到一些代码,把它们混合在一起,直到它运行起来:try-catch远非美丽,但是它可以工作。

  private void cbCopyToExcel1_Click(object sender, EventArgs e) { Excel.Application xlApp = (Excel.Application)System.Runtime.InteropServices.Marshal.GetActiveObject("Excel.Application"); try { Excel.Range xlRange = xlApp.ActiveCell; xlRange.Value = tbProductcode.Text; } catch { MessageBox.Show("Be sure to open an Excel file first"); } }