<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>RSS feed for InstantSpot site Daily Investigations</title><link>http://dionrecaps.instantspot.com</link><description>To recap my daily research in different areas</description><language>en-us</language><copyright>This work is Copyright &#xA9; 2010 by Daily Investigations</copyright><generator>RSSVille ColdFusion FeedMaker, version 1.0</generator><pubDate>Mon, 22 Mar 2010 10:09:15 GMT</pubDate><item><title>Embedded Procurement</title><link>http://dionrecaps.instantspot.com/blog/2009/10/08/Embedded-Procurement/</link><description>Struggles and lessons with securing hardware </description><pubDate>Thu, 08 Oct 2009 05:02:00 GMT</pubDate><guid>http://dionrecaps.instantspot.com/blog/2009/10/08/Embedded-Procurement/</guid><category>Embedded</category></item><item><title>Coldusion MX7 read excel for free (Apache POI) </title><link>http://dionrecaps.instantspot.com/blog/2006/12/29/Coldusion-MX7-read-excel-for-free-Apache-POI-/</link><description>&lt;p&gt;  Recently I had the need to utilize existing spreadsheets uploaded to our Capital Appropriation applicaiton.  The problems you can encounter at the enterprise level is getting approval to buy any type of software to do this, then you have to put in the requests to get everything installed and then you must fill out security documents to get the admins the access to install the software, blah, blah, blah, red tape.    &lt;/p&gt;  &lt;p&gt;  I did some intial research and found all types of examples where Coldfusion uses Apache POI to create excel documents but i did not acutally find where it would read documents.  I found it was a little tricky to read excel documents but I got it working in a couple of days and thought it would be good to share.  &lt;/p&gt;  &lt;p&gt;  The code example I am listing is not a perfect example of how to read an excel spreadsheet but it goes a long way to get all the formatting to actually give a way to do a html conversion of an excel document.  &lt;/p&gt;  &lt;p&gt;  I hope this gives some other coldfusion developers a way to start reading existing excel spreadsheets in your business environment.  &lt;/p&gt;  &lt;p&gt;  Some of the ideas I had for this are:  &lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;A new querysim (Hal Helms) that uses excel instead of a text file&lt;/li&gt;   &lt;li&gt;Security document (fusebox fuseactions) a column of fuseactions and columns for each group level of access.  The matrix could have yes, no or 1,0 to show this group has or does not have access to a specific fuseaction.  This would be loaded into application structure and called as a security prefuseaction.&lt;/li&gt;  &lt;/ol&gt;  &lt;br /&gt;  readExcel.cfm&lt;br /&gt;  &lt;div style=&quot;border: 1px none #000000; padding: 5px; overflow: auto; width: 500px; height: 200px; background-color: #efefef&quot;&gt;  &amp;lt;!--- Header begin ---&amp;gt;&lt;br /&gt;  &amp;lt;!--- Insert page title here ---&amp;gt;&lt;br /&gt;  &amp;lt;br /&amp;gt;  Reading an Excel with MX7 &amp;amp; Apache POI for free  &amp;lt;!--- Link to your standard stylesheet ---&amp;gt;&lt;br /&gt;  &amp;lt;!--- Link to standard Javascript file that provides row and button hover functionality to IE ---&amp;gt;&lt;br /&gt;  &amp;lt;!--- Include links to any application specific stylesheets, scripts here ---&amp;gt;&lt;br /&gt;  #supportNavigation {  position: relative;  z-index: 100;  padding-left: 14px;   padding-top:2px;   float: left;  height: 50px;   clear: left;  margin: 0px;  }   &amp;lt;div id=&amp;quot;header&amp;quot;&amp;gt;&lt;br /&gt;  &amp;lt;!--- Insert application name here ---&amp;gt;&lt;br /&gt;  &amp;lt;div id=&amp;quot;appName&amp;quot;&amp;gt;&lt;br /&gt;  Reading an Excel or Word Document with MX7 &amp;amp; Apache POI  &amp;lt;/div&amp;gt;&lt;br /&gt;  &amp;lt;!--- Insert user information/assistance here ---&amp;gt;&lt;br /&gt;  &amp;lt;div id=&amp;quot;greeting&amp;quot;&amp;gt;&lt;br /&gt;  Welcome   &amp;lt;/div&amp;gt;&lt;br /&gt;  &amp;lt;div id=&amp;quot;divider&amp;quot;&amp;gt;&lt;br /&gt;  &amp;lt;/div&amp;gt;&lt;br /&gt;  &amp;lt;/div&amp;gt;&lt;br /&gt;  &amp;lt;!--- Header end ---&amp;gt;&lt;br /&gt;  #excel{  border: 1px solid #808080;  background-color: #DDDDDD;  text-align: center;  }  &amp;lt;!--- store the package in a variable for more compact code ---&amp;gt;&lt;br /&gt;  &amp;lt;!--- create a new workbook ---&amp;gt;&lt;br /&gt;  &amp;lt;!--- Find out if the spreadsheet is protected ---&amp;gt;&lt;br /&gt;  &amp;lt;!---   Beginning logic for colspan and rowspan probably should move to div layers---&amp;gt;&lt;br /&gt;  &amp;lt;!--- &amp;lt;cfdump var=&amp;quot;#sheet#&amp;quot;&amp;gt;&lt;br /&gt;  ---&amp;gt;&lt;br /&gt;  &amp;lt;div id=&amp;quot;container&amp;quot;&amp;gt;&lt;br /&gt;  &amp;lt;div id=&amp;quot;content&amp;quot;&amp;gt;&lt;br /&gt;  &amp;lt;table border=&amp;quot;0&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&amp;gt;&lt;br /&gt;  &amp;lt;tbody&amp;gt;&lt;br /&gt;  &amp;lt;tr&amp;gt;&lt;br /&gt;  &amp;lt;td id=&amp;quot;excel&amp;quot;&amp;gt;&lt;br /&gt;  &amp;nbsp;&amp;lt;/td&amp;gt;&lt;br /&gt;  &amp;lt;td id=&amp;quot;excel&amp;quot;&amp;gt;&lt;br /&gt;  #ucase(GetAlphabetPosition(myPrePos))##ucase(GetAlphabetPosition(myColPos))#  &amp;lt;/td&amp;gt;&lt;br /&gt;  &amp;lt;/tr&amp;gt;&lt;br /&gt;  &amp;lt;tr&amp;gt;&lt;br /&gt;  &amp;lt;td id=&amp;quot;excel&amp;quot;&amp;gt;&lt;br /&gt;  #myTmpRow#&amp;lt;/td&amp;gt;&lt;br /&gt;  &amp;lt;!---       &amp;lt;cfset myFGColor=wb.getCustomPalette().getColor(javacast(&amp;quot;int&amp;quot;,myFGColor)).getHexString()&amp;gt;&lt;br /&gt;  ---&amp;gt;&lt;br /&gt;  &amp;lt;td&amp;gt;&lt;br /&gt;  colspan=#myColSpan[&amp;quot;#CC#,#DD#&amp;quot;]#  style=&amp;quot;padding:3px;#fnFont(myFont,myUnderline,myItalic,myStrikeout,myFontHeight,myBoldWeight)# #fnHAlignment(myHalignment)# #fnVAlignment(myValignment)#  #fnFGColor(myFGColor)#  #fnBorder(myLBorder,myTBorder,myRBorder,myBBorder)#&amp;quot;&amp;gt;  &amp;lt;!--- &amp;lt;input type=&amp;quot;text&amp;quot; name=&amp;quot;#CC#,#DD#&amp;quot; value=&amp;quot; ---&amp;gt;&lt;br /&gt;  &amp;lt;!--- HSSFCell.CELL_TYPE_NUMERIC ---&amp;gt;&lt;br /&gt;  &amp;lt;!--- Check to see if numeric value has date formatting and use the correct method ---&amp;gt;&lt;br /&gt;  #dateformat(wb.getSheetAt(0).getRow(javacast(&amp;quot;int&amp;quot;, CC)).getCell(javacast(&amp;quot;int&amp;quot;, DD)).getDateCellValue(),&amp;quot;mm/dd/yyyy&amp;quot;)#   #wb.getSheetAt(0).getRow(javacast(&amp;quot;int&amp;quot;, CC)).getCell(javacast(&amp;quot;int&amp;quot;, DD)).getNumericCellValue()#  &amp;lt;!--- HSSFCell.CELL_TYPE_STRING ---&amp;gt;&lt;br /&gt;  #wb.getSheetAt(0).getRow(javacast(&amp;quot;int&amp;quot;, CC)).getCell(javacast(&amp;quot;int&amp;quot;, DD)).getStringCellValue()#  &amp;lt;!--- HSSFCell.CELL_TYPE_FORMULA ---&amp;gt;&lt;br /&gt;  #trim(numberformat(wb.getSheetAt(0).getRow(javacast(&amp;quot;int&amp;quot;, CC)).getCell(javacast(&amp;quot;int&amp;quot;, DD)).getNumericCellValue(),&amp;quot;999,999,999.99&amp;quot;))#  &amp;lt;a style=&amp;quot;text-decoration: none&amp;quot; xhref=&amp;quot;javascript:void(0);&amp;quot; mce_href=&amp;quot;javascript:void(0);&amp;quot; onmouseover=&amp;quot;return overlib(&amp;#39;#JSStringFormat(wb.getSheetAt(0).getRow(javacast(&amp;quot; onmouseout=&amp;quot;nd();&amp;quot;&amp;gt;&lt;br /&gt;  *&amp;lt;/a&amp;gt;&lt;br /&gt;  &amp;lt;!--- HSSFCell.CELL_TYPE_BLANK ---&amp;gt;&lt;br /&gt;  &amp;lt;!--- HSSFCell.CELL_TYPE_BOOLEAN ---&amp;gt;&lt;br /&gt;  #wb.getSheetAt(0).getRow(javacast(&amp;quot;int&amp;quot;, CC)).getCell(javacast(&amp;quot;int&amp;quot;, DD)).getBooleanCellValue()#  &amp;lt;!--- HSSFCell.CELL_TYPE_ERROR ---&amp;gt;&lt;br /&gt;  #wb.getSheetAt(0).getRow(javacast(&amp;quot;int&amp;quot;, CC)).getCell(javacast(&amp;quot;int&amp;quot;, DD)).getErrorCellValue()#  Cell type is numeric value of #wb.getSheetAt(0).getRow(javacast(&amp;quot;int&amp;quot;,CC)).getCell(javacast(&amp;quot;int&amp;quot;,DD)).getCellType()#  &amp;gt;  &amp;lt;!---  &amp;quot;&amp;gt;&lt;br /&gt;  ---&amp;gt;&lt;br /&gt;  &amp;lt;!---   &amp;lt;cfdump var=&amp;quot;#cfcatch#&amp;quot;&amp;gt;&lt;br /&gt;  &amp;lt;cfabort&amp;gt;&lt;br /&gt;  ---&amp;gt;&lt;br /&gt;  &amp;lt;/td&amp;gt;&lt;br /&gt;  &amp;lt;/tr&amp;gt;&lt;br /&gt;  &amp;lt;/tbody&amp;gt;&lt;br /&gt;  &amp;lt;/table&amp;gt;&lt;br /&gt;  &amp;lt;/div&amp;gt;&lt;br /&gt;  &lt;/div&gt;  &lt;br /&gt;  &lt;br /&gt;  &lt;br /&gt;  &lt;!--- Footer end ---&gt;&lt;br /&gt;  &lt;br /&gt;  &lt;br /&gt;  &lt;!--- Footer end ---&gt;  plugExcel.cfm&lt;br /&gt;  &lt;div style=&quot;border: 1px none #000000; padding: 5px; overflow: auto; width: 500px; height: 200px; background-color: #efefef&quot;&gt;  &lt;br /&gt;  /**  * Returns the numeric value of a letter&amp;#39;s position in the alphabet, or the returns matching letter of a number in the alphabet.  *   * @param charornum   Either a character or number.   * @return Returns either a character, number, or empty string on error.   * @author Seth Duffey (sduffey@ci.davis.ca.us)   * @version 1, January 7, 2002   */  function GetAlphabetPosition(charornum) {  var a_numeric = asc(&amp;quot;a&amp;quot;);  charornum = lCase(trim(charornum));  if (charornum eq &amp;quot;&amp;quot;){  return &amp;quot;&amp;quot;;  }  if(isNumeric(charornum)) {  if(charornum lte 0 OR charornum gte 27) return &amp;quot;&amp;quot;;  return chr(charornum+a_numeric-1);  } else {  if(len(charornum) gt 1) return &amp;quot;&amp;quot;;  if(REFind(&amp;quot;[^a-z]&amp;quot;,charornum)) return &amp;quot;&amp;quot;;  return asc(charornum) - a_numeric + 1;  }  return 1;  }  function fnHAlignment(this_cell){  switch(this_cell){  case &amp;quot;1&amp;quot;:   return &amp;quot;text-align:left;padding-left:.5em;&amp;quot;;  break;  case &amp;quot;2&amp;quot;:   return &amp;quot;text-align:center;&amp;quot;;  break;       case &amp;quot;3&amp;quot;:   return &amp;quot;text-align:right;padding-right:.5em;&amp;quot;;  break;                  }  return &amp;quot;&amp;quot;;   }  function fnFont(myFont,myUnderline,myItalic,myStrikeout,myFontHeight,myBoldWeight){  var myReturnFont=&amp;quot;font-size:&amp;quot;&amp;amp;myFontHeight&amp;amp;&amp;quot;px;&amp;quot;;  myReturnFont=myReturnFont&amp;amp;&amp;quot;font:&amp;quot;&amp;amp;myFont&amp;amp;&amp;quot;;&amp;quot;;  myReturnFont=myReturnFont&amp;amp;&amp;quot;font-weight:&amp;quot;&amp;amp;myBoldWeight&amp;amp;&amp;quot;;&amp;quot;;  if (myUnderline){  myReturnFont=myReturnFont&amp;amp;&amp;quot;text-decoration:underline;&amp;quot;;  }  if (myItalic){  myReturnFont=myReturnFont&amp;amp;&amp;quot;font-style:italic;&amp;quot;;   }  return myReturnFont;  }  function fnVAlignment(this_cell){  switch(this_cell){  case &amp;quot;0&amp;quot;:   return &amp;quot;vertical-align:top;&amp;quot;;  break;  case &amp;quot;1&amp;quot;:   return &amp;quot;vertical-align:middle;&amp;quot;;  break;       case &amp;quot;2&amp;quot;:   return &amp;quot;vertical-align:bottom;&amp;quot;;  break;                  }  return &amp;quot;&amp;quot;;   }  function fnFGColor(this_color){  return &amp;quot;background-color:&amp;quot; &amp;amp; fnColor(this_color) &amp;amp; &amp;quot;;&amp;quot;;  }  function fnBorder(this_left, this_top, this_right, this_bottom){  var myBorder=&amp;quot;&amp;quot;;  if (this_left){  myBorder=&amp;quot;border-left:1px solid ##000000;&amp;quot;;  }   if (this_top){  myBorder=myBorder&amp;amp;&amp;quot;border-top:1px solid ##000000;&amp;quot;;  }    if (this_right){  myBorder=myBorder&amp;amp;&amp;quot;border-right:1px solid ##000000;&amp;quot;;  }     if (this_bottom){  myBorder=myBorder&amp;amp;&amp;quot;border-bottom:1px solid ##000000;&amp;quot;;  }     return myBorder;  }  function fnColor(this_color){  switch(this_color){  case &amp;quot;1&amp;quot;:  return &amp;quot;##000000;&amp;quot;;  break;   case &amp;quot;2&amp;quot;:  return &amp;quot;##ffffff;&amp;quot;;  break;       case &amp;quot;10&amp;quot;:  return &amp;quot;##ff0000;&amp;quot;;  break;       case &amp;quot;4&amp;quot;:  return &amp;quot;##00ff00;&amp;quot;;  break;       case &amp;quot;18&amp;quot;:  return &amp;quot;##0000ff;&amp;quot;;  break;       case &amp;quot;13&amp;quot;:  return &amp;quot;##ffff00;&amp;quot;;  break;       case &amp;quot;7&amp;quot;:  return &amp;quot;##ff00ff;&amp;quot;;  break;       case &amp;quot;8&amp;quot;:  return &amp;quot;##00ffff;&amp;quot;;  break;    //9     case &amp;quot;60&amp;quot;:  return &amp;quot;##800000;&amp;quot;;  break;       case &amp;quot;57&amp;quot;:  return &amp;quot;##008000;&amp;quot;;  break;       case &amp;quot;11&amp;quot;:  return &amp;quot;##000080;&amp;quot;;  break;       case &amp;quot;12&amp;quot;:  return &amp;quot;##808000;&amp;quot;;  break;       case &amp;quot;11113&amp;quot;:  return &amp;quot;##800080;&amp;quot;;  break;       case &amp;quot;14&amp;quot;:  return &amp;quot;##ff0000;&amp;quot;;  break;   case &amp;quot;22&amp;quot;:  return &amp;quot;##c0c0c0&amp;quot;;  break;  case &amp;quot;16&amp;quot;:  return &amp;quot;##808080&amp;quot;;  break;      case &amp;quot;17&amp;quot;:  return &amp;quot;##9999ff&amp;quot;;  break;      case &amp;quot;11118&amp;quot;:  return &amp;quot;##993366&amp;quot;;  break;      case &amp;quot;19&amp;quot;:  return &amp;quot;##ffffcc&amp;quot;;  break;      case &amp;quot;20&amp;quot;:  return &amp;quot;##ccffff&amp;quot;;  break;      case &amp;quot;21&amp;quot;:  return &amp;quot;##660066&amp;quot;;  break;            case &amp;quot;2299&amp;quot;:  return &amp;quot;##ff8080&amp;quot;;  break;      case &amp;quot;23&amp;quot;:  return &amp;quot;##0066cc&amp;quot;;  break;        case &amp;quot;24&amp;quot;:  return &amp;quot;##ccccff&amp;quot;;  break;      case &amp;quot;25&amp;quot;:  return &amp;quot;##000080&amp;quot;;  break;      case &amp;quot;26&amp;quot;:  return &amp;quot;##ff00ff&amp;quot;;  break;      case &amp;quot;27&amp;quot;:  return &amp;quot;##ffff00&amp;quot;;  break;      case &amp;quot;28&amp;quot;:  return &amp;quot;##00ffff&amp;quot;;  break;      case &amp;quot;29&amp;quot;:  return &amp;quot;##800080&amp;quot;;  break;      case &amp;quot;30&amp;quot;:  return &amp;quot;##800000&amp;quot;;  break;      case &amp;quot;31&amp;quot;:  return &amp;quot;##008080&amp;quot;;  break;      case &amp;quot;32&amp;quot;:  return &amp;quot;##0000ff&amp;quot;;  break;      case &amp;quot;33&amp;quot;:  return &amp;quot;##00ccff&amp;quot;;  break;      case &amp;quot;34&amp;quot;:  return &amp;quot;##ccffff&amp;quot;;  break;      case &amp;quot;35&amp;quot;:  return &amp;quot;##ccffcc&amp;quot;;  break;      case &amp;quot;43&amp;quot;:  return &amp;quot;##ffff99&amp;quot;;  break;      case &amp;quot;37&amp;quot;:  return &amp;quot;##99ccff&amp;quot;;  break;      case &amp;quot;38&amp;quot;:  return &amp;quot;##ff99cc&amp;quot;;  break;                     case &amp;quot;39&amp;quot;:  return &amp;quot;##cc99ff&amp;quot;;  break;      case &amp;quot;40&amp;quot;:  return &amp;quot;##ffcc99&amp;quot;;  break;      case &amp;quot;41&amp;quot;:  return &amp;quot;##3366ff&amp;quot;;  break;      case &amp;quot;42&amp;quot;:  return &amp;quot;##33cccc&amp;quot;;  break;      case &amp;quot;99&amp;quot;:  return &amp;quot;##99cc00&amp;quot;;  break;      case &amp;quot;44&amp;quot;:  return &amp;quot;##ffcc00&amp;quot;;  break;      case &amp;quot;45&amp;quot;:  return &amp;quot;##ff9900&amp;quot;;  break;      case &amp;quot;46&amp;quot;:  return &amp;quot;##ff6600&amp;quot;;  break;      case &amp;quot;47&amp;quot;:  return &amp;quot;##666699&amp;quot;;  break;      case &amp;quot;48&amp;quot;:  return &amp;quot;##969696&amp;quot;;  break;      case &amp;quot;49&amp;quot;:  return &amp;quot;##003366&amp;quot;;  break;      case &amp;quot;50&amp;quot;:  return &amp;quot;##339966&amp;quot;;  break;      case &amp;quot;51&amp;quot;:  return &amp;quot;##003300&amp;quot;;  break;      case &amp;quot;52&amp;quot;:  return &amp;quot;##333300&amp;quot;;  break;      case &amp;quot;53&amp;quot;:  return &amp;quot;##993300&amp;quot;;  break;      case &amp;quot;54&amp;quot;:  return &amp;quot;##993366&amp;quot;;  break;      case &amp;quot;55&amp;quot;:  return &amp;quot;##333399&amp;quot;;  break;      case &amp;quot;56&amp;quot;:  return &amp;quot;##333333&amp;quot;;  break;   }  return this_color;                       }  &lt;br /&gt;  &lt;/div&gt;  </description><pubDate>Sat, 30 Dec 2006 04:14:34 GMT</pubDate><guid>http://dionrecaps.instantspot.com/blog/2006/12/29/Coldusion-MX7-read-excel-for-free-Apache-POI-/</guid><category>Coldfusion</category></item></channel></rss>