ASP.NET把excel表的数据导入到SQL数据库,但数据不一样,为什么?

cenny_1996 2012-04-08 05:35:37
在Excel表的某列有这样的内容:69.23%。读到数据库中变成0.692307692307692。数据库的字段是Varchar类型。我想在数据库的也是69.23%。但不知什么原因啊?导入的过程中会计算?所以变成0.692307692307692?
...全文
277 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
cenny_1996 2012-04-12
  • 打赏
  • 举报
回复
已解决
cenny_1996 2012-04-11
  • 打赏
  • 举报
回复
在数据库是没问题了,SELECT CAST(CAST(Yewuzhunquelv * 100 AS numeric(10, 2)) AS varchar(50)) + '%' AS Yewuzhunquelv FROM Tdefen 可以查询数据数据时69.00%。但在ASP.NET就搞不懂格式,这样string scd2 = "SELECT [Banzu], [Xingming],CAST(CAST(Yewuzhunquelv * 100 AS numeric(10, 2)) AS varchar(50)) + '%' AS Yewuzhunquelv from Tdefen。不是没咧都要这样,我只要其中一列Yewuzhunquelv 就行。格式怎样啊,搞半天了。
cenny_1996 2012-04-10
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 dr592112441 的回复:]
引用 8 楼 的回复:

引用 7 楼 的回复:
0.692307692307692 写到数据库再转换


我设想也只有这样了。能在从数据库里面读取出来的时候转换么?在SQL语句里注解转换?怎么转呢?比如:
SELECT [Banzu], [Xingming], [Zonghedefen] FROM [Tdefen] where [Xingming]='" + strgonghao ……
[/Quote]
研究半天还是为搞明白,格式未弄懂。是在sQL语句里吗?格式怎样?string str=“SELECT [Banzu], [Xingming], [Zonghedefen] FROM [Tdefen] where [Xingming]='" + strgonghao”
cenny_1996 2012-04-10
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 的回复:]
在你要设置的那列在绑定事件里
e.Row.Cells[0].Attributes.Add("style","vnd.ms-excel.numberformat:@");
[/Quote]
貌似可以,能否说的更具体些。是Gridview绑定事件?
cenny_1996 2012-04-09
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]
0.692307692307692 写到数据库再转换
[/Quote]

我设想也只有这样了。能在从数据库里面读取出来的时候转换么?在SQL语句里注解转换?怎么转呢?比如:
SELECT [Banzu], [Xingming], [Zonghedefen] FROM [Tdefen] where [Xingming]='" + strgonghao + "' and [Yuefen]='" + stryuefen + "' " 。如果数据库字段 Zonghedefen的值就是 0.692307692307692,要怎样才能在gridview显示69.00?另外想按四舍五入呢?是0.695307692307692就显示70.00?
Mirror然 2012-04-09
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 的回复:]

在你要设置的那列在绑定事件里
e.Row.Cells[0].Attributes.Add("style","vnd.ms-excel.numberformat:@");
[/Quote]

A+
孟子E章 2012-04-09
  • 打赏
  • 举报
回复
在你要设置的那列在绑定事件里
e.Row.Cells[0].Attributes.Add("style","vnd.ms-excel.numberformat:@");
Mirror然 2012-04-09
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 的回复:]

引用 7 楼 的回复:
0.692307692307692 写到数据库再转换


我设想也只有这样了。能在从数据库里面读取出来的时候转换么?在SQL语句里注解转换?怎么转呢?比如:
SELECT [Banzu], [Xingming], [Zonghedefen] FROM [Tdefen] where [Xingming]='" + strgonghao + "' and [Yue……
[/Quote]

CONVERT(decimal(10, 2), CONVERT(decimal, a) / CONVERT(decimal, b) * 100)) + '%'
nfclass 2012-04-08
  • 打赏
  • 举报
回复
0.692307692307692 写到数据库再转换
  • 打赏
  • 举报
回复
你应该断点看看,在读取EXCEL的时候,该列是否已经被转化,如果是的话,你可以另外处理
cenny_1996 2012-04-08
  • 打赏
  • 举报
回复
貌似Excel只要输入数字都数字数据?另,总不能叫别人不要这样做Excel表吧?有其他方法解决么?
cenny_1996 2012-04-08
  • 打赏
  • 举报
回复
没用过Excsl,咋整?
hyrjlzw 2012-04-08
  • 打赏
  • 举报
回复
Excel中该列数据类型设为 文本
cenny_1996 2012-04-08
  • 打赏
  • 举报
回复
代码如下:
..............
for (int i = 0; i < myDs.Tables[0].Rows.Count; i++)
{
//判断excel第一列是否为空,为空,则不导入。
object a = myDs.Tables[0].Rows[i].ItemArray[0].ToString();
if (myDs.Tables[0].Rows[i].ItemArray[0].ToString() == "" || myDs.Tables[0].Rows[i].ItemArray[0].ToString() == "序号")
{
;
}
//第一列不为空
else
{ //判断是否有重复项目
string conn1 = "Data Source=(local);Database=brcm;User ID=sa;Password=sa";
SqlConnection thisConnection = new SqlConnection(conn1);
thisConnection.Open();
string isExistString = "SELECT * FROM ContractList WHERE Contract_Number='" + myDs.Tables[0].Rows[i].ItemArray[3].ToString() + "'";
SqlCommand testExistCommand = new SqlCommand(isExistString, thisConnection);
SqlDataAdapter thisAdapter = new SqlDataAdapter(isExistString, thisConnection);
DataSet thisDataSet = new DataSet();
thisAdapter.Fill(thisDataSet, "ContractList");
DataRowCollection rows = thisDataSet.Tables["ContractList"].Rows;

if (rows.Count == 0)//不存在,则导入
{

strSql = "insert into ContractList(Simple_Number,Contract_Number,Contract_Type,Contract_Date,Project_Manager,Customer_Company,Contract_Name,Contract_Amount,Fu_Number) values ('";
strSql += myDs.Tables[0].Rows[i].ItemArray[0].ToString() + "', '";//序号,简易编号
strSql += myDs.Tables[0].Rows[i].ItemArray[3].ToString() + "', '";//合同编号
strSql += myDs.Tables[0].Rows[i].ItemArray[7].ToString() + "', '";//合同类型
strSql += myDs.Tables[0].Rows[i].ItemArray[1].ToString() + "', '";//签约日期
strSql += myDs.Tables[0].Rows[i].ItemArray[2].ToString() + "', '";//负责人
strSql += myDs.Tables[0].Rows[i].ItemArray[4].ToString() + "', '";//需方单位名称
strSql += myDs.Tables[0].Rows[i].ItemArray[5].ToString() + "', '";//安装地点
strSql += myDs.Tables[0].Rows[i].ItemArray[6].ToString() + "', '";//合同总金额
strSql += myDs.Tables[0].Rows[i].ItemArray[8].ToString() + "')";//附号
countContract++;
myCmd = new OleDbCommand(strSql, conn);
myCmd.ExecuteNonQuery();
}
else//存在,提示有重复项目,不导入。
{
Response.Write("");
}
thisAdapter.Dispose();
thisConnection.Close();

}
}
conn.Close();
Response.Write("");
#endregion


netstudy0105 2012-04-08
  • 打赏
  • 举报
回复
你导入的时候吧69.23%当做字符串处理就行了,别当数据

62,268

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧