Excel Interop – 在所有其他人之后添加一个新的工作表
我正在尝试将新的工作表添加到Excel工作簿,并将其作为C#Excel Interop中的书中的最后一个工作表。
这看起来很简单,我认为下面的代码会做到这一点:
using System.Runtime.InteropServices; using Excel = Microsoft.Office.Interop.Excel; namespace ConsoleApplication2 { class Program { static void Main(string[] args) { var excel = new Excel.Application(); var workbook = excel.Workbooks.Open(@"C:\test\Test.xlsx"); workbook.Sheets.Add(After: workbook.Sheets.Count); workbook.Save(); workbook.Close(); Marshal.ReleaseComObject(excel); } } }
没有这样的运气。 我得到这个有用的错误:
COMException是未处理的 – 从HRESULTexception:0x800A03EC
我在Microsoft.com上find了这个页面 , 这个页面build议我尝试先添加表格,然后移动它,所以我尝试了如下所示。 我知道这个网页的目标是Excel 95,但VBA仍在使用,所以我希望它仍然可以工作:
using System.Runtime.InteropServices; using Excel = Microsoft.Office.Interop.Excel; namespace ConsoleApplication2 { class Program { static void Main(string[] args) { var excel = new Excel.Application(); var workbook = excel.Workbooks.Open(@"C:\test\Test.xlsx"); workbook.Sheets.Add(); workbook.Sheets.Move(After: workbook.Sheets.Count); workbook.Save(); workbook.Close(); Marshal.ReleaseComObject(excel); } } }
我得到了与上面相同的错误。 我也试过将我最后一张工作表的名字作为string传递给Add
和Move
方法中的After
参数,没有快乐!
这就是我所尝试的,所以我的问题是如何将工作表添加到Excel工作簿,并使这个工作簿中的最后一张表使用C#Excel互操作?
谢谢
看看这里的文档http://msdn.microsoft.com/en-us/library/microsoft.office.tools.excel.worksheet.move(v=vs.80).aspx ,它表明'后'对象不是一个数字的位置; 它是表示要放置工作表的工作表的对象。 代码可能应该像(未经testing):
workbook.Sheets.Add(After: workbook.Sheets[workbook.Sheets.Count]);
这应该做的工作:
wSheet.Move(Missing.Value, workbook.Sheets[workbook.Sheets.Count]);
这是对我来说唯一的方法:
xlWorkSheet = (Microsoft.Office.Interop.Excel.Worksheet)xlWorkBook.Worksheets.Add (System.Reflection.Missing.Value, xlWorkBook.Worksheets[xlWorkBook.Worksheets.Count], System.Reflection.Missing.Value, System.Reflection.Missing.Value);
- C#Excel互操作:从HRESULTexception(DISP_E_BADINDEX)
- 我如何从Excel工作簿打开多个工作表?
- Excel互操作workbook.SaveAs()删除原始格式?
- 从HRESULTexception:0x80010105(RPC_E_SERVERFAULT)打开xlsx文件时
- 无法将更改保存到Excel文件(C#/)
- Excel互操作中奇怪的偶发InvalidCastException
- 使用Microsoft.Office.Interop.Excel.dll库; Excel需要在最终用户的机器上吗?
- Excel C#Interop
- C#:MS Excel中checkbox的状态