C# 将文本从我的 winform 文本框导入到已打开 Excel 工作簿中的选定范围
C# Importing text from my winform textbox to selected range in already openend Excel workbook
正在尝试将我的 winform 文本框中的值写入 excel 中的一个或多个选定单元格。
场景:
使用 windows 资源管理器打开一个 excel 文件(所以这里没有编码)
Select 此 excel 文件中的一个单元格 sheet(我知道选择多个单元格可能是个问题,但我想稍后解决)
- 打开我的 winform 应用程序(我们称它为 LookApp 以供参考)
- 在应用程序中做一些事情,使文本框包含一个字符串(我们将字符串称为 ProductCode 以供参考)
- 按 LookApp 上的按钮
- 字符串 Productcode 被插入到选定的单元格中
- Excel 获得对 LookApp 的关注
显然,我可以处理第 1 步到第 5 步。但是我在网上搜索了很远,找不到关于编码第 6 步的代码片段。
一旦我知道第 6 步,可能很容易编写第 7 步的代码...
我是 MSOffice 编码的新手,或者 winform/database 以外的人。
我在我的项目中引用了 MS Interop,但不知道如何使用它:(
真心希望你能帮上忙!
您可以在 class(表单等...)中声明一个 Excel 范围字段
Range currentCellRange;
然后注册到Excel的工作表SelectionChange事件
exWs.SelectionChange += exWs_SelectionChange;
在 exWs_SelectionChange 方法中,将当前单元格范围分配给您的 currentCellRange 字段
void exWs_SelectionChange(Range target)
{
currentCellRange = target;
}
当您按下按钮时,在 currentCellRange 位置的行和列处使用 WorkSheet 来设置单元格的值。
private void button1_Click(object sender, EventArgs e)
{
exWs.Cells[currentCellRange.Row, currentCellRange.Column].Value = textBox1.Text;
}
此外,当您完成 Excel 后,记得在 Application 实例上调用 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");
}
}
正在尝试将我的 winform 文本框中的值写入 excel 中的一个或多个选定单元格。
场景:
使用 windows 资源管理器打开一个 excel 文件(所以这里没有编码)
Select 此 excel 文件中的一个单元格 sheet(我知道选择多个单元格可能是个问题,但我想稍后解决)
- 打开我的 winform 应用程序(我们称它为 LookApp 以供参考)
- 在应用程序中做一些事情,使文本框包含一个字符串(我们将字符串称为 ProductCode 以供参考)
- 按 LookApp 上的按钮
- 字符串 Productcode 被插入到选定的单元格中
- Excel 获得对 LookApp 的关注
显然,我可以处理第 1 步到第 5 步。但是我在网上搜索了很远,找不到关于编码第 6 步的代码片段。 一旦我知道第 6 步,可能很容易编写第 7 步的代码...
我是 MSOffice 编码的新手,或者 winform/database 以外的人。 我在我的项目中引用了 MS Interop,但不知道如何使用它:(
真心希望你能帮上忙!
您可以在 class(表单等...)中声明一个 Excel 范围字段
Range currentCellRange;
然后注册到Excel的工作表SelectionChange事件
exWs.SelectionChange += exWs_SelectionChange;
在 exWs_SelectionChange 方法中,将当前单元格范围分配给您的 currentCellRange 字段
void exWs_SelectionChange(Range target)
{
currentCellRange = target;
}
当您按下按钮时,在 currentCellRange 位置的行和列处使用 WorkSheet 来设置单元格的值。
private void button1_Click(object sender, EventArgs e)
{
exWs.Cells[currentCellRange.Row, currentCellRange.Column].Value = textBox1.Text;
}
此外,当您完成 Excel 后,记得在 Application 实例上调用 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");
}
}