⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 xlcdump.c

📁 excel to html
💻 C
字号:
/*   xlcdump - dumps individual chart records for analysis   Copyright 2002 Charles N Wyble <jackshck@yahoo.com>   This program is free software; you can redistribute it and/or modify   it under the terms of the GNU General Public License as published  by   the Free Software Foundation; either version 2 of the License, or   (at your option) any later version.   This program is distributed in the hope that it will be useful,   but WITHOUT ANY WARRANTY; without even the implied warranty of   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the   GNU General Public License for more details.   You should have received a copy of the GNU General Public License   along with this program; if not, write to the Free Software   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307  USA */#if !(defined( __BORLANDC__ ) || defined( __WIN32__ ))#include "config.h"		/* Created by ./configure script */#include "cole.h"#else#include "config.h.in"	/* Created by ./configure script */#include "cole.h.in"#include <io.h>		/* for umask */#endif#include <stdio.h>#include <stdlib.h>#include <string.h>		/* for strcpy() */#include <ctype.h>		/* For isprint */#define MODE 0 			/* 0 - ascii;  1 - hex */#define TEXT 0			/* In ascii mode, 0 - ascii, 1 - hex */#define PRGNAME "xlcdump"#define MAX_COLS 64#define MAX_ROWS 512static char FileName[2][12] =			/* The section of the Excel Spreadsheet we read in */{	"/Workbook",		/* Office 97 */	"/Book"			/* Everything else ? */};/* Function Prototypes */COLE_LOCATE_ACTION_FUNC dump_file;static void output_opcode_string(int);/* Global data */static char filename[128];int main (int argc, char **argv){	int f_ptr = 0;	COLEFS * cfs;	COLERRNO colerrno;	if (argc < 2)	{		fprintf (stderr, "dump - Outputs excel chart records for analysis.\n"			"Usage: "PRGNAME" <FILE>\n");		exit (1);	}	else	{		strncpy(filename, argv[1], 124);		cfs = cole_mount (filename, &colerrno);		if (cfs == NULL)		{			cole_perror (PRGNAME, colerrno);			exit (1);		}	}	while (cole_locate_filename (cfs, FileName[f_ptr], NULL, dump_file, &colerrno)) 	{		if (f_ptr)		{			cole_perror (PRGNAME, colerrno);			break;		}		else			f_ptr++;	}	if (cole_umount (cfs, &colerrno))	{		cole_perror ("travel", colerrno);		exit (1);	}			return 0;}void dump_file(COLEDIRENT *cde, void *_info){	unsigned int length=0, opcode=0, target=0, count = 0;	unsigned char buf[16];	COLEFILE *cf;	COLERRNO err;		cf = cole_fopen_direntry(cde, &err);		/* Ouput Header */	printf("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 3.2//EN\">\n");	printf("<HTML><HEAD><TITLE>%s", filename);		printf("</TITLE></HEAD><BODY>\n");	/* Output body */#if (MODE == 1)	while (cole_fread(cf, buf, 8, &err)) /* For mode >= 1 */#else	while (cole_fread(cf, buf, 1, &err))#endif		{		if (MODE == 0)		{			if (count == 0)			{				length = 0;				opcode = (unsigned)buf[0];				target = 80;	/* ficticious number */				printf("<br>");			}			else if (count == 1)				opcode |= (buf[0]<<8)&0x0000FFFFL;			else if (count == 2)				length = (unsigned)buf[0];				else if (count == 3)			{				length |= (buf[0]<<8);				target = length;				printf("<br>\nLength:%04X Opcode:%04X - ", length, opcode);				output_opcode_string(opcode);				puts("<br>\n");			}			if (count > 3)			{	/* Here is where we want to process the data */				/* based on the opcode... */#if (TEXT == 0)				if (isprint(buf[0]))					putc(buf[0], stdout);	#else				printf("%02X ", buf[0]);				if (((count-3) % 8) == 0)					printf("<br>\n");#endif			}					if (count == (target+3))				count = 0;			else						count++;			}		else	/* mode >= 1 */		{			printf("%02x %02x %02x %02x %02x %02x %02x %02x &nbsp; &nbsp; &nbsp; &nbsp; ",			  (unsigned)buf[0], (unsigned)buf[1], (unsigned)buf[2], (unsigned)buf[3], 			  (unsigned)buf[4], (unsigned)buf[5], (unsigned)buf[6], (unsigned)buf[7]);			  putchar(buf[0]); putchar(buf[1]); 			  putchar(buf[2]); putchar(buf[3]); 			  putchar(buf[4]); putchar(buf[5]); 			  putchar(buf[6]); putchar(buf[7]);			  printf("<br>\n");		}	}/* Output Tail */	printf("</BODY></HTML>\n");		cole_fclose(cf, &err);}static void output_opcode_string(int opcode){	switch (opcode&0x00FF)	{	case 0x10:		case 0x01:			puts("UNITS: Chart Units");			break;		case 0x02:			puts("CHART: Location and overall chart dimensions");			break;		case 0x03:			puts("SERIES: Series Definition");			break;		case 0x06:			puts("DATAFORMAT: Series and Data Point Numbers");			break;		case 0x07:			puts("LINEFORMAT: Style of a line or border");			break;		case 0x09:			puts("MARKERFORMAT: Style of a line marker");			break;		case 0x0A:			puts("AREAFORMAT: Colors and patterns for an area");			break;		case 0x0B:			puts("PIEFORMAT: Position of the pie slice");			break;		case 0x0C:			puts("ATTACHEDLABEL: Series data/value labels");			break;		case 0x0D:			puts("SERIESTEXT: Legend/category/value text");			break;		case 0x14:			puts("CHARTFORMAT: Parent record for chart group");			break;		case 0x15:			puts("LEGEND: Legend type and position");			break;		case 0x16:			puts("SERIESLIST: Specifies the series in an overlay chart");			break;		case 0x17:			puts("BAR: Chart group is a bar or column chart group");			break;		case 0x18:			puts("LINE: Chart group is a line chart group");			break;		case 0x19:			puts("PIE: Chart group is a pie chart group");			break;		case 0x1A:			puts("AREA: Chart group is an area chart group");			break;		case 0x1B:			puts("SCATTER: Chart group is a scatter chart group");			break;		case 0x1C:			puts("CHARTLINE: Drop/Hi-Lo/Series Lines on a line chart");			break;		case 0x1D:			puts("AXIS: Axis Type");			break;		case 0x1E:			puts("TICK: Tick marks and labels format");			break;		case 0x1F:			puts("VALUERANGE: Defines value axis scale");			break;		case 0x20:			puts("CATSERRANGE: Defines a category or series axis");			break;		case 0x21:			puts("AXISLINEFORMAT: Defines a line that spans an axis");			break;		case 0x22:			puts("CHARTFORMTLINK: Not Used");			break;		case 0x24:			puts("DEFAULTTEXT: Default data label text properties");			break;		case 0x25:			puts("TEXT: Defines display of text fields");			break;		case 0x26:			puts("FONTX: Font Index");			break;		case 0x27:			puts("OBJECTLINK: Attaches Text to chart or chart item");			break;		case 0x32:			puts("FRAME: Defines border shape around displayed text");			break;		case 0x33:			puts("BEGIN: Defines the beginning of an object");			break;		case 0x34:			puts("END: Defines the end of an object");			break;		case 0x35:			puts("PLOTAREA: Frame belongs to ploat area");			break;		case 0x3A:			puts("3d Chart group");			break;		case 0x3C:			puts("PICF: Picture Format");			break;		case 0x3D:			puts("DROPBAR: Defines drop bars");			break;		case 0x3E:			puts("RADAR: Chart group is a radar chart group");			break;		case 0x3F:			puts("SURFACE: Chart group is a surface chart group");			break;		case 0x40:			puts("RADARAREA: Chart group is a radar area chart group");			break;		case 0x41:			puts("AXISPARENT: Axis size and location");			break;		case 0x43:			puts("LEGENDXN: Legend Exception");			break;		case 0x44:			puts("SHTPROPS: Sheet Properties");			break;		case 0x45:			puts("SERTOCRT: Series chart-group index");			break;		case 0x46:			puts("AXESUSED: Number of axes sets");			break;		case 0x48:			puts("SBASEREF: PivotTable Reference");			break;		case 0x4A:			puts("SERPARENT: Trendline or Errorbar series index");			break;		case 0x4B:			puts("SERAUXTREND: Series trendline");			break;		case 0x4E:			puts("IFMT: Number-Format Index");			break;		case 0x4F:			puts("POS: Position information");			break;		case 0x50:			puts("ALRUNS: Text formatting");			break;		case 0x51:			puts("AI: Linked data");			break;		case 0x5B:			puts("Series ErrorBar");			break;		case 0x5D:			puts("SERFMT: Series Format"); 			break;		case 0x60:			puts("FBI: Font Basis"); 			break;		case 0x61:			puts("BOPPOP: Bar of pie/pie of pie chart options");			break;		case 0x62:			puts("AXCEXT: Axis options");			break;		case 0x63:			puts("DAT: Data Table Options");			break;		case 0x64:			puts("PLOTGROWTH: Font scale factors");			break;		case 0x65:			puts("SIINDEX: Series Index");			break;		case 0x66:			puts("GELFRAME: Fill data");			break;		case 0x67:			puts("Custom bar of pie/ pie of pie chart options");			break;		default:			puts("Unknown Chart Opcode");			break;	}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -