I’m using Python-Excel xlwt to create a blank Excel spreadsheet for filling out in a spreadsheet. I would like to specify that a certain range of cells should be date formatted. I’m doing something like:
datestyle = xlwt.XFStyle()
datestyle.num_format_str = "YYYY-MM-DD"
ws.write(row, column, "", datestyle)
but that’s a bit over-prescriptive. People may be pasting in data, and that means that if the format doesn’t match exactly then there will be problems. Spreadsheets are generally good at spotting and understanding dates pasted in in various formats. I want the spreadsheet to be able to do this without the restriction of a specific input format.
I just want to say ‘this cell is a date’ and not impose a format. Is this doable?
You can’t specify that a cell is a date and not impose a format, not with xlwt and not with anything else, including Excel itself. Two reasons:
(1) You can’t specify that a cell is any type. It is whatever the user types or pastes in. You can format it as a date but they can type in text.
(2) “date” is not a data type in Excel. All Excel knows about is text, floating point numbers, booleans (TRUE/FALSE), errors (#DIV/0 etc), and “blank” (formatting but no data). A date cell is just a number cell with a date format.
A general answer to “Can I do X with xlwt?” questions: Firstly try doing X with Excel / OpenOffice Calc / Gnumeric. If you can’t, then neither can xlwt.