从Excel中将Excel单元格设置为Textbox.text,参考错误C#
public Excel.Application xlapp = new Excel.Application(); public Excel.Range range; public Excel.Workbook workbook; public Excel.Worksheet worksheet; public string file; private void button1_Click(object sender, EventArgs e) { file = Path.Combine(Application.StartupPath, "Quote Sheet Template.xls"); xlapp.Workbooks.Open(file); workbook = (Excel.Workbook)xlapp.ActiveWorkbook; xlapp.Visible = true; range.get_Range("D6"); range.Value2 = NameTake.Text; workbook.SaveAs(Path.Combine(Application.StartupPath, NameTake.Text + " Quote.xls")); }
所以这里的交易…有人把信息(在这种情况下,他们的名字)放入一个文本框。 然后他们点击button1将他们的名字导出到一个excel模板中,然后以自己的名字保存。
问题是什么时候到达的
range.get_Range("D6"); /*and*/ range.Value2 = NameTake.Text;
它抛出和exception说
你调用的对象是空的
当我尝试将其设置为实例(即)
range = new Excel.Range();
它会抛出一个错误说
无法创build抽象类或接口“Microsoft.Office.Interop.Excel.Range”的实例
可能它真的很明显 你能帮我吗:)
更新代码:
private void button1_Click(object sender, EventArgs e) { file = Path.Combine(Application.StartupPath, "Quote Sheet Template.xls"); xlapp.Workbooks.Open(file); workbook = (Excel.Workbook)xlapp.ActiveWorkbook; xlapp.Visible = true; range = worksheet.Cells["D6"] as Excel.Range; if (range != null) { //range.Value2 = NameTake.Text; workbook.SaveAs(Path.Combine(Application.StartupPath, NameTake.Text + " Quote.xls")); } }
获取exception(对于范围):未将对象引用设置为对象的实例
您从不在代码中分配variablesrange
,因此它是空的,错误是合适的。
在VSTO中,我从当前工作表中获取目标范围,其范围如下:
var range = theSheet.Cells[ 1, 4 ] as Excel.Range; // [ row, column ]
在工作时validation你所拥有的不是空的; 它只是很好的编程。 比如检查上面的代码中的工作簿是否在使用前不为空。 比如在我上面的例子中,我会跟着这个
if (range != null) { ... do valid operation ... }
你不需要创build范围。 尝试range = worksheet.get_Range("D6","D6");
而不是range = new Excel.Range();
尝试replacerange.get_Range("D6");
range = worksheet.get_Range("D6");
这是因为你正在尝试访问range
但它从来没有被任何实际的范围初始化。
如果你只是想设置D6
你应该简单地使用worksheet.Range("D6").Value2 = NameTake.Text;
你甚至不需要一个Excel.Range
variables。