2009-01-23 39 views
20

我想打开一个Excel文件并用数据填充它的单元格?到目前为止,我已经完成了以下编码。C#:如何访问Excel单元格?

目前我在这个阶段用下面的代码,但我仍然会收到错误:

Microsoft.Office.Interop.Excel.ApplicationClass appExcel = 
       new Microsoft.Office.Interop.Excel.ApplicationClass(); 
try 
{ 
    // is there already such a file ? 
    if (System.IO.File.Exists("C:\\csharp\\errorreport1.xls")) 
    { 
     // then go and load this into excel 
     Microsoft.Office.Interop.Excel.Workbooks.Open(
      "C:\\csharp\\errorreport1.xls", true, false, 
      Missing.Value, Missing.Value, Missing.Value, Missing.Value, 
      Missing.Value, Missing.Value, Missing.Value, Missing.Value, 
      Missing.Value, Missing.Value, Missing.Value, Missing.Value); 
    } 
    else 
    { 
     // if not go and create a workbook: 
     newWorkbook = appExcel.Workbooks.Add(XlWBATemplate.xlWBATWorksheet); 
     Microsoft.Office.Interop.Excel._Worksheet excelWorksheet = 
      (Microsoft.Office.Interop.Excel._Worksheet) 
       newWorkBook.Worksheets.get_Item(1); 
    } 
i++; 
j = 1; 

j++; 
objsheet.Cells(i, j).Value = "Tabelle: " + rs.Fields["Table_Name"]; 
j++; 
objsheet.Cells(i, j).Value = "kombinationsschluessel:FALL " 
           + rs3.Fields[1].Value; 
j++; 
objsheet.Cells(i, j).Value = "Null Value: "; 
j++; 
objsheet.Cells(i, j).Value = "Updated with 888"; 

这些都是前2个错误,我越来越:

Error 1 An object reference is required for the nonstatic field, method, or 
     property 'Microsoft.Office.Interop.Excel.Workbooks.Open(string, object, 
     object, object, object, object, object, object, object, object, object, 
     object, object, object, object)' 

Error 2 The name 'newWorkbook' does not exist in the current context 

回答

20

如果你想为了使Excel自动化,您可能不应该打开Word文档并使用Word自动化;)

检查了一下,它应该是g等你开始,

http://www.codeproject.com/KB/office/package.aspx

这里是一些代码。它来自我的一些代码,并且删除了很多东西,所以它不会执行任何操作,并且可能无法正确编译或工作,但它应该能够让您继续。它面向阅读,但应指向正确的方向。

Microsoft.Office.Interop.Excel.Worksheet sheet = newWorkbook.ActiveSheet; 

if (sheet != null) 
{ 
    Microsoft.Office.Interop.Excel.Range range = sheet.UsedRange; 
    if (range != null) 
    { 
     int nRows = usedRange.Rows.Count; 
     int nCols = usedRange.Columns.Count; 
     foreach (Microsoft.Office.Interop.Excel.Range row in usedRange.Rows) 
     { 
      string value = row.Cells[0].FormattedValue as string; 
     } 
    } 
} 

你也可以做

Microsoft.Office.Interop.Excel.Sheets sheets = newWorkbook.ExcelSheets; 

if (sheets != null) 
{ 
    foreach (Microsoft.Office.Interop.Excel.Worksheet sheet in sheets) 
    { 
      // Do Stuff 
    } 
} 

如果你需要插入的行/列

// Inserts a new row at the beginning of the sheet 
Microsoft.Office.Interop.Excel.Range a1 = sheet.get_Range("A1", Type.Missing); 
a1.EntireRow.Insert(Microsoft.Office.Interop.Excel.XlInsertShiftDirection.xlShiftDown, Type.Missing); 
+0

对不起错误的发布贴,我已经改正了 – tksy 2009-01-23 14:10:21

3

我认为,你必须申报相关的表!

尝试是这样的

objsheet(1).Cells[i,j].Value; 
+0

你在哪里找到这个?而两个点是一个不好的做法.. – nawfal 2012-06-21 23:17:17

1

我是如何工作的自动化办公/ Excel中:

  1. 录制宏,这将产生一个VBA模板
  2. 编辑VBA模板,以便它会匹配我的需求
  3. 转换为VB.Net(男人的一小步)
  4. 让它在VB.Net,更多为方便使用C#
+1

这个问题,他希望它在C#中,但是,对VB.Net来说是没问题的。 – 2010-01-31 22:37:10

1

尝试这样做:

Excel.Application oXL; 
Excel._Workbook oWB; 
Excel._Worksheet oSheet; 
Excel.Range oRng; 

oXL = new Excel.Application(); 
oXL.Visible = true; 
oWB = (Excel._Workbook)(oXL.Workbooks.Add(Missing.Value)); 

oSheet = (Excel._Worksheet)oWB.Worksheets; 
oSheet.Activate(); 

oSheet.Cells[3, 9] = "Some Text" 
+0

这是不正确的,OP是问如何打开工作簿,而不是如何创建一个新的...(您正在使用.add方法)。 – 2010-01-31 22:43:06

1

简单。

打开工作簿。 使用xlapp.workbooks.Open()

您先前已经声明和instanitated xlapp,因为如此.. Excel.Application xlapp = new Excel.Applicaton();

参数是正确的。

接下来,请确保在使用单元格属性或范围对象将值指定给单元格时使用属性值2。

1

这对我

 Excel.Application oXL = null; 
     Excel._Workbook oWB = null; 
     Excel._Worksheet oSheet = null; 

     try 
     { 
      oXL = new Excel.Application(); 
      string path = @"C:\Templates\NCRepTemplate.xlt"; 
      oWB = oXL.Workbooks.Open(path, 0, false, 5, "", "", 
       false, Excel.XlPlatform.xlWindows, "", true, false, 
       0, true, false, false); 

      oSheet = (Excel._Worksheet)oWB.ActiveSheet; 
      oSheet.Cells[2, 2] = "Text"; 
1

您可以使用下面的代码工作正常;它对我来说很好:

newWorkbook = appExcel.Workbooks.Add(); 
相关问题