Python's pandas library essentially does this when creating a DataFrame object from a CSV file. Of course, it's not always correct, but may be a starting point for your use case.
i used pandas, type guess isn't nice. especially on some string or time types. also extend pandas types is hard, pandas's design is more like a numerical computation tool.
Any sort of office suite would be able to do it, but the data types would be very limited. CSV itself is not standardized, and with a well-constructed spreadsheet wouldn't contain information such as a currency symbol that would make more advances data types possible.
Over here commas are used to denote decimals. So MS decided to helpfully use the semicolon as a separator for csv files if your locale is set to german. Rather than wrapping the values in quotes. It's a PITA
yeah, csv type guess is just one of case. i more likely to have a metadata management solution beyond the data lake, maybe Ontotext Refine's goal is what i want, but it's approach from RDF really sucks.