cellRow and cellCol need to be of a type larger than WORD.
Otherwise for for documents with 65535 columns condition
loops forever in the following line:
    for (cellRow = 0; cellRow <= pWS->rows.lastrow; cellRow++) {
In this case <= 65535 is always true.

https://bugs.gentoo.org/607094 has an example doc of this kind.
diff --git a/libxls/src/xls2csv.c b/libxls/src/xls2csv.c
index b804267..1f0d4b3 100644
--- a/src/xls2csv.c
+++ b/src/xls2csv.c
@@ -104,3 +104,3 @@ int main(int argc, char *argv[]) {
 	struct st_row_data* row;
-	WORD cellRow, cellCol;
+	DWORD cellRow, cellCol;
 
