我如何从Excel工作簿打开多个工作表?

我正在编写一个程序来填充Excel工作簿中的数据,但目前我只能访问第一个工作表。

有了这个testing,我不能得到sheet2和Sheet3接收任何数据?

请有人指出我错过了什么?

Excel.Application xlApp; Excel.Workbook xlWorkBook; Excel.Worksheet[] xlWorkSheet = new Excel.Worksheet[3]; object misValue = System.Reflection.Missing.Value; private void Form1_Load(object sender, EventArgs e) { if (File.Exists("C:/Users/Shaun/Documents/Template.xls")) { //Load Templete SpreadSheet xlApp = new Excel.ApplicationClass(); xlWorkBook = xlApp.Workbooks.Open("Template.xls", 0, true, 5, "", "", true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0); xlWorkSheet[0] = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1); xlWorkSheet[1] = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1); xlWorkSheet[2] = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1); } else { MessageBox.Show("Could not find file Template.xls"); } } private void button1_Click(object sender, EventArgs e) { xlWorkSheet[0].Cells[1, 1] = "Sheet1"; xlWorkSheet[1].Cells[1, 1] = "Sheet2"; xlWorkSheet[2].Cells[1, 1] = "Sheet3"; String Saveas; Saveas = Microsoft.VisualBasic.Interaction.InputBox("Save As", "Save As", ""); xlWorkBook.SaveAs(Saveas + ".xls", Excel.XlFileFormat.xlWorkbookNormal, misValue, misValue, misValue, misValue, Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue); xlWorkBook.Close(true, misValue, misValue); xlApp.Quit(); for (int p = 0; p < 3; p++) { releaseObject(xlWorkSheet[p]); } releaseObject(xlWorkBook); releaseObject(xlApp); MessageBox.Show("File Saved!"); } private void releaseObject(object obj) { try { System.Runtime.InteropServices.Marshal.ReleaseComObject(obj); obj = null; } catch (Exception ex) { obj = null; MessageBox.Show("Unable to release the Object " + ex.ToString()); } finally { GC.Collect(); } } 

编辑

即使有了这个变化,仍然没有发生,我不能拿起任何表,但第一个。

  xlWorkSheet[0] = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1); xlWorkSheet[1] = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(2); xlWorkSheet[2] = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(3); 

也许错误在这里:

 xlWorkSheet[0] = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1); xlWorkSheet[1] = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1); xlWorkSheet[2] = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1); 

应该是get_Item(2)get_Item(3)

希望下面的帮助,因为这是我过去做的。

 private Excel.Application _xlApp = new Excel.Application(); private Excel.Workbooks _xlWorkBooks; private Excel.Workbook _xlWorkBook; private Excel.Worksheet _xlWorkSheet; _xlWorkBooks = _xlApp.Workbooks; _xlWorkBook = _xlWorkBooks.Add(1); //get a worksheet _xlWorkSheet = (Excel.Worksheet)_xlWorkBook.Sheets[_xlWorkBook.Worksheets.Count]; //get a range rng = _xlWorkSheet.get_Range(_xlWorkSheet.Cells[8, 5], _xlWorkSheet.Cells[9, 5]); //eg bold the range rng.Cells.Font.Bold = true; //merge the range cells rng.MergeCells = true; //set cell data _xlWorkSheet.Cells[8, 3] = "Text Here";