自动更正白痴的Excel电子表格

我有一个无法正确格式化电子表格的客户。 我已经问了他们十次,要遵循一个明智的指导方针(就像在格式中填写正确的数据表),但是他们缺乏智慧或者专业知识或者两者兼而有之,他们不能/不会这样做。

我为电子表格设置了ODBC连接,并且除了包含产品计数或产品价格的列之外,还会提取数据。 除非我在Excel中手动将每个列的types设置为“Number”,否则在显示结果的ASP页面中,这些值将显示为空值。

是否有可能编写一个将改变数据types的SQL语句? 我不关心它,只要ADODB.Recordset将显示所有列的值,将每列转换为一个string。

码:

<% Dim MM_SQLSource MM_SQLSource = "SELECT * FROM [Inventory$]" Set rsGetExcelInfo = Server.CreateObject("ADODB.Recordset") rsGetExcelInfo.ActiveConnection = MM_Excel_Connect rsGetExcelInfo.Source = MM_SQLSource rsGetExcelInfo.CursorType = 0 rsGetExcelInfo.CursorLocation = 2 rsGetExcelInfo.LockType = 1 rsGetExcelInfo.Open() %> 

这可能不完全是您客户的错。 有时Excel有自己的想法应该如何格式化列。 例如,如果您有一个包含邮政编码的列,其中一些使用Plus 4,而另一些则不使用,那么对于如何对列进行格式化,这几乎是一个垃圾邮件。

至于你原来的问题,根据这个网站 ,CONVERT是一个有效的SQL标量函数,所以也许类似

 SELECT CONVERT(BadField, SQL_CHAR) AS FixedField FROM [Inventory$] 

可能工作?

我的第一个倾向是build议使用COM从电子表格中读取数据。 我敢肯定,你将能够读取每个单元格的格式并相应地处理它,但是我总是通过COM发现Excel是困难的,而且速度也不是非常快(我只是从C ++中完成的)。

不幸的是AFAIK所有的ODBC / ADO / OLEDB /任何小工具在检查了几行后都会猜测每一列的数据types(默认值是8,我相信)。

有可用于Python [1] /Perl/PHP/.Net等的软件包/模块/库,可以让您逐个单元格读取Excel文件。 更好的将为每个单元格提供值和细粒度types(text / numeric / date / boolean / error / empty) – 使用该信息加上每个列中应该包含的内容的知识,您可以做一个修理工作。

[1]例如http://pypi.python.org/pypi/xlrd其中我是作者…在被(a)ODBC问题(b)“save-as-CSV”问题( c)COM问题

如何停止使用Excel,并将其放入用户数据input的某种forms的真正的数据库?

将电子表格放到数据库中不是太困难。 访问将会很好。 或者使用SQL Server后端和Access前端。 或者,如果你可以处理更多的努力,做一个networking前端。

你会发现,做这件事情越困难,你的数据越糟糕,越多的错误,不一致和遗漏。

请大家帮忙,把这件事正式化。