+ 1
Excel in c++
Hello one way to read excel file is using fstream objects... I am not looking for same.... is there a good approach to read excel data using c++ ? I am looking for some good site or document which talks about excel reading using c++.
9 Réponses
+ 2
Most Excel data can be, or is delimited with commas. This is called csv data or, Comma Separated Values. Try finding ways to parse csv files, and ways to export your Excel files into csv format. Good luck!
+ 2
Are you using a string buf object when reading? Because I actually had a similar issue recently with reading special characters as well. My fix was to use getline(istream, string), and that worked because the file I was reading was just one long line.
+ 1
Zeke Williams this is okay... we can obviously do the same... but as we can read XML file using msxml, do we have something for Excel or not ?
+ 1
that parsing code becomes difficult or cumbersome... it also not that much readable...
+ 1
yes I am using string only.... below is sample code :
ifstream fs;
fs.open(lFilePath.c_str(), std::ios::binary ||ios::binary);
string line;
getline(fs, line);
but I think I have mislead you while asking question... I am not complaining about unable to read special characters...
below is my issue :
sample excle file test.xlsx
first row has a b c and d in to column 1 to 4...then in second row , data in column 1 to 8 is e f g and h...
now I am saving this file as test.csv...
so , ideally CSV reading should have below two lines :
a,b,c,d
e,f,g,h
but it gives me as below
few unknown characters a,b,c,d
e,f,g,h
it means some extra special characters are added unnecessary while reading through code for first line only... why this happens nd how to avoid this problem?
I am using visual studio 12 for c++ nd Excel version is 2016...
code works fine if I manually create text file , write two lines with comma seperated values , save it and change extension from .TXT to .CSV..
+ 1
I'm not sure. One of my solutions was to read the whole line into the string and then get the position of the first valid character.
std::getline(in, str);
int pos = str.find_first_of("abcdefghi...");
Then I take a substring of that to cut off the weird characters.
str = str.substr(pos, str.length() - pos - 1);
This works fine, no matter what the first line starts with. I also didn't open my file in binary mode.
+ 1
thanks...this should solve the purpose...
0
okay..finally I decided to go with CSV... when I manually create XLSX nd save it as CSV, there is some special characters being recognised along with contents (for first line only) while reading CSV file through code... if I directly create a file in notepad editor, save it and changes extension from .TXT to .CSV; it works fine...how to avoid special characters while reading...
0
I came across a situation nd got confused about what to do...my excel cell itself has value which contains comma... now how to differentiate between CSV comma nd cell value comma during delimiting