2017-05-05 87 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

相關問題