Re[2]: Работа с excell-ем из .NET
От: Аноним  
Дата: 17.06.04 07:11
Оценка:
Здравствуйте, Ransom Stark, Вы писали:

RS>Здравствуйте, Аноним, Вы писали:


А>>Как можно работать с excell-ем из C#? в частности интересует как можно из excell-файла вытащить из каждой закладки DataTable с данными?

RS>я делаю примерно так.
RS>
RS>        private const int SheetNumber = 0;

RS>        private static string GetConnectionString(string path)
RS>        {
RS>            return string.Format(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties=""Excel 8.0;HDR=No;IMEX=1""", path);
RS>        }

RS>        private static string GetSheetName(OleDbConnection connection)
RS>        {
RS>            System.Data.DataTable sheets = connection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[]{null, null, null, "TABLE"});
RS>            string result = "[" + sheets.Rows[SheetNumber]["TABLE_NAME"].ToString() + "]";

RS>            return result;
RS>        }

RS>        private static OleDbCommand GetCommand(OleDbConnection connection)
RS>        {
RS>            string commandText = "SELECT * FROM " + GetSheetName(connection);
RS>            OleDbCommand result = new OleDbCommand(commandText, connection);

RS>            return result;
RS>        }

RS>        public static DataTable GetExcelTable(OleDbConnection connection)
RS>        {
RS>            connection.Open();
RS>            OleDbCommand command        = GetCommand(connection);
RS>            OleDbDataAdapter adapter    = new OleDbDataAdapter(command);

RS>            DataSet ds = new DataSet();
RS>            adapter.Fill(ds);

RS>            return ds.Tables[0];
RS>        }
RS>


можно-то можно, так и делается, только данные не всегда правильно интерпретируются, о чем собсно выше и написано
плюс данный код можно упростить, так как нет необходимости создавать DataSet в adapter.Fill можно и DataTable передавать
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.