2017-05-05 83 views
0

我有一个问题,我需要写一些关于excel的信息。写在两个不同的工作表上,不工作excel 2007

我可以在两个工作表(“工作表”)和另一个工作表(“worksheet2”)之一上正确写入,它不写任何东西,我不知道为什么。所有的过程是相同的,但它不写任何东西。

我把下面我的代码,希望它有助于:

var excelApp = new Microsoft.Office.Interop.Excel.Application(); 
     excelApp.Workbooks.Open(destFile); 
     Microsoft.Office.Interop.Excel.Worksheet worksheet = excelApp.Worksheets.get_Item(2); 
     Microsoft.Office.Interop.Excel.Worksheet worksheet2 = excelApp.Worksheets.get_Item(1); 
     excelApp.Visible = false; 

     var data = new object[numRows, numColumns]; 
     int contadorMedidas = 0; 
     //int primeraVez = 0; 
     for (int i = 1; i <= numRows; i++) // assuming the data starts at 1,1 
     { 
      for (int j = 1; j <= numColumns; j++) 
      { 
       if (contadorMedidas < contents.Count) 
       { 
        worksheet.Cells[i, j] = contents[contadorMedidas]; 
        contadorMedidas++; 
       } 
      } 
     } 

     //Escribir en la hoja de pautas el nombre y los valores de codigo y plano 
     //Codigo 
     worksheet2.Cells[2, 5] = codigo; 
     //Plano 
     worksheet2.Cells[3, 4] = plano; 
     //Trabajador 
     worksheet2.Cells[6, 2] = cbxWorker.Text; 
     //Si es BR, hay que añadir un código extra: 
     if (br) 
     { 
      for (int i = 0; i < numRows; i++) 
      { 
       worksheet2.Cells[8 + i, 6] = "7525SI-0203-FA"; 
      } 
     } 

     excelApp.Quit(); 
+0

什么是您的Excel看起来打开时像像这样,它是否有适量的工作表?也许你首先需要添加一个工作表? – Luuklag

+0

我制作了一个有两页和一页的excel的副本。一个叫做“Pauta”,另一个叫做“Medidas”,最后一个叫“Filtros”。 – Imrik

回答

0

我在你的代码注意的时候它会在worksheet2写,你有一个条件。也许这种情况是错误的,这就是为什么它不写入工作表2。

if (br) 
{ 
    //write to worksheet2 
} 

否则,我用下面的代码,并能够在两个工作表,在同一个Excel工作簿写。 希望这有助于。

//I created a class called ExcelFunctions which has the 
//methods OpenExcelFile and AccessSpecificExcelSheet 
var excelFunction = new ExcelFunctions();  

//Open the Excel file 
excelWorkbook = excelFunction.OpenExcelFile(excelApp, excelFilePath); 

//Get the sheets 
Sheets excelSheets = excelWorkbook.Worksheets; 

//Access the first sheet 
string sheetName = "Sheet1"; 
Worksheet activeWorksheet = excelFunction.AccessSpecificExcelSheet(excelSheets, sheetName); 
       activeWorksheet.Cells[2, 1] = "Write to sheet1"; 

//Access the second sheet 
string sheetName2 = "Sheet2"; 
activeWorksheet = excelFunction.AccessSpecificExcelSheet(excelSheets, sheetName2); 
activeWorksheet.Cells[4, 1] = "Write to sheet2"; 

这就是我的 “AccessSpecificationExcelSheet” 的方法是这样的:

public Worksheet AccessSpecificExcelSheet(Sheets allExcelSheets, string sheetName) 
{ 
    Worksheet selectedWorksheet = allExcelSheets.get_Item(sheetName); 
    selectedWorksheet.Select(); 

    //Select cell A1 when opening 
    Range topExcel = selectedWorksheet.get_Range("A1", Type.Missing); 
    topExcel.Select(); 

    return selectedWorksheet; 
} 

这就是我的 “OpenExcelFile” 的方法是这样的:

public Workbook OpenExcelFile(Application excelApp, string excelFilePath) 
{ 
    Workbook excelWorkbook = excelApp.Workbooks.Open(excelFilePath); 
    return excelWorkbook; 
} 
+0

我无法使用OpenExcelFile,为什么? – Imrik

+0

我可以通过“Microsoft.Office.Interop.Excel.Workbook excelWorkbook = excelApp.Workbooks.Open(destFile);”但它不起作用,它给出了错误:“Excepciónde HRESULT:0x8002000B(DISP_E_BADINDEX))” – Imrik

+0

@Imrik,对不起,OpenExcelFile方法是我定义的方法。我编辑了上面的内容来显示我的OpenExcelFile方法的功能。 – hackslash47

相关问题