Далее я пытаюсь сохранить набор объектов в листе Excel. Каждый раз, когда вызывается функция для сохранения значения, она должна выделять следующую ячейку столбца A
для хранения этого объекта.
Однако исключение выдается библиотекой Interop при первом вызове get_Range()
. (сразу после блока захвата)
Кто-нибудь знает, что я делаю не так?
private void AddName(string name, object value)
{
Excel.Worksheet jresheet;
try
{
jresheet = (Excel.Worksheet)_app.ActiveWorkbook.Sheets["jreTemplates"];
}
catch
{
jresheet = (Excel.Worksheet)_app.ActiveWorkbook.Sheets.Add(Type.Missing, Type.Missing,
Type.Missing, Type.Missing);
jresheet.Visible = Microsoft.Office.Interop.Excel.XlSheetVisibility.xlSheetVeryHidden;
jresheet.Name = "jreTemplates";
jresheet.Names.Add("next", "A1", true, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
}
Excel.Range cell = jresheet.get_Range("next", Type.Missing);
cell.Value2 = value;
string address = ((Excel.Name)cell.Name).Name;
_app.ActiveWorkbook.Names.Add(name, address, false,
Type.Missing, Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing, Type.Missing, Type.Missing);
cell = cell.get_Offset(1, 0);
jresheet.Names.Add("next", ((Excel.Name)cell.Name).Name, true, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
}
Поскольку исключение выдается из библиотеки COM, внедренная информация не кажется очень полезной. Однако вот оно:
"Exception from HRESULT: 0x800A03EC"
"\ r \ nСервер стека серверов: \ r \ n \ r \ n \ r \ nСпецификация, переброшенная в [0]: \ r \ n в System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage (IMessage reqMsg, IMessage retMsg) \ r \ n в System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke (MessageData & msgData, тип Int32) \ r \ n в Microsoft.Office.Interop.Excel._Worksheet.get_Range (объект Cell1, объект Cell2) \ r \ n в WorkbookTemplateManager.EditTemplateForm.AddName (имя строки, значение объекта) в C: \ Documents and Settings \ QueBITuser \ Мои документы \ Visual Studio 2008 \ Projects \ JRE.WCF \ WorkbookTemplateManager \ EditTemplateForm.cs: строка 143 \ r \ n в WorkbookTemplateManager.EditTemplateForm.SaveTemplate (Отправитель объекта, аргументы EventArgs) в C: \ Documents and Settings \ QueBITuser \ Мои документы \ Visual Studio 2008 \ Projects \ JRE.WCF \ WorkbookTemplateManager \ EditTemplateForm.cs: строка 124 \ r \ n в системе .Windows.Forms.Control.OnClick (EventArgs e) \ r \ n в System.Windows.Forms.Button.OnClick (EventArgs e) \ r \ n в System.Windows.Forms.Button.OnMouseUp (MouseEven tArgs mevent) \ r \ n в System.Windows.Forms.Control.WmMouseUp (сообщение & m, кнопка MouseButtons, щелчки Int32) \ r \ n в System.Windows.Forms.Control.WndProc (Message & m) \ r \ n в System.Windows.Forms.ButtonBase.WndProc (Сообщение & m) \ r \ n в System.Windows.Forms.Button.WndProc (Сообщение & m) \ r \ n в System.Windows.Forms.Control.ControlNativeWindow.OnMessage (Сообщение & m ) \ r \ n в System.Windows.Forms.Control.ControlNativeWindow.WndProc (Message & m) \ r \ n в System.Windows.Forms.NativeWindow.Callback (IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam) "