Dump.pm 9.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386
  1. # DISCLAIMER OF WARRANTY
  2. # Because this software is licensed free of charge, there is no warranty for the software,
  3. # to the extent permitted by applicable law. Except when otherwise stated in writing
  4. # the copyright holders and/or other parties provide the software "as is" without
  5. # warranty of any kind, either expressed or implied, including, but not limited to,
  6. # the implied warranties of merchantability and fitness for a particular purpose.
  7. # The entire risk as to the quality and performance of the software is with you.
  8. # Should the software prove defective, you assume the cost of all necessary
  9. # servicing, repair, or correction.
  10. # In no event unless required by applicable law or agreed to in writing will any
  11. # copyright holder, or any other party who may modify and/or redistribute the software
  12. # as permitted by the above licence, be liable to you for damages, including any general,
  13. # special, incidental, or consequential damages arising out of the use or inability
  14. # to use the software (including but not limited to loss of data or data being rendered
  15. # inaccurate or losses sustained by you or third parties or a failure of the software
  16. # to operate with any other software), even if such holder or other party
  17. # has been advised of the possibility of such damages.
  18. # AUTHOR
  19. # Current maintainer 0.40+: John McNamara jmcnamara@cpan.org
  20. # Maintainer 0.27-0.33: Gabor Szabo szabgab@cpan.org
  21. # Original author: Kawai Takanori (Hippo2000) kwitknr@cpan.org
  22. # COPYRIGHT
  23. # Copyright (c) 2009-2010 John McNamara
  24. # Copyright (c) 2006-2008 Gabor Szabo
  25. # Copyright (c) 2000-2006 Kawai Takanori
  26. # All rights reserved. This is free software. You may distribute under the terms of
  27. # the Artistic License(full text of the Artistic License http://dev.perl.org/licenses/artistic.html).
  28. package Spreadsheet::ParseExcel::Dump;
  29. ###############################################################################
  30. #
  31. # Spreadsheet::ParseExcel::Dump - A class for dumping Excel records.
  32. #
  33. # Used in conjunction with Spreadsheet::ParseExcel.
  34. #
  35. # Copyright (c) 2009 John McNamara
  36. # Copyright (c) 2006-2008 Gabor Szabo
  37. # Copyright (c) 2000-2006 Kawai Takanori
  38. #
  39. # perltidy with standard settings.
  40. #
  41. # Documentation after __END__
  42. #
  43. use strict;
  44. use warnings;
  45. our $VERSION = '0.57';
  46. my %NameTbl = (
  47. #P291
  48. 0x0A => 'EOF',
  49. 0x0C => 'CALCCOUNT',
  50. 0x0D => 'CALCMODE',
  51. 0x0E => 'PRECISION',
  52. 0x0F => 'REFMODE',
  53. 0x10 => 'DELTA',
  54. 0x11 => 'ITERATION',
  55. 0x12 => 'PROTECT',
  56. 0x13 => 'PASSWORD',
  57. 0x14 => 'HEADER',
  58. 0x15 => 'FOOTER',
  59. 0x16 => 'EXTERNCOUNT',
  60. 0x17 => 'EXTERNSHEET',
  61. 0x19 => 'WINDOWPROTECT',
  62. 0x1A => 'VERTICALPAGEBREAKS',
  63. 0x1B => 'HORIZONTALPAGEBREAKS',
  64. 0x1C => 'NOTE',
  65. 0x1D => 'SELECTION',
  66. 0x22 => '1904',
  67. 0x26 => 'LEFTMARGIN',
  68. 0x27 => 'RIGHTMARGIN',
  69. 0x28 => 'TOPMARGIN',
  70. 0x29 => 'BOTTOMMARGIN',
  71. 0x2A => 'PRINTHEADERS',
  72. 0x2B => 'PRINTGRIDLINES',
  73. 0x2F => 'FILEPASS',
  74. 0x3C => 'COUNTINUE',
  75. 0x3D => 'WINDOW1',
  76. 0x40 => 'BACKUP',
  77. 0x41 => 'PANE',
  78. 0x42 => 'CODEPAGE',
  79. 0x4D => 'PLS',
  80. 0x50 => 'DCON',
  81. 0x51 => 'DCONREF',
  82. #P292
  83. 0x52 => 'DCONNAME',
  84. 0x55 => 'DEFCOLWIDTH',
  85. 0x59 => 'XCT',
  86. 0x5A => 'CRN',
  87. 0x5B => 'FILESHARING',
  88. 0x5C => 'WRITEACCES',
  89. 0x5D => 'OBJ',
  90. 0x5E => 'UNCALCED',
  91. 0x5F => 'SAVERECALC',
  92. 0x60 => 'TEMPLATE',
  93. 0x63 => 'OBJPROTECT',
  94. 0x7D => 'COLINFO',
  95. 0x7E => 'RK',
  96. 0x7F => 'IMDATA',
  97. 0x80 => 'GUTS',
  98. 0x81 => 'WSBOOL',
  99. 0x82 => 'GRIDSET',
  100. 0x83 => 'HCENTER',
  101. 0x84 => 'VCENTER',
  102. 0x85 => 'BOUNDSHEET',
  103. 0x86 => 'WRITEPROT',
  104. 0x87 => 'ADDIN',
  105. 0x88 => 'EDG',
  106. 0x89 => 'PUB',
  107. 0x8C => 'COUNTRY',
  108. 0x8D => 'HIDEOBJ',
  109. 0x90 => 'SORT',
  110. 0x91 => 'SUB',
  111. 0x92 => 'PALETTE',
  112. 0x94 => 'LHRECORD',
  113. 0x95 => 'LHNGRAPH',
  114. 0x96 => 'SOUND',
  115. 0x98 => 'LPR',
  116. 0x99 => 'STANDARDWIDTH',
  117. 0x9A => 'FNGROUPNAME',
  118. 0x9B => 'FILTERMODE',
  119. 0x9C => 'FNGROUPCOUNT',
  120. #P293
  121. 0x9D => 'AUTOFILTERINFO',
  122. 0x9E => 'AUTOFILTER',
  123. 0xA0 => 'SCL',
  124. 0xA1 => 'SETUP',
  125. 0xA9 => 'COORDLIST',
  126. 0xAB => 'GCW',
  127. 0xAE => 'SCENMAN',
  128. 0xAF => 'SCENARIO',
  129. 0xB0 => 'SXVIEW',
  130. 0xB1 => 'SXVD',
  131. 0xB2 => 'SXV',
  132. 0xB4 => 'SXIVD',
  133. 0xB5 => 'SXLI',
  134. 0xB6 => 'SXPI',
  135. 0xB8 => 'DOCROUTE',
  136. 0xB9 => 'RECIPNAME',
  137. 0xBC => 'SHRFMLA',
  138. 0xBD => 'MULRK',
  139. 0xBE => 'MULBLANK',
  140. 0xBF => 'TOOLBARHDR',
  141. 0xC0 => 'TOOLBAREND',
  142. 0xC1 => 'MMS',
  143. 0xC2 => 'ADDMENU',
  144. 0xC3 => 'DELMENU',
  145. 0xC5 => 'SXDI',
  146. 0xC6 => 'SXDB',
  147. 0xCD => 'SXSTRING',
  148. 0xD0 => 'SXTBL',
  149. 0xD1 => 'SXTBRGIITM',
  150. 0xD2 => 'SXTBPG',
  151. 0xD3 => 'OBPROJ',
  152. 0xD5 => 'SXISDTM',
  153. 0xD6 => 'RSTRING',
  154. 0xD7 => 'DBCELL',
  155. 0xDA => 'BOOKBOOL',
  156. 0xDC => 'PARAMQRY',
  157. 0xDC => 'SXEXT',
  158. 0xDD => 'SCENPROTECT',
  159. 0xDE => 'OLESIZE',
  160. #P294
  161. 0xDF => 'UDDESC',
  162. 0xE0 => 'XF',
  163. 0xE1 => 'INTERFACEHDR',
  164. 0xE2 => 'INTERFACEEND',
  165. 0xE3 => 'SXVS',
  166. 0xEA => 'TABIDCONF',
  167. 0xEB => 'MSODRAWINGGROUP',
  168. 0xEC => 'MSODRAWING',
  169. 0xED => 'MSODRAWINGSELECTION',
  170. 0xEF => 'PHONETICINFO',
  171. 0xF0 => 'SXRULE',
  172. 0xF1 => 'SXEXT',
  173. 0xF2 => 'SXFILT',
  174. 0xF6 => 'SXNAME',
  175. 0xF7 => 'SXSELECT',
  176. 0xF8 => 'SXPAIR',
  177. 0xF9 => 'SXFMLA',
  178. 0xFB => 'SXFORMAT',
  179. 0xFC => 'SST',
  180. 0xFD => 'LABELSST',
  181. 0xFF => 'EXTSST',
  182. 0x100 => 'SXVDEX',
  183. 0x103 => 'SXFORMULA',
  184. 0x122 => 'SXDBEX',
  185. 0x13D => 'TABID',
  186. 0x160 => 'USESELFS',
  187. 0x161 => 'DSF',
  188. 0x162 => 'XL5MODIFY',
  189. 0x1A5 => 'FILESHARING2',
  190. 0x1A9 => 'USERBVIEW',
  191. 0x1AA => 'USERVIEWBEGIN',
  192. 0x1AB => 'USERSVIEWEND',
  193. 0x1AD => 'QSI',
  194. 0x1AE => 'SUPBOOK',
  195. 0x1AF => 'PROT4REV',
  196. 0x1B0 => 'CONDFMT',
  197. 0x1B1 => 'CF',
  198. 0x1B2 => 'DVAL',
  199. #P295
  200. 0x1B5 => 'DCONBIN',
  201. 0x1B6 => 'TXO',
  202. 0x1B7 => 'REFRESHALL',
  203. 0x1B8 => 'HLINK',
  204. 0x1BA => 'CODENAME',
  205. 0x1BB => 'SXFDBTYPE',
  206. 0x1BC => 'PROT4REVPASS',
  207. 0x1BE => 'DV',
  208. 0x200 => 'DIMENSIONS',
  209. 0x201 => 'BLANK',
  210. 0x202 => 'Integer', #Not Documented
  211. 0x203 => 'NUMBER',
  212. 0x204 => 'LABEL',
  213. 0x205 => 'BOOLERR',
  214. 0x207 => 'STRING',
  215. 0x208 => 'ROW',
  216. 0x20B => 'INDEX',
  217. 0x218 => 'NAME',
  218. 0x221 => 'ARRAY',
  219. 0x223 => 'EXTERNNAME',
  220. 0x225 => 'DEFAULTROWHEIGHT',
  221. 0x231 => 'FONT',
  222. 0x236 => 'TABLE',
  223. 0x23E => 'WINDOW2',
  224. 0x293 => 'STYLE',
  225. 0x406 => 'FORMULA',
  226. 0x41E => 'FORMAT',
  227. 0x18 => 'NAME',
  228. 0x06 => 'FORMULA',
  229. 0x09 => 'BOF(BIFF2)',
  230. 0x209 => 'BOF(BIFF3)',
  231. 0x409 => 'BOF(BIFF4)',
  232. 0x809 => 'BOF(BIFF5-7)',
  233. 0x31 => 'FONT', 0x27E => 'RK',
  234. #Chart/Graph
  235. 0x1001 => 'UNITS',
  236. 0x1002 => 'CHART',
  237. 0x1003 => 'SERISES',
  238. 0x1006 => 'DATAFORMAT',
  239. 0x1007 => 'LINEFORMAT',
  240. 0x1009 => 'MAKERFORMAT',
  241. 0x100A => 'AREAFORMAT',
  242. 0x100B => 'PIEFORMAT',
  243. 0x100C => 'ATTACHEDLABEL',
  244. 0x100D => 'SERIESTEXT',
  245. 0x1014 => 'CHARTFORMAT',
  246. 0x1015 => 'LEGEND',
  247. 0x1016 => 'SERIESLIST',
  248. 0x1017 => 'BAR',
  249. 0x1018 => 'LINE',
  250. 0x1019 => 'PIE',
  251. 0x101A => 'AREA',
  252. 0x101B => 'SCATTER',
  253. 0x101C => 'CHARTLINE',
  254. 0x101D => 'AXIS',
  255. 0x101E => 'TICK',
  256. 0x101F => 'VALUERANGE',
  257. 0x1020 => 'CATSERRANGE',
  258. 0x1021 => 'AXISLINEFORMAT',
  259. 0x1022 => 'CHARTFORMATLINK',
  260. 0x1024 => 'DEFAULTTEXT',
  261. 0x1025 => 'TEXT',
  262. 0x1026 => 'FONTX',
  263. 0x1027 => 'OBJECTLINK',
  264. 0x1032 => 'FRAME',
  265. 0x1033 => 'BEGIN',
  266. 0x1034 => 'END',
  267. 0x1035 => 'PLOTAREA',
  268. 0x103A => '3D',
  269. 0x103C => 'PICF',
  270. 0x103D => 'DROPBAR',
  271. 0x103E => 'RADAR',
  272. 0x103F => 'SURFACE',
  273. 0x1040 => 'RADARAREA',
  274. 0x1041 => 'AXISPARENT',
  275. 0x1043 => 'LEGENDXN',
  276. 0x1044 => 'SHTPROPS',
  277. 0x1045 => 'SERTOCRT',
  278. 0x1046 => 'AXESUSED',
  279. 0x1048 => 'SBASEREF',
  280. 0x104A => 'SERPARENT',
  281. 0x104B => 'SERAUXTREND',
  282. 0x104E => 'IFMT',
  283. 0x104F => 'POS',
  284. 0x1050 => 'ALRUNS',
  285. 0x1051 => 'AI',
  286. 0x105B => 'SERAUXERRBAR',
  287. 0x105D => 'SERFMT',
  288. 0x1060 => 'FBI',
  289. 0x1061 => 'BOPPOP',
  290. 0x1062 => 'AXCEXT',
  291. 0x1063 => 'DAT',
  292. 0x1064 => 'PLOTGROWTH',
  293. 0x1065 => 'SINDEX',
  294. 0x1066 => 'GELFRAME',
  295. 0x1067 => 'BPOPPOPCUSTOM',
  296. );
  297. #------------------------------------------------------------------------------
  298. # subDUMP (for Spreadsheet::ParseExcel)
  299. #------------------------------------------------------------------------------
  300. sub subDUMP {
  301. my ( $oBook, $bOp, $bLen, $sWk ) = @_;
  302. printf "%04X:%-23s (Len:%3d) : %s\n",
  303. $bOp, OpName($bOp), $bLen, unpack( "H40", $sWk );
  304. }
  305. #------------------------------------------------------------------------------
  306. # Spreadsheet::ParseExcel->OpName
  307. #------------------------------------------------------------------------------
  308. sub OpName {
  309. my ($bOp) = @_;
  310. return ( defined $NameTbl{$bOp} ) ? $NameTbl{$bOp} : 'undef';
  311. }
  312. 1;
  313. __END__
  314. =pod
  315. =head1 NAME
  316. Spreadsheet::ParseExcel::Dump - A class for dumping Excel records.
  317. =head1 SYNOPSIS
  318. See the documentation for Spreadsheet::ParseExcel.
  319. =head1 DESCRIPTION
  320. This module is used in conjunction with Spreadsheet::ParseExcel. See the documentation for Spreadsheet::ParseExcel.
  321. =head1 AUTHOR
  322. Maintainer 0.40+: John McNamara jmcnamara@cpan.org
  323. Maintainer 0.27-0.33: Gabor Szabo szabgab@cpan.org
  324. Original author: Kawai Takanori kwitknr@cpan.org
  325. =head1 COPYRIGHT
  326. Copyright (c) 2009-2010 John McNamara
  327. Copyright (c) 2006-2008 Gabor Szabo
  328. Copyright (c) 2000-2006 Kawai Takanori
  329. All rights reserved.
  330. You may distribute under the terms of either the GNU General Public License or the Artistic License, as specified in the Perl README file.
  331. =cut