C # Excel файл OLEDB читать HTML ИМПОРТ - PullRequest
5 голосов
/ 06 августа 2009

Я должен что-то автоматизировать для отдела финансов. У меня есть файл Excel, который я хочу прочитать, используя OleDb:

string connectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=A_File.xls;Extended Properties=""HTML Import;IMEX=1;""";

using (OleDbConnection connection = new OleDbConnection())
{
    using (DbCommand command = connection.CreateCommand())
    {
        connection.ConnectionString = connectionString;
        connection.Open();

        DataTable dtSchema = connection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);                        
        if( (null == dtSchema) || ( dtSchema.Rows.Count <= 0 ) )                        
        {                                
            //raise exception if needed                        
        }

        command.CommandText = "SELECT * FROM [NameOfTheWorksheet$]";

        using (DbDataReader dr = command.ExecuteReader())
        {
            while (dr.Read())
            {
                //do something with the data
            }
        }
    }
}

Обычно connectionstring имеет расширенное свойство "Excel 8.0", но файл не может быть прочитан таким образом, потому что он выглядит как HTML-файл, переименованный в .xls. когда я копирую данные из xls в новый xls, я могу прочитать новый xls с помощью E.P. установите «Excel 8.0».

Да, я могу прочитать файл, создав экземпляр Excel, но я бы не стал .. Любая идея, как я могу читать xls с помощью OleDb, не внося ручные изменения в xls или играя с диапазонами в конкретном Excel?

С уважением,

Michel

Ответы [ 3 ]

4 голосов
/ 14 августа 2009

Я задал этот же вопрос на другом форуме и получил ответ, поэтому я решил поделиться им здесь. Согласно этой статье: http://ewbi.blogs.com/develops/2006/12/reading_html_ta.html

Вместо использования имени листа вы должны использовать заголовок страницы в операторе выбора без $. SELECT * FROM [HTMLPageTitle]

1 голос
/ 17 августа 2010

Я столкнулся с той же проблемой. Как упоминалось ранее, это, похоже, HTML-файл, переименованный в .xls. Когда я копирую данные из xls в новый xls, я могу прочитать новый xls с помощью E.P. установить «Excel 8.0».

В этом случае файл не может быть сохранен в правильном формате. Поэтому мы должны преобразовать этот файл в правильный формат. Для этого используйте MS Office Excel 2007, нажмите File -> Convert. Файл будет автоматически преобразован в нужный формат.

1 голос
/ 30 марта 2010

Я искал так много решений, в итоге я нашел что-то действительно простое и легкое - чтобы импортировать файл XML в файл Excel, я сначала попытался преобразовать XML в HTML, используйте -

http://www.csharpfriends.com/Articles/getArticle.aspx?articleID=63

тогда я обнаружил, что могу легко изменить свой выходной файл как .xls вместо .html

        //create the output stream
        XmlTextWriter myWriter = new XmlTextWriter
("result.html", null);

тогда вывод - отличный файл Excel из моего файла данных XML.

надеюсь, это спасет твою работу.

...