我正在使用内部创建的excel导入工具。该工具应该读取excel电子表格,并将结果导入sql-ce数据库。我已经检查了数据库,现在在调试后知道,在我从excel电子表格中获得值的时候,问题就来了。我的问题是返回的结果被截断。
当我在rdr标记为"Here"的注释处检查代码时。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。这是一个常见的问题吗?
上面发布的链接帮助我找到了答案。我发现,由于我使用excel作为我的来源,读者将浏览第一组列,给出每列的数据长度。如果不是更长,则默认值为255。我的方法是使用我的第一个数据行作为伪行,在将非常长的列中,我添加了一个长字符串。