整数为零,上传到SQL Server时将忽略“0”
我有一个页面,允许用户上传一个Excel文件,并将数据插入Excel文件到SQL Server。 现在我有一个小问题,在Excel文件中有一个值为“001”,“029”,“236”的列。 当它插入到SQL Server时,前面的零会在SQL中被忽略,所以数据将变成“1”,“29”,“239”。 SQL中列的数据types是varchar(10)。 如何解决这个问题?
Excel似乎自动将单元格值转换为数字。 在处理之前,请尝试在Excel工作表中用单引号前缀单元格内容。 例如'001
。 如果你不能相信用户这样做,使用一个string格式化例程左填充数字零。
有些东西必须将excel单元格中的数据从一个string转换为一个整数。 你如何执行插入?
如果用户在Excel中input001,它将被转换为数字1。
如果用户input“001”到Excel中,它将作为文本保存在单元格中。
如果单元格的格式为数字格式“@”,那么当用户input001时,将以文本“001”input。 “@”数字格式告诉Excel单元格是一个文本单元格,并且任何条目(不pipe它看起来像是数字,date,时间,分数等等)都应该简单地放置在单元格中 – 作为文本细胞。
你能告诉你的用户用“@”预先格式化这个列吗? 这通常是处理这种情况的最可靠的方式,因为用户不必记得input“001”。
也许为Excel单元格设置数据types“文本”将有所帮助。
Excel可能是这里的罪魁祸首。 尝试转换您的文件到CSV,看看它是如何出来的。 如果前导零在新的CSV文件中消失,Excel是问题所在。
Excel总是这样做,而且它是一个新生事物。 我知道有三种解决方法:
-
在Excel中的任何单元格input数据之前,将单元格格式化为文本格式(如果需要,可以做一个整列)。只有在控制电子表格和用户时,这才起作用:-)。
-
假设您将在Excel数据中混合使用数字和/或文本,并在导入前在Excel中对其进行修复:在电子表格中添加一列,并使用TEXT()函数将该数字转换为文本,如in = TEXT (A2,“000”); 填写下来。 还假定您可以编辑工作表。
-
假设你必须在你的代码中插入数字。 根据你如何加载数据,这可能发生在T-SQL或其他代码中。 在TSQL中,这个expression式的作用是用零填充3个字符的宽度:right('000'+ cast(2 as varchar(3)),3)
- 访问path“C:\\ Program Files(x86)\\ IIS Express \\ Excel.xlsx”被拒绝
- 将asp.net Textbox数据写入Excel表单
- C# – 从ASP.Netfile upload更新SQL表
- 使用SQL批量复制来填充数据库表
- 为什么我的StreamWriter Response输出在Excel中产生垃圾口音,但在记事本中看起来不错?
- 错误,而在c#web应用程序中创buildExcel文件
- 100%基于服务器的Excel在浏览器中。 什么是最好的方式/产品?
- 如何显示在asp.net c#中导出到Excel后的GridView?
- 像在ASP.NET应用程序中筛选Excel