これがACEが回避した後のあなたの姿だと思います
残念ながら、これらの設定はレジストリで定義されているため、接続文字列からImportMixedTypesまたはTypeGuessRowsを設定することはできません。ACE OleDbドライバーの場合、これらは次の場所に保存されます。
HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Office \ 14.0 \ Access Connectivity Engine \ Engines \ Excel
レジストリ内。したがって、接続文字列を単純化して、これらの拡張プロパティの一部を取り除くことができます。
TypeGuessRows
レジストリで0とTextに設定するとImportMixedTypes
、期待する動作が得られるはずです。
または、を使用Microsoft.Office.Interop.Excel
してファイルを読み取ることができます。サンプルコード:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Excel = Microsoft.Office.Interop.Excel;
namespace ExcelTut
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
Excel.Application xlApp = new Excel.Application();
Excel.Workbook xlWorkbook = xlApp.Workbooks.Open(@"D:/C.xlsx");
Excel._Worksheet xlWorksheet = xlWorkbook.Sheets[1];
Excel.Range xlRange = xlWorksheet.UsedRange;
int rowCount = xlRange.Rows.Count;
int colCount = xlRange.Columns.Count;
for (int i = 1; i <= rowCount; i++)
{
for (int j = 1; j <= colCount; j++)
{
MessageBox.Show(xlRange.Cells[i, j].Value2.ToString());
}
}
}
}
}
相互運用機能を介して読み取りExcelファイルから取得したコード