C# C、 如何在Ace.OleDB中读取时更改数据类型
我需要读取一个Excel文件,该文件在同一列中包含一些空白单元格和一些超过255个字符的单元格。我尝试将注册表值TypeGuessRows更改为“0”,结果成功,但无法更改服务器上的注册表 这是我的连接字符串:C# C、 如何在Ace.OleDB中读取时更改数据类型,c#,.net,excel,oledb,C#,.net,Excel,Oledb,我需要读取一个Excel文件,该文件在同一列中包含一些空白单元格和一些超过255个字符的单元格。我尝试将注册表值TypeGuessRows更改为“0”,结果成功,但无法更改服务器上的注册表 这是我的连接字符串: StrConnXLS = "provider=Microsoft.ACE.OLEDB.12.0;Data Source='" + SFileXLS + "';Extended Properties='Excel 12.0;HDR=YES;IMEX=YES;MAXSCANROWS=0;'"
StrConnXLS = "provider=Microsoft.ACE.OLEDB.12.0;Data Source='" + SFileXLS + "';Extended Properties='Excel 12.0;HDR=YES;IMEX=YES;MAXSCANROWS=0;'";
我通过将表传递给如下数据表来读取该表:
using (OleDbCommand cmd = new OleDbCommand("SELECT * FROM [" + tabela + "]", con))
{
con.Open();
//conn.Open();
//Executando o UPDATE
cmd.ExecuteNonQuery();
OleDbDataAdapter oleAdapter = new OleDbDataAdapter();
oleAdapter.SelectCommand = cmd;
planilha = new DataTable("");
oleAdapter.FillSchema(planilha, SchemaType.Source);
oleAdapter.Fill(planilha);
//Fechando a conexão
con.Close();
}
我读起来就像:
foreach (DataRow row in planilha.Rows)
{
string dostuff = row["test"].ToString();
}
但每次它到达超过255个字符的文本时,它都会剪切文本。
这有什么办法可以改变它吗?我从来没有找到过。事实上,这真是讨厌。OLEDB会扫描前8行数据,并对数据类型进行假设 IMEX=1 not YES会意外地强制它找到的任何混合行为文本 据我所知,此驱动程序将忽略连接字符串中的ImportMixedTypes、TypeGuessRows和MaxScanRow。年长的喷气式飞机驾驶员支持他们。我认为这是倒退的一步 如果您的文件有一个标题行,您可以尝试HDR=No,这将强制它为文本,因为第一行是文本,但我认为这不会帮助您解决255个字符的限制问题 您可以尝试使用
SELECT * FROM [<SheetName>$<optional range>]
例如,从[MySheet$A1:A1]中选择*
但是在一个大文件上这将非常慢