停止Ms Excel将数字字符串自动格式化为数字

停止Ms Excel将数字字符串自动格式化为数字,excel,ms-access,formatting,report,export-to-excel,Excel,Ms Access,Formatting,Report,Export To Excel,我正在将报告从MS Access(2003)导出到Excel(97-2003)输出 其中一列有一个字符串,该字符串对于某些行来说是数字的,例如“05-0880” 当我在MS Excel中打开输出文件时,相应的单元格设置为数字-372424 我认为这是因为Excel“聪明”,决定“05-0808”表示某种时间值或日期,并将字符串转换为相应的数值 在我的例子中,数据表示产品代码,这种转换是非常不可取的。 如果导出报表基础查询的输出(导出数据表),则不会发生此转换。(建议必须能够以防止转换的方式访问E

我正在将报告从MS Access(2003)导出到Excel(97-2003)输出

其中一列有一个字符串,该字符串对于某些行来说是数字的,例如“05-0880”

当我在MS Excel中打开输出文件时,相应的单元格设置为数字-372424

我认为这是因为Excel“聪明”,决定“05-0808”表示某种时间值或日期,并将字符串转换为相应的数值

在我的例子中,数据表示产品代码,这种转换是非常不可取的。 如果导出报表基础查询的输出(导出数据表),则不会发生此转换。(建议必须能够以防止转换的方式访问Excel格式的输出)

我尝试更改报告中字段的format属性,但没有“Text”选项,“Standard”的行为似乎与将其留空相同

有没有办法使用format()函数强制输出字符串? 如果是这样的话,当Excel仍然可以进行巧妙的转换时,这会有帮助吗


仅使用底层查询作为输出是一种选择,但并不理想,因为格式和分组都会丢失。将报表导出为文本格式是一场灾难,因为列没有分隔。

导出“'05-0880”而不是“05-0880”。

实际上,这更像是另一种方式。MS Access太笨,无法从报表中正确导出。您可以使用引号或撇号来保护数据;然而,正如你所知,这是相当丑陋的,需要后处理


我的解决方法是仔细设计一个查询,然后导出查询结果而不是报告。这将为您提供预期的结果。

请确保使用单引号,而不是其他撇号

其次。在字符串的开头添加一个撇号(')。如何导出excel文件?我尝试通过将报告中文本字段的控制源更改为=“””&[myfield],在代码/编号前面添加一个撇号,但这导致excel中的输出为“05-0880”,这并不理想,因为我希望避免对输出进行后处理file@TcKs我使用DoCmd.OutputTo acOutputReport,开头的撇号是excel中的“常用技巧”之一。工具“应该”继续它。下一种方法是导出后,用excel编程打开文件,并显式设置列的格式。从报表导出到excel没有什么意义,除了少数特殊情况(在12年多的专业Access编程中,我可能做过两次)。