Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people, just like you, are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions

How to read a .xls file?

Posted on 2004-08-10
Last Modified: 2008-01-09
I need to open an excel file and then read each row of the file, how do I do this?
Question by:prasen120998
LVL 55

Expert Comment

by:Jaime Olivares
ID: 11769039
Need to be in pure C?
There are many examples in Visual C++:
LVL 55

Expert Comment

by:Jaime Olivares
ID: 11769048

Also you can save a spreadsheet in Comma-Separated-Values format (.csv) and read as a simple text easily.
LVL 22

Expert Comment

ID: 11771616
Above you'll see several ways to do it, mostly very cumbersome.

It's not easy to directly read the file, as it's ina rather convoluted BIFF format.  Plus there are about 8 different Excel file formats, it seems each version of Excel has changed things around a bit.

If you gotta do it, get the BIFF document from www.msdn.com and read up on the various file formats.  Plan to spend a good week writing code.

Alternatives include:  send DDE commands to a copy of Excel, have Excel write out a comma-delimited text file, or forget the whole thing.

PRTG Network Monitor: Intuitive Network Monitoring

Network Monitoring is essential to ensure that computer systems and network devices are running. Use PRTG to monitor LANs, servers, websites, applications and devices, bandwidth, virtual environments, remote systems, IoT, and many more. PRTG is easy to set up & use.


Expert Comment

ID: 11774296
The best possibility (as jaime olivares already said) is to save the Excel file as .csv (with ';'  or 'tab' as field separator.)
Then you could simply read the file character by character to the end of each line. (line end has ascii code 10 or 13 - whatever excel uses; tab has ascii code 9)

#include <stdio.h>
#include <stdlib.h>

   FILE *in;
   in = fopen ("yourfile.csv","r");
   while ((c=getc(in))!=EOF)  //read to EndOfFile
      i=c;      //get ASCII value of current letter
      if (i!=10)      //read to end of line
         if (i!=9) //read to next tab
      else //end of line reached

Maybe you could tell what you want to do with the Excel File (Copy its content to the console, copy to another file, ...)


Author Comment

ID: 11815530
The excel file would be provided by another system, & my program needs to read that file and create an output

Accepted Solution

modulo earned 0 total points
ID: 12902868
PAQed with points refunded (50)

Community Support Moderator

Featured Post

Networking for the Cloud Era

Join Microsoft and Riverbed for a discussion and demonstration of enhancements to SteelConnect:
-One-click orchestration and cloud connectivity in Azure environments
-Tight integration of SD-WAN and WAN optimization capabilities
-Scalability and resiliency equal to a data center

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Have you thought about creating an iPhone application (app), but didn't even know where to get started? Here's how: ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ Important pre-programming comments: I’ve never tri…
This tutorial is posted by Aaron Wojnowski, administrator at SDKExpert.net.  To view more iPhone tutorials, visit www.sdkexpert.net. This is a very simple tutorial on finding the user's current location easily. In this tutorial, you will learn ho…
The goal of this video is to provide viewers with basic examples to understand recursion in the C programming language.
Video by: Grant
The goal of this video is to provide viewers with basic examples to understand and use nested-loops in the C programming language.

765 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question