我正在使用sql查询和此代码生成一个excel文件 -
header("Content-type: application/octet-stream");
header("Content-Disposition: attachment; filename=excelfile.xls");
但是当用户生成excel并下载并尝试打开文件时,他们会收到此错误 -
"The file you are trying to open, 'filename.xls', is in a different format
than specified by the file extension. Verify that the file is not corrupted
and is from a trusted source before opening the file. Do you want to open
the file now?"
点击Yes
文件正在打开,没有任何问题。
如何在不打扰用户的情况下摆脱问题?
我已阅读此论坛中的其他主题,但它们不清楚或似乎无法正常工作。
像更改xlsx的扩展名不起作用
有人可以帮忙吗?
您可以从here
下载excel生成文件的示例答案 0 :(得分:0)
您是否有机会使用逗号分隔符生成文件?例如" A"," B"," C" .... 当您编写真正的.csv文件并将其称为xls文件时,我收到了同样的错误消息。
Excel可以打开这些文件,但最终用户必须执行"另存为"到真正的Excel格式。
如果您不想要错误,那么您必须使用更复杂的库来编写excel头文件。有关详细信息,请参阅here
编辑:我查看了你的文件。 Excel是正确的,这不是一个excel文件。正如其他人已经指出编写制表符分隔数据并调用它.xls并不会改变实际上使其成为excel文件的头文件的遗漏。
这个post向您展示了如何以xml样式格式编写excel文件。您可以从代码中看到还有很多额外的事情要做。您必须相应地修改pl / sql代码。
答案 1 :(得分:0)
我在使用PL / SQL写入.csv文件时遇到了这个问题,直到我将头文件中的每个字段括起来“就像这样:
header_line:='“姓氏”'|| ','|| '“名字”'|| ','|| '“日期'”; UTL_FILE.PUT_LINE(outhandle,header_line);