0

我正在使用以下代码进行 excel 上传

 OleDbConnection sSourceConnection;
            string properties = "Excel 8.0; HDR=NO; IMEX=1;";//properties set for connection to excel
            string sSourceConstr = @"Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" + filePath + ";Extended Properties=\"" + properties + "\"";
            sSourceConnection = new OleDbConnection(sSourceConstr);//creating the OLEDB connection
            try
            {
                //select statement to select data from the first excel sheet
                string sql = string.Format("Select * FROM [{0}]", "Sheet1$");

                //commands to fill the dataset with excel data
                OleDbDataAdapter excelAdapter = new OleDbDataAdapter();
                OleDbCommand command = new OleDbCommand(sql, sSourceConnection);
                sSourceConnection.Open();
                excelAdapter.SelectCommand = command;
                excelAdapter.Fill(dSet, EXCEL_DATA);

我必须上传大约 300 条记录。一栏有一些文字评论。评论的长度从 10 个字符到 1000 个字符不等。但是所有超过 255 长度的评论都在该列中被截断。

我已经使用这篇文章Excel cell-values are truncated by OLEDB-provider来更改注册表设置,但它不起作用。

我还尝试了OleDB 和混合 Excel 数据类型后提到的所有内容:缺少数据,仍然没有任何效果。

4

2 回答 2

0

我使用的是 ACE 引擎,所以更新注册表的正确位置是

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Office\14.0\Access Connectivity Engine\Engines\Excel\TypeGuessRowsHKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Office\14.0\Access Connectivity Engine\Engines\Excel\TypeGuessRows

于 2013-03-18T09:10:59.230 回答
0

适用于 Microsoft Office 2010-2013-2016/365

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Office\14.0\Access Connectivity Engine\Engines\Excel

更好的是扫描文本“TypeGuessRows”,当你找到它时,结合 Excel,将其值设置为 0。我们在此位置找到了此行为的另一个重要位置

\HKEY_LOCAL_MACHINE \SOFTWARE\Microsoft\Office \ClickToRun\REGISTRY \MACHINE\Software \Wow6432Node \Microsoft \Office\16.0\Access Connectivity Engine\Engines\Excel.
于 2018-04-23T19:19:39.820 回答