Выгрузить данные из html таблицы в в Excel - C#
Формулировка задачи:
Здравствуйте.
Есть файл в нем данные находятся в таблице <table> данные ,как мне из выгрузить в экзель подскажите пож-та
Думаю сделать так:
Спарсить таблицу (<table>) с данными из файла (1.html) результат поместить в datagridview или datatable
(куда будет удобно) потом уже в экзель.
Как вы думаете друзья это возможно реализовать?
Здравствуйте.
Есть файл в нем данные находятся в таблице <table> данные ,как мне из выгрузить в экзель подскажите пож-та
Решение задачи: «Выгрузить данные из html таблицы в в Excel»
textual
Листинг программы
using System; using System.Data.OleDb; using System.Data; using System.IO; using Excel = Microsoft.Office.Interop.Excel; class Program { static void Main(string[] args) { const string fileName = @"D:\мтт.htm"; const string connectionString= "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + fileName + ";Extended Properties=\"HTML Import;HDR=YES;IMEX=1\";"; if (!File.Exists(fileName)) { Console.WriteLine("HTML файл не найден"); Console.ReadKey(true); return; } OleDbConnection connection = new OleDbConnection(connectionString); connection.Open(); DataTable shema = connection.GetSchema("TABLES", new string[] {}); if (shema.Rows.Count == 0) { Console.WriteLine("В файле не найдено таблиц"); Console.ReadKey(true); return; } string tableName = (string)shema.Rows[0]["TABLE_NAME"]; string query = string.Format("SELECT * FROM [{0}]", tableName); OleDbDataAdapter adapter = new OleDbDataAdapter(query, connection); DataTable table = new DataTable(); adapter.Fill(table); connection.Close(); string excelFileName = @"D:\cyberforum.xlsx"; if (File.Exists(excelFileName)) File.Delete(excelFileName); Excel.Application application = new Excel.Application(); object missing = Type.Missing; application.Workbooks.Add(missing); Excel.Worksheet sheet = application.ActiveSheet as Excel.Worksheet; for (int i = 0; i < table.Columns.Count; i++) sheet.Cells[1, i + 1] = table.Columns[i].ColumnName; for (int i = 0; i < table.Rows.Count; i++) for (int j = 0; j < table.Columns.Count; j++) sheet.Cells[i + 2, j + 1] = table.Rows[i][j]; application.ActiveWorkbook.SaveAs(excelFileName, missing, missing, missing, missing, missing, Excel.XlSaveAsAccessMode.xlExclusive, missing, missing, missing, missing, missing); application.Quit(); /*--- Кому не лень может доделает код ---*/ /*string excelConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + excelFileName + @";Extended Properties=""Excel 12.0;HDR=YES;"""; OleDbConnection excelConnection = new OleDbConnection(excelConnectionString); string[] listFieldsName = new string[table.Columns.Count]; for (int i = 0; i < table.Columns.Count; i++) listFieldsName[i] = "[" + table.Columns[i].ColumnName + "]"; string fields = string.Join(", ", listFieldsName); string insertQuery = string.Format("INSERT INTO [Лист1$] ({0})", fields); string[] @params = new string[listFieldsName.Length]; for (int i = 0; i < table.Columns.Count; i++) @params[i] = "?" + table.Columns[i].ColumnName; string str = string.Join(", ", @params); insertQuery += string.Format(" VALUES ({0})", str); OleDbDataAdapter excelAdapter = new OleDbDataAdapter(); excelAdapter.InsertCommand = new OleDbCommand(insertQuery, excelConnection); for (int i = 0; i < @params.Length; i++) excelAdapter.InsertCommand.Parameters.Add(@params[i], OleDbType.VarChar, 255, listFieldsName[i]); Console.WriteLine(excelAdapter.Update(table));*/ } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д