0

我正在使用内部创建的 excel 导入工具。该工具应该读取一个 excel 电子表格并将结果导入 sql ce 数据库。我已经检查了数据库,现在在调试后知道问题出现在我从 excel 电子表格中获取值的时候。我的问题是返回的结果被截断。

当我在标记为“Here”的注释中检查我的代码时,rdr.GetValue(col).ToString() 已经被截断。我想知道是否需要做一些不同的事情来获得单元格的全部价值。

using (var cmd = _xlConn.CreateCommand())
{
    cmd.CommandText = "SELECT * FROM [" + entityType.Name + "$]";

    try
    {
        using (var rdr = cmd.ExecuteReader())
        {
            while (rdr.Read())
            {
                if (!rdr.IsDBNull(0))
                {
                    var id = Convert.ToInt32(rdr.GetValue(0));
                    var eid = Entity.InsertRecord(entityType.Name + "_" + id, entityType.ID, true);

                    map.Add(id, eid);

                    int col = 0;

                    foreach (var entityKey in _entityKeys.Where(ek => ek.EntityType_Fk == entityType.ID))
                    {
                        if (!rdr.IsDBNull(++col))
                        {
                            //-------------------------
                            //--------- HERE ----------
                            //-------------------------
                            EntityKeyData.InsertRecord(eid, entityKey.ID, rdr.GetValue(col).ToString());
                        }
                    }
                }
            }
        }
    }
}

这是我传入的数据:

<h1><span style="color:blue; margin: 10, 10, 10, 10; font-family:Arial;">You can drive
or walk on main street… Sometimes… When we allow it. Lalalalalalla lalallala lalalalal 
lalallalal allalalalalla lalallalalalalal alalallasldlal dldlaldsls dldlldl 
laldfolafjlkmn oiasfjadlfjalkfj lkajdflidja laisdjfolieanfldsn  ladllaldladsl 
aldllselasldeesl dfoaihfneal  adfajlkfmf alsiej</span></h1>

这是被截断的内容:

<h1><span style="color:blue; margin: 10, 10, 10, 10; font-family:Arial;">You can drive 
or walk on main street… Sometimes… When we allow it. Lalalalalalla lalallala lalalalal 
lalallalal allalalalalla lalallalalalalal alalallasldlal dldlaldsls dldlldl laldf

我对截断的文本进行了字符计数,结果是 255 这是一个常见问题吗?

4

1 回答 1

0

上面发布的链接帮助我找到了答案。我发现由于我使用 excel 作为源,读者将通过第一组列来为每列提供其数据长度。如果不是更长,则默认值为 255。我解决这个问题的方法是使用我的第一个数据行作为一个虚拟行,在将很长的列中,我添加了一个长字符串。

于 2013-10-21T22:03:43.863 回答