freexl.h   freexl.h 
skipping to change at line 32 skipping to change at line 32
/ License. / License.
/ /
/ The Original Code is the FreeXL library / The Original Code is the FreeXL library
/ /
/ The Initial Developer of the Original Code is Alessandro Furieri / The Initial Developer of the Original Code is Alessandro Furieri
/ /
/ Portions created by the Initial Developer are Copyright (C) 2011 / Portions created by the Initial Developer are Copyright (C) 2011
/ the Initial Developer. All Rights Reserved. / the Initial Developer. All Rights Reserved.
/ /
/ Contributor(s): / Contributor(s):
/ Brad Hards
/ /
/ Alternatively, the contents of this file may be used under the terms of / Alternatively, the contents of this file may be used under the terms of
/ either the GNU General Public License Version 2 or later (the "GPL"), or / either the GNU General Public License Version 2 or later (the "GPL"), or
/ the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), / the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
/ in which case the provisions of the GPL or the LGPL are applicable instea d / in which case the provisions of the GPL or the LGPL are applicable instea d
/ of those above. If you wish to allow use of your version of this file onl y / of those above. If you wish to allow use of your version of this file onl y
/ under the terms of either the GPL or the LGPL, and not to allow others to / under the terms of either the GPL or the LGPL, and not to allow others to
/ use your version of this file under the terms of the MPL, indicate your / use your version of this file under the terms of the MPL, indicate your
/ decision by deleting the provisions above and replace them with the notic e / decision by deleting the provisions above and replace them with the notic e
/ and other provisions required by the GPL or the LGPL. If you do not delet e / and other provisions required by the GPL or the LGPL. If you do not delet e
/ the provisions above, a recipient may use your version of this file under / the provisions above, a recipient may use your version of this file under
/ the terms of any one of the MPL, the GPL or the LGPL. / the terms of any one of the MPL, the GPL or the LGPL.
/ /
*/ */
/**
\file freexl.h
Function declarations and constants for FreeXL library
*/
#ifndef DOXYGEN_SHOULD_SKIP_THIS
#ifdef DLL_EXPORT #ifdef DLL_EXPORT
#define FREEXL_DECLARE __declspec(dllexport) #define FREEXL_DECLARE __declspec(dllexport)
#else #else
#define FREEXL_DECLARE extern #define FREEXL_DECLARE extern
#endif #endif
#endif
#ifndef _FREEXL_H #ifndef _FREEXL_H
#ifndef DOXYGEN_SHOULD_SKIP_THIS
#define _FREEXL_H #define _FREEXL_H
#endif
#ifdef __cplusplus #ifdef __cplusplus
extern "C" extern "C"
{ {
#endif #endif
/* constants */ /* constants */
/** query is not applicable, or information is not available */
#define FREEXL_UNKNOWN 0 #define FREEXL_UNKNOWN 0
/* CFBF constants */ /* CFBF constants */
/** CFBF file is version 3 */
#define FREEXL_CFBF_VER_3 3 #define FREEXL_CFBF_VER_3 3
/** CFBF file is version 4 */
#define FREEXL_CFBF_VER_4 4 #define FREEXL_CFBF_VER_4 4
/** CFBF file uses 512 byte sectors */
#define FREEXL_CFBF_SECTOR_512 512 #define FREEXL_CFBF_SECTOR_512 512
/** CFBF file uses 4096 (4K) sectors */
#define FREEXL_CFBF_SECTOR_4096 4096 #define FREEXL_CFBF_SECTOR_4096 4096
/* BIFF versions */ /* BIFF versions */
/** BIFF file is version 2 */
#define FREEXL_BIFF_VER_2 2 #define FREEXL_BIFF_VER_2 2
/** BIFF file is version 3 */
#define FREEXL_BIFF_VER_3 3 #define FREEXL_BIFF_VER_3 3
/** BIFF file is version 4 */
#define FREEXL_BIFF_VER_4 4 #define FREEXL_BIFF_VER_4 4
/** BIFF file is version 5 */
#define FREEXL_BIFF_VER_5 5 #define FREEXL_BIFF_VER_5 5
/** BIFF file is version 9 */
#define FREEXL_BIFF_VER_8 8 #define FREEXL_BIFF_VER_8 8
/* BIFF MaxRecordSize */ /* BIFF MaxRecordSize */
/** Maximum BIFF record size is 2080 bytes */
#define FREEXL_BIFF_MAX_RECSZ_2080 2080 #define FREEXL_BIFF_MAX_RECSZ_2080 2080
/** Maximum BIFF record size is 8224 bytes */
#define FREEXL_BIFF_MAX_RECSZ_8224 8224 #define FREEXL_BIFF_MAX_RECSZ_8224 8224
/* BIFF DateMode */ /* BIFF DateMode */
/** BIFF date mode starts at 1 Jan 1900 */
#define FREEXL_BIFF_DATEMODE_1900 1900 #define FREEXL_BIFF_DATEMODE_1900 1900
/** BIFF date mode starts at 2 Jan 1904 */
#define FREEXL_BIFF_DATEMODE_1904 1904 #define FREEXL_BIFF_DATEMODE_1904 1904
/* BIFF Obsfuscated */ /* BIFF Obsfuscated */
/** BIFF file is password protected */
#define FREEXL_BIFF_OBFUSCATED 3003 #define FREEXL_BIFF_OBFUSCATED 3003
/** BIFF file is not password protected */
#define FREEXL_BIFF_PLAIN 3004 #define FREEXL_BIFF_PLAIN 3004
/* BIFF CodePage */ /* BIFF CodePage */
/** BIFF file uses plain ASCII encoding */
#define FREEXL_BIFF_ASCII 0x016F #define FREEXL_BIFF_ASCII 0x016F
/** BIFF file uses CP437 (OEM US format) encoding */
#define FREEXL_BIFF_CP437 0x01B5 #define FREEXL_BIFF_CP437 0x01B5
/** BIFF file uses CP720 (Arabic DOS format) encoding */
#define FREEXL_BIFF_CP720 0x02D0 #define FREEXL_BIFF_CP720 0x02D0
/** BIFF file uses CP737 (Greek DOS format) encoding */
#define FREEXL_BIFF_CP737 0x02E1 #define FREEXL_BIFF_CP737 0x02E1
/** BIFF file uses CP775 (Baltic DOS format) encoding */
#define FREEXL_BIFF_CP775 0x0307 #define FREEXL_BIFF_CP775 0x0307
/** BIFF file uses CP850 (Western Europe DOS format) encoding */
#define FREEXL_BIFF_CP850 0x0352 #define FREEXL_BIFF_CP850 0x0352
/** BIFF file uses CP852 (Central Europe DOS format) encoding */
#define FREEXL_BIFF_CP852 0x0354 #define FREEXL_BIFF_CP852 0x0354
/** BIFF file uses CP855 (OEM Cyrillic format) encoding */
#define FREEXL_BIFF_CP855 0x0357 #define FREEXL_BIFF_CP855 0x0357
/** BIFF file uses CP857 (Turkish DOS format) encoding */
#define FREEXL_BIFF_CP857 0x0359 #define FREEXL_BIFF_CP857 0x0359
/** BIFF file uses CP858 (OEM Multiligual Latin 1 format) encoding */
#define FREEXL_BIFF_CP858 0x035A #define FREEXL_BIFF_CP858 0x035A
/** BIFF file uses CP860 (Portuguese DOS format) encoding */
#define FREEXL_BIFF_CP860 0x035C #define FREEXL_BIFF_CP860 0x035C
/** BIFF file uses CP861 (Icelandic DOS format) encoding */
#define FREEXL_BIFF_CP861 0x035D #define FREEXL_BIFF_CP861 0x035D
/** BIFF file uses CP862 (Hebrew DOS format) encoding */
#define FREEXL_BIFF_CP862 0x035E #define FREEXL_BIFF_CP862 0x035E
/** BIFF file uses CP863 (French Canadian DOS format) encoding */
#define FREEXL_BIFF_CP863 0x035F #define FREEXL_BIFF_CP863 0x035F
/** BIFF file uses CP864 (Arabic DOS format) encoding */
#define FREEXL_BIFF_CP864 0x0360 #define FREEXL_BIFF_CP864 0x0360
/** BIFF file uses CP865 (Nordic DOS format) encoding */
#define FREEXL_BIFF_CP865 0x0361 #define FREEXL_BIFF_CP865 0x0361
/** BIFF file uses CP866 (Cyrillic DOS format) encoding */
#define FREEXL_BIFF_CP866 0x0362 #define FREEXL_BIFF_CP866 0x0362
/** BIFF file uses CP869 (Modern Greek DOS format) encoding */
#define FREEXL_BIFF_CP869 0x0365 #define FREEXL_BIFF_CP869 0x0365
/** BIFF file uses CP874 (Thai Windows format) encoding */
#define FREEXL_BIFF_CP874 0x036A #define FREEXL_BIFF_CP874 0x036A
/** BIFF file uses CP932 (Shift JIS format) encoding */
#define FREEXL_BIFF_CP932 0x03A4 #define FREEXL_BIFF_CP932 0x03A4
/** BIFF file uses CP936 (Simplified Chinese GB2312 format) encoding */
#define FREEXL_BIFF_CP936 0x03A8 #define FREEXL_BIFF_CP936 0x03A8
/** BIFF file uses CP949 (Korean) encoding */
#define FREEXL_BIFF_CP949 0x03B5 #define FREEXL_BIFF_CP949 0x03B5
/** BIFF file uses CP950 (Traditional Chinese Big5 format) encoding */
#define FREEXL_BIFF_CP950 0x03B6 #define FREEXL_BIFF_CP950 0x03B6
/** BIFF file uses Unicode (UTF-16LE format) encoding */
#define FREEXL_BIFF_UTF16LE 0x04B0 #define FREEXL_BIFF_UTF16LE 0x04B0
/** BIFF file uses CP1250 (Central Europe Windows) encoding */
#define FREEXL_BIFF_CP1250 0x04E2 #define FREEXL_BIFF_CP1250 0x04E2
/** BIFF file uses CP1251 (Cyrillic Windows) encoding */
#define FREEXL_BIFF_CP1251 0x04E3 #define FREEXL_BIFF_CP1251 0x04E3
/** BIFF file uses CP1252 (Windows Latin 1) encoding */
#define FREEXL_BIFF_CP1252 0x04E4 #define FREEXL_BIFF_CP1252 0x04E4
/** BIFF file uses CP1252 (Windows Greek) encoding */
#define FREEXL_BIFF_CP1253 0x04E5 #define FREEXL_BIFF_CP1253 0x04E5
/** BIFF file uses CP1254 (Windows Turkish) encoding */
#define FREEXL_BIFF_CP1254 0x04E6 #define FREEXL_BIFF_CP1254 0x04E6
/** BIFF file uses CP1255 (Windows Hebrew) encoding */
#define FREEXL_BIFF_CP1255 0x04E7 #define FREEXL_BIFF_CP1255 0x04E7
/** BIFF file uses CP1256 (Windows Arabic) encoding */
#define FREEXL_BIFF_CP1256 0x04E8 #define FREEXL_BIFF_CP1256 0x04E8
/** BIFF file uses CP1257 (Windows Baltic) encoding */
#define FREEXL_BIFF_CP1257 0x04E9 #define FREEXL_BIFF_CP1257 0x04E9
/** BIFF file uses CP1258 (Windows Vietnamese) encoding */
#define FREEXL_BIFF_CP1258 0x04EA #define FREEXL_BIFF_CP1258 0x04EA
/** BIFF file uses CP1361 (Korean Johab) encoding */
#define FREEXL_BIFF_CP1361 0x0551 #define FREEXL_BIFF_CP1361 0x0551
/** BIFF file uses Mac Roman encoding */
#define FREEXL_BIFF_MACROMAN 0x2710 #define FREEXL_BIFF_MACROMAN 0x2710
/* CELL VALUE Types */ /* CELL VALUE Types */
/** Cell has no value (empty cell) */
#define FREEXL_CELL_NULL 101 #define FREEXL_CELL_NULL 101
/** Cell contains an integer value */
#define FREEXL_CELL_INT 102 #define FREEXL_CELL_INT 102
/** Cell contains a floating point number */
#define FREEXL_CELL_DOUBLE 103 #define FREEXL_CELL_DOUBLE 103
/** Cell contains a text value */
#define FREEXL_CELL_TEXT 104 #define FREEXL_CELL_TEXT 104
/** Cell contains a reference to a Single String Table entry (BIFF8) */
#define FREEXL_CELL_SST_TEXT 105 #define FREEXL_CELL_SST_TEXT 105
/** Cell contains a number intended to represent a date */
#define FREEXL_CELL_DATE 106 #define FREEXL_CELL_DATE 106
/** Cell contains a number intended to represent a date and time */
#define FREEXL_CELL_DATETIME 107 #define FREEXL_CELL_DATETIME 107
/** Cell contains a number intended to represent a time */
#define FREEXL_CELL_TIME 108 #define FREEXL_CELL_TIME 108
/* INFO params */ /* INFO params */
/** Information query for CFBF version */
#define FREEXL_CFBF_VERSION 32001 #define FREEXL_CFBF_VERSION 32001
/** Information query for CFBF sector size */
#define FREEXL_CFBF_SECTOR_SIZE 32002 #define FREEXL_CFBF_SECTOR_SIZE 32002
/** Information query for CFBF FAT entry count */
#define FREEXL_CFBF_FAT_COUNT 32003 #define FREEXL_CFBF_FAT_COUNT 32003
/** Information query for BIFF version */
#define FREEXL_BIFF_VERSION 32005 #define FREEXL_BIFF_VERSION 32005
/** Information query for BIFF maximum record size */
#define FREEXL_BIFF_MAX_RECSIZE 32006 #define FREEXL_BIFF_MAX_RECSIZE 32006
/** Information query for BIFF date mode */
#define FREEXL_BIFF_DATEMODE 32007 #define FREEXL_BIFF_DATEMODE 32007
/** Information query for BIFF password protection state */
#define FREEXL_BIFF_PASSWORD 32008 #define FREEXL_BIFF_PASSWORD 32008
/** Information query for BIFF character encoding */
#define FREEXL_BIFF_CODEPAGE 32009 #define FREEXL_BIFF_CODEPAGE 32009
/** Information query for BIFF sheet count */
#define FREEXL_BIFF_SHEET_COUNT 32010 #define FREEXL_BIFF_SHEET_COUNT 32010
/** Information query for BIFF Single String Table entry count (BIFF8) */
#define FREEXL_BIFF_STRING_COUNT 32011 #define FREEXL_BIFF_STRING_COUNT 32011
/** Information query for BIFF format count */
#define FREEXL_BIFF_FORMAT_COUNT 32012 #define FREEXL_BIFF_FORMAT_COUNT 32012
/** Information query for BIFF extended format count */
#define FREEXL_BIFF_XF_COUNT 32013 #define FREEXL_BIFF_XF_COUNT 32013
/* Error codes */ /* Error codes */
#define FREEXL_OK 0 #define FREEXL_OK 0 /**< No error, success */
#define FREEXL_FILE_NOT_FOUND -1 #define FREEXL_FILE_NOT_FOUND -1 /**< .xls file does not exist or
#define FREEXL_NULL_HANDLE -2 is
#define FREEXL_INVALID_HANDLE -3 not accessible for reading *
#define FREEXL_INSUFFICIENT_MEMORY -4 /
#define FREEXL_NULL_ARGUMENT -5 #define FREEXL_NULL_HANDLE -2 /**< Null xls_handle argument */
#define FREEXL_INVALID_INFO_ARG -6 #define FREEXL_INVALID_HANDLE -3 /**< Invalid xls_handle argument
#define FREEXL_INVALID_CFBF_HEADER -7 */
#define FREEXL_CFBF_READ_ERROR -8 #define FREEXL_INSUFFICIENT_MEMORY -4 /**< some kind of memory allocati
#define FREEXL_CFBF_SEEK_ERROR -9 on
#define FREEXL_CFBF_INVALID_SIGNATURE -10 failure */
#define FREEXL_CFBF_INVALID_SECTOR_SIZE -11 #define FREEXL_NULL_ARGUMENT -5 /**< an unexpected null argument
#define FREEXL_CFBF_EMPTY_FAT_CHAIN -12 */
#define FREEXL_CFBF_ILLEGAL_FAT_ENTRY -13 #define FREEXL_INVALID_INFO_ARG -6 /**< invalid "what" param
#define FREEXL_BIFF_INVALID_BOF -14 eter */
#define FREEXL_BIFF_INVALID_SST -15 #define FREEXL_INVALID_CFBF_HEADER -7 /**< the .xls file does not conta
#define FREEXL_BIFF_ILLEGAL_SST_INDEX -16 in a
#define FREEXL_BIFF_WORKBOOK_NOT_FOUND -17 valid CFBF header */
#define FREEXL_BIFF_ILLEGAL_SHEET_INDEX -18 #define FREEXL_CFBF_READ_ERROR -8 /**< Read error. Usually indicate
#define FREEXL_BIFF_UNSELECTED_SHEET -19 s a
#define FREEXL_INVALID_CHARACTER -20 corrupt or invalid .xls fil
#define FREEXL_UNSUPPORTED_CHARSET -21 e */
#define FREEXL_ILLEGAL_CELL_ROW_COL -22 #define FREEXL_CFBF_SEEK_ERROR -9 /**< Seek error. Usually indicate
#define FREEXL_ILLEGAL_RK_VALUE -23 s a
#define FREEXL_ILLEGAL_MULRK_VALUE -23 corrupt or invalid .xls fil
e */
#define FREEXL_CFBF_INVALID_SIGNATURE -10 /**< The .xls file does contain
a
CFBF header, but the heade
r is
broken or corrupted in som
e way
*/
#define FREEXL_CFBF_INVALID_SECTOR_SIZE -11 /**< The .xls file does
contain a
CFBF header, but the heade
r is
broken or corrupted in som
e way
*/
#define FREEXL_CFBF_EMPTY_FAT_CHAIN -12 /**< The .xls file does contain
a
CFBF header, but the heade
r is
broken or corrupted in som
e way
*/
#define FREEXL_CFBF_ILLEGAL_FAT_ENTRY -13 /**< The file contains an invali
d
File Allocation Table reco
rd */
#define FREEXL_BIFF_INVALID_BOF -14 /**< The file contains a
n invalid
BIFF format entry */
#define FREEXL_BIFF_INVALID_SST -15 /**< The file contains a
n invalid
Single String Table */
#define FREEXL_BIFF_ILLEGAL_SST_INDEX -16 /**< The requested Single String
Table entry is not availab
le */
#define FREEXL_BIFF_WORKBOOK_NOT_FOUND -17 /**< BIFF does not contain a val
id
workbook */
#define FREEXL_BIFF_ILLEGAL_SHEET_INDEX -18 /**< The requested works
heet is not
available in the workbook
*/
#define FREEXL_BIFF_UNSELECTED_SHEET -19 /**< There is no currently activ
e
worksheet. Possibly a forgott
en
call to
freexl_select_active_workshee
t()
*/
#define FREEXL_INVALID_CHARACTER -20 /**< Charset conversion detected
an
illegal character (not wit
hin
the declared charset) */
#define FREEXL_UNSUPPORTED_CHARSET -21 /**< The requested charset
conversion is not availabl
e. */
#define FREEXL_ILLEGAL_CELL_ROW_COL -22 /**< The requested cell is outsi
de
the valid range for the sh
eet*/
#define FREEXL_ILLEGAL_RK_VALUE -23 /**< Conversion of the R
K value
failed. Possibly a corrupt
file
or a bug in FreeXL. */
#define FREEXL_ILLEGAL_MULRK_VALUE -23 /**< Conversion of the MULRK val
ue
failed. Possibly a corrupt
file
or a bug in FreeXL. */
#define FREEXL_INVALID_MINI_STREAM -24 /**< The MiniFAT stream is inval
id.
Possibly a corrupt file. *
/
#define FREEXL_CFBF_ILLEGAL_MINI_FAT_ENTRY -25 /**< The MiniFAT stream
contains an invalid en
try.
Possibly a corrupt fil
e. */
/**
Container for a cell value
freexl_get_cell_value() takes a pointer to this structure, and fills
in the appropriate values.
\code
FreeXL_CellValue val;
freexl_get_cell_value(..., &val);
switch (val.type)
{
case FREEXL_CELL_INT:
printf("Int=%d\n", val.value.int_value;
break;
case FREEXL_CELL_DOUBLE:
printf("Double=%1.2f\n", val.value.double_value;
break;
case FREEXL_CELL_TEXT:
case FREEXL_CELL_SST_TEXT:
printf("Text='%s'\n", val.value.text_value;
break;
case FREEXL_CELL_DATE:
case FREEXL_CELL_DATETIME:
case FREEXL_CELL_TIME:
printf("DateOrTime='%s'\n", val.value.text_value;
break;
case FREEXL_CELL_NULL:
printf("NULL\n");
break;
default:
printf("Invalid data-type\n");
break;
}
\endcode
*/
struct FreeXL_CellValue_str
{
/**
The type of data stored in this cell. Can be one of the following:
- FREEXL_CELL_NULL the cell contains a NULL value.
- FREEXL_CELL_INT the cell contains an INTEGER value.
- FREEXL_CELL_DOUBLE the cell contains a DOUBLE value.
- FREEXL_CELL_TEXT or FREEXL_CELL_SST_TEXT the cell contains a text
string (always UTF-8 encoded)
- FREEXL_CELL_DATE the cell contains a date, encoded as a 'YYYY-MM-
DD'
string value
- FREEXL_CELL_DATETIME the cell contains a date and time, encoded a
s a
'YYYY-MM-DD HH:MM:SS' string value
- FREEXL_CELL_TIME the cell contains a time, encoded as a 'HH:MM:SS
'
string value
*/
unsigned char type;
union
{
int int_value; /**< if type is FREEXL_CELL_INT, then the
corresponding value will be returned as int_value */
double double_value; /**< if type is FREEXL_CELL_DOUBLE, then th
e
corresponding value will be returned as double_value */
const char *text_value; /**< if type is FREEXL_CELL_TEXT,
FREEXL_CELL_SST_TEXT, FREEXL_CELL_DATE, FREEXL_CELL_DATETIME or
FREEXL_CELL_TIME the corresponding value will be returned as
text_value */
} value; /**< The value of the data stored in the cell. Which part o
f
the union is valid is determined by the type value. */
};
/**
Typedef for cell value structure.
\sa FreeXL_CellValue_str
*/
typedef struct FreeXL_CellValue_str FreeXL_CellValue;
/**
Open the .xls file, preparing for future functions
\param path full or relative pathname of the input .xls file.
\param xls_handle an opaque reference (handle) to be used in each
subsequent function (return value).
\return FREEXL_OK will be returned on success, otherwise any appropria
te
error code on failure.
\note You are expected to freexl_close() even on failure, so as to
correctly release any dynamic memory allocation.
*/
FREEXL_DECLARE int freexl_open (const char *path, const void **xls_hand le); FREEXL_DECLARE int freexl_open (const char *path, const void **xls_hand le);
/**
Open the .xls file for metadata query only
This is similar to freexl_open(), except that an abbreviated parsing
step is performed. This makes it faster, but does not support queries
for cell values.
\param path full or relative pathname of the input .xls file.
\param xls_handle an opaque reference (handle) to be used in each
subsequent function (return value).
\return FREEXL_OK will be returned on success, otherwise any appropria
te
error code on failure.
\note You are expected to freexl_close() even on failure, so as to
correctly release any dynamic memory allocation.
*/
FREEXL_DECLARE int freexl_open_info (const char *path, FREEXL_DECLARE int freexl_open_info (const char *path,
const void **xls_handle); const void **xls_handle);
/**
Close the .xls file and releasing any allocated resource
\param xls_handle the handle previously returned by freexl_open()
\return FREEXL_OK will be returned on success
\note After calling freexl_close() any related resource will be release
d,
and the handle will no longer be valid.
*/
FREEXL_DECLARE int freexl_close (const void *xls_handle); FREEXL_DECLARE int freexl_close (const void *xls_handle);
/**
Query general information about the Workbook and Worksheets
\param xls_handle the handle previously returned by freexl_open()
\param what the info to be queried.
\param info the corresponding information value (return value)
\note FREEXL_UNKNOWN will be returned in \p info if the information is
not available, not appropriate or not supported for the file type.
\return FREEXL_OK will be returned on success
Valid values for \p what are:
- FREEXL_CFBF_VERSION (returning FREEXL_CFBF_VER_3 or FREEXL_CFBF_VER_4
)
- FREEXL_CFBF_SECTOR_SIZE (returning FREEXL_CFBF_SECTOR_512 or
FREEXL_CFBF_SECTOR_4096)
- FREEXL_CFBF_FAT_COUNT (returning the total count of FAT entries in th
e
file)
- FREEXL_BIFF_VERSION (return one of FREEXL_BIFF_VER_2, FREEXL_BIFF_VER
_3,
FREEXL_BIFF_VER_4, FREEXL_BIFF_VER_5, FREEXL_BIFF_VER_8)
- FREEXL_BIFF_MAX_RECSIZE (returning FREEXL_BIFF_MAX_RECSZ_2080 or
FREEXL_BIFF_MAX_RECSZ_8224)
- FREEXL_BIFF_DATEMODE (returning FREEXL_BIFF_DATEMODE_1900 or
FREEXL_BIFF_DATEMODE_1904)
- FREEXL_BIFF_PASSWORD (returning FREEXL_BIFF_OBFUSCATED or
FREEXL_BIFF_PLAIN)
- FREEXL_BIFF_CODEPAGE (returning FREEXL_BIFF_ASCII, one of
FREEXL_BIFF_CP*,FREEXL_BIFF_UTF16LE
or FREEXL_BIFF_MACROMAN)
- FREEXL_BIFF_SHEET_COUNT (returning the total number of worksheets)
- FREEXL_BIFF_STRING_COUNT (returning the total number of Single String
Table entries)
- FREEXL_BIFF_FORMAT_COUNT (returning the total number of format entrie
s)
- FREEXL_BIFF_XF_COUNT (returning the number of extended format entries
)
*/
FREEXL_DECLARE int freexl_get_info (const void *xls_handle, FREEXL_DECLARE int freexl_get_info (const void *xls_handle,
unsigned short what, unsigned short what,
unsigned int *info); unsigned int *info);
/**
Query worksheet name
\param xls_handle the handle previously returned by freexl_open()
\param sheet_index the index identifying the worksheet (base 0)
\param string the name of the worksheet (return value)
\return FREEXL_OK will be returned on success
*/
FREEXL_DECLARE int freexl_get_worksheet_name (const void *xls_handle, FREEXL_DECLARE int freexl_get_worksheet_name (const void *xls_handle,
unsigned short sheet_index , unsigned short sheet_index ,
const char **string); const char **string);
/**
Set the currently active worksheets
Within a FreeXL handle, only one worksheet can be active at a time.
Functions that fetch data are implictly working on the selected worksh
eet.
\param xls_handle the handle previously returned by freexl_open()
\param sheet_index the index identifying the worksheet (base 0)
\return FREEXL_OK will be returned on success
*/
FREEXL_DECLARE int freexl_select_active_worksheet (const void *xls_hand le, FREEXL_DECLARE int freexl_select_active_worksheet (const void *xls_hand le,
unsigned short unsigned short
sheet_index); sheet_index);
/**
Query the currently active worksheet index
\param xls_handle the handle previously returned by freexl_open()
\param sheet_index the index corresponding to the currently active
Worksheet (return value)
\return FREEXL_OK will be returned on success
\sa freexl_select_active_worksheet() for how to select the worksheet
*/
FREEXL_DECLARE int freexl_get_active_worksheet (const void *xls_handle, FREEXL_DECLARE int freexl_get_active_worksheet (const void *xls_handle,
unsigned short unsigned short
*sheet_index); *sheet_index);
/**
Query worksheet dimensions
This function returns the number of rows and columns for the currently
selected worksheet.
\param xls_handle the handle previously returned by freexl_open()
\param rows the total row count (return value)
\param columns the total column count (return value)
\return FREEXL_OK will be returned on success
\note Worksheet dimensions are zero based, so if you
have a worksheet that is four columns and two rows (i.e. from A1 in th
e
top left corner to B4 in the bottom right corner), this will return ro
ws
equal to 1 and columns equal to 3). This is to support C style looping
.
*/
FREEXL_DECLARE int freexl_worksheet_dimensions (const void *xls_handle, FREEXL_DECLARE int freexl_worksheet_dimensions (const void *xls_handle,
unsigned int *rows, unsigned int *rows,
unsigned short *columns) ; unsigned short *columns) ;
/**
Retrieve string entries from SST
\param xls_handle the handle previously returned by freexl_open()
\param string_index the index identifying the String entry (base 0).
\param string the corresponding String value (return value)
\return FREEXL_OK will be returned on success
\note This function is not normally required, since freexl_get_cell_va
lue
will return the string where appropriate. It is mainly intended for
debugging purposes.
*/
FREEXL_DECLARE int freexl_get_SST_string (const void *xls_handle, FREEXL_DECLARE int freexl_get_SST_string (const void *xls_handle,
unsigned short string_index, unsigned short string_index,
const char **string); const char **string);
/**
Retrieve FAT entries from FAT chain
\param xls_handle the handle previously returned by freexl_open()
\param sector_index the index identifying the Sector entry (base 0).
\param next_sector_index the index identifying the next Sector to be
accessed in logical order (return value).
\note The following values imply special meaning:
- 0xffffffff free / unused sector
- 0xfffffffe end of chain
- 0xfffffffd sector used by FAT (map of sectors)
- 0xfffffffc double-indirect FAT sector (map of FAT sectors)
\return FREEXL_OK will be returned on success
\note This function is not normally required, since FreeXL will handle
FAT table entries transparent to the user. It is mainly intended for
debugging purposes.
*/
FREEXL_DECLARE int freexl_get_FAT_entry (const void *xls_handle, FREEXL_DECLARE int freexl_get_FAT_entry (const void *xls_handle,
unsigned int sector_index, unsigned int sector_index,
unsigned int *next_sector_index ); unsigned int *next_sector_index );
/**
Retrieve individual cell values from the currently active worksheet
\param xls_handle the handle previously returned by freexl_open()
\param row row number of the cell to query (zero base)
\param column column number of the cell to query (zero base)
\param value the cell type and value (return value)
\return FREEXL_OK will be returned on success
*/
FREEXL_DECLARE int freexl_get_cell_value (const void *xls_handle, FREEXL_DECLARE int freexl_get_cell_value (const void *xls_handle,
unsigned int row, unsigned int row,
unsigned short column, unsigned short column,
unsigned char *type, FreeXL_CellValue * value);
int *int_value,
double *double_value,
const char **text_value);
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif
#endif /* _FREEXL_H */ #endif /* _FREEXL_H */
 End of changes. 89 change blocks. 
29 lines changed or deleted 458 lines changed or added

This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/