Выгрузить данные из 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));*/
}
}