OleDBConnection读取Excel数据为null的解决办法

连接字符串:

ADOConnection1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+
       edit1.Text+';Extended Properties="excel 8.0;IMEX=1;HDR=YES";Persist Security Info=True';

1。excel的连接字串中的扩展属性必须包含IMEX=1;

2.修改注册表中的HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Excel\TypeGuessRows的值为0。TypeGuessRows的系统默认值为8,表示系统从文件中的前8行数据中采样取得数据类型。如果前8行中含有数字类型又有文本类型,采样的数据类型为数目多的类型。例如前8行中有5行数字,3行文本,则返回5行数字,3行为空。如果4行数字,4行文本,则返回4行数字类型,4行为空。8行以后的数据类型若和采样类型一样,则返回真实数据,否则返回空
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您好!对于Revit二次开发来读取Excel,可以使用Revit API和.NET Framework中的相关功能来实现。 首先,您需要使用Revit API中的Document类来打开Revit项目文件。然后,可以使用.NET Framework中的System.IO和System.Data命名空间来读取Excel文件。 以下是一个简单的示例代码,演示了如何使用Revit API和.NET Framework来读取Excel文件中的数据: ```csharp using Autodesk.Revit.DB; using System; using System.Data; using System.Data.OleDb; namespace RevitExcelReader { public class ExcelReader { public DataTable ReadExcel(string filePath) { // 使用OleDb连接字符串打开Excel文件 string connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + filePath + ";Extended Properties='Excel 12.0 Xml;HDR=YES;IMEX=1;'"; using (OleDbConnection connection = new OleDbConnection(connectionString)) { connection.Open(); // 获取Excel文件中的第一个工作表 DataTable dataTable = connection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null); string sheetName = dataTable.Rows[0]["TABLE_NAME"].ToString(); // 从工作表中查询数据 OleDbCommand command = new OleDbCommand("SELECT * FROM [" + sheetName + "]", connection); using (OleDbDataAdapter adapter = new OleDbDataAdapter(command)) { DataTable excelData = new DataTable(); adapter.Fill(excelData); return excelData; } } } } public class RevitExcelReader { public void ReadExcelInRevit(string excelFilePath) { // 获取当前打开的Revit文档 Document document = Revit.ActiveUIDocument.Document; // 调用ExcelReader类读取Excel数据 ExcelReader excelReader = new ExcelReader(); DataTable excelData = excelReader.ReadExcel(excelFilePath); // 在Revit中处理您的Excel数据,例如创建元素、修改参数等 // 这里只打印Excel数据的内容到Revit的输出窗口 foreach (DataRow row in excelData.Rows) { foreach (DataColumn column in excelData.Columns) { string cellValue = row[column].ToString(); TaskDialog.Show("Revit Excel Reader", cellValue); } } } } } ``` 请注意,以上代码只是一个基本示例,并且可能需要根据您的具体需求进行修改和扩展。在实际开发中,您可能还需要处理Revit元素和Excel数据之间的映射关系,以便将数据正确地应用到Revit模型中。 希望这个示例能帮助到您!如有任何问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值