Я пытаюсь получить DataTable
из файла .xls. Ниже мой код:
OleDbConnection MyConnection = null;
DataSet DtSet = null;
OleDbDataAdapter MyCommand = null;
MyConnection = new OleDbConnection("provider=Microsoft.Jet.OLEDB.4.0; Data Source='" + path + "';Extended Properties=Excel 8.0;");
//path is where the .xls file located
ArrayList TblName = new ArrayList();
MyConnection.Open();
DataTable schemaTable = MyConnection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });
foreach (DataRow row in schemaTable.Rows)
{
TblName.Add(row["TABLE_NAME"]);
}
MyCommand = new System.Data.OleDb.OleDbDataAdapter("select * from [" + TblName[0].ToString() + "] order by Material", MyConnection);
DtSet = new System.Data.DataSet();
MyCommand.Fill(DtSet);
MyCommand.FillSchema(DtSet, SchemaType.Source);
DataTable dt = new DataTable();
dt = DtSet.Tables[0];
MyConnection.Close();
Проблема в том, что: В моей таблице есть некоторые несовместимые строки , что означает , что они не следуют за другими строками данных .
Скажем, в столбце А у меня есть клетки, которые должны быть такими:
105161610
146161701
196171717
.........
То есть он должен иметь тип данных Int32
.
Это большинство ячеек столбца ..
У меня также есть несколько других ячеек (все еще в том же столбце), которые выглядят так:
ABC9012
KDJ0981
KLP0001
.......
Они как-то следуют string
типу данных.
Когда я выполняю код, я могу только Select
ячейки типа int
, в то время как ячейки, имеющие другой тип (string
), устанавливаются вместо null
. Хотя в моем коде я в основном установил select *
явно.
Может кто-нибудь посоветовать мне, как последовательно извлекать оба типа данных (вместо 1, как то, что происходит сейчас)?