我有问题,我需要在Excel上写一些信息。
我可以在两个工作表之一("工作表"(中正确写入,并且与另一个工作表(" 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();
我在您的代码中注意到在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";
这是我的" AccessSpecification excelsheet"方法的样子:
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;
}