c# - System.DBNull to String error in excel -


i have own custom file type similar .csv except custom delimiters. delimiter comma (char)20 (looks square) , quotes (char)254 (looks þ). have created excel 2010 add-in in visual studio parse through document replaces custom delimiters commas , double-quotes in .csv format.

the program creates new toolbar , button start process. works fine on documents not on others , if try twice in 1 instance of excel comes error "cannot implicitly convert type 'system.dbnull' 'string'". because row.text property being read {}.

now question causing row.text property read {} instead of text inside cell? why occur on documents not others though use same encoding?

an example of in cell (note-the comma symbol won't print here):

þitem_idþþbegdocþþenddocþþbegattþþendattþþparent_attachmentþþattachment_batesþþ etc. 

edit here code:

    public partial class thisaddin {     office.commandbarbutton toolbarcommand;      private void thisaddin_startup(object sender, system.eventargs e)     {         office.commandbar toolbar = application.commandbars.add("my toolbar",office.msobarposition.msobartop,false,true);         toolbarcommand = (office.commandbarbutton)         toolbar.controls.add(            office.msocontroltype.msocontrolbutton,            missing,            missing,            missing,            true);         toolbarcommand.caption = "toolbar button";         toolbarcommand.faceid = 59;         toolbarcommand.click += new office._commandbarbuttonevents_clickeventhandler(toolbarcommand_click);         toolbar.visible = true;     }        void toolbarcommand_click(office.commandbarbutton ctrl, ref bool canceldefault)     {         excel.worksheet activeworksheet = ((excel.worksheet)application.activesheet);         try         {             iteraterows(activeworksheet);         }         catch(exception e)         {             messagebox.show(e.tostring());         }         ctrl.click+=new office._commandbarbuttonevents_clickeventhandler(toolbarcommand_click);     }      public void iteraterows(excel.worksheet worksheet)     {         //get used range         excel.range usedrange = worksheet.usedrange;          excel.worksheet activeworksheet = ((excel.worksheet)application.activesheet);          //iterate rows in used range          if (usedrange.rows.count > 1)         {             foreach (excel.range row in usedrange.rows)             {                 //messagebox.show(row.text);                 char quote = (char)254;                 string data = row.text;                 row.columns[1] = data.replace(quote, '"').replace((char)20, ',');                 row.texttocolumns(type.missing, excel.xltextparsingtype.xldelimited, excel.xltextqualifier.xltextqualifierdoublequote, type.missing, type.missing, type.missing, true);             }         }     } 


Comments

Popular posts from this blog

curl - PHP fsockopen help required -

HTTP/1.0 407 Proxy Authentication Required PHP -

c# - Resource not found error -