C#从我的winform文本框中导入文本到已经打开的Excel工作簿中的选定范围
尝试在我的winform文本框中写入一个或多个选定的单元格中的值。
场景:
-
打开Excel文件使用Windows资源pipe理器(所以这里没有编码)
-
在这个Excel文件的工作表中select一个单元格(我知道select多个单元格可能是一个问题,但我想稍后解决)
- 打开我的winform应用程序(让我们称之为LookApp以供参考)
- 在应用程序中做东西,使文本框包含一个string(让我们调用stringProductCode来引用)
- 按下LookApp上的一个button
- stringProductcode插入到所选单元格中
- 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"); } }