在excel中写入单元格的函数

我从这里得到了一些代码: http : //forum.codecall.net/topic/71788-reading-excel-files-in-c/这工作正常,很容易理解我。 它只能阅读excel单元格,我也想写一些。 所以我想在我的主要这样做:excel_setValue(“C10”,“520”);

这是我试过的function:

private static Microsoft.Office.Interop.Excel.ApplicationClass appExcel; private static Workbook newWorkbook = null; private static _Worksheet objsheet = null; static string excel_setValue(string cellname, string value) { if (objsheet.get_Range(cellname).get_Value().ToString() == string.Empty) // Here is error { Console.WriteLine("watch out u trying to overwrite files"); } else { objsheet.get_Range(cellname).set_Value(value); } } 

它告诉我:NullReferenceExpection未处理 – 对象引用未设置为对象的实例。

另一个错误,当我只把这个:

 static void excel_setValue(string cellname, string value) { //if (objsheet.get_Range(cellname).get_Value().ToString() == string.Empty) //{ // Console.WriteLine("kijk uit je probeerd cellen te overschrijven"); //} //else //{ objsheet.get_Range(cellname).set_Value(value); //} } 

错误:COMException未处理:从HRESULT:0x800A03ECexception

我怎样称呼我的excel_setValue:

 excel_init("C:\\"); excel_setValue("B10","520"); 

excel_init:

 static void excel_init(String path) { appExcel = new Microsoft.Office.Interop.Excel.ApplicationClass(); if (System.IO.File.Exists(path)) { // then go and load this into excel newWorkbook = appExcel.Workbooks.Open(path, true, true); objsheet = (_Worksheet)appExcel.ActiveWorkbook.ActiveSheet; } else { Console.WriteLine("Unable to open file!"); System.Runtime.InteropServices.Marshal.ReleaseComObject(appExcel); appExcel = null; } } 

如您在excel_init方法中链接的代码所示,您需要初始化objsheet 。 它是在这个链接上完成的:

 objsheet = (_Worksheet)appExcel.ActiveWorkbook.ActiveSheet; 

对于你的问题编辑:

 How I call my excel_setValue: excel_setValue("B10","520"); excel_init("C:\\"); 

那是你正在使用的执行顺序吗? 你必须首先调用excel_init并在excel_setValue使用它之前初始化excel_setValue

您可能会错误地使用get_Range ,请参阅此问题以获取更多示例。

您也正在使用Range.set_Value不正确,请尝试使用objsheet.get_Range(cellname).set_Value(Excel.XlRangeValueDataType.xlRangeValueDefault,value);