2015-04-20 3 views
0

Как экспортировать несколько таблиц на несколько листов Excel с помощью C#? Ниже код работает, но только для 1 html-таблицы.Экспорт таблиц Html в несколько листов Excel с использованием C#

Response.ContentType = "application/x-msexcel"; 
    Response.AddHeader("Content-Disposition", "attachment; filename=ExcelFile.xls"); 
    Response.ContentEncoding = Encoding.UTF8; 
    StringWriter tw = new StringWriter(); 
    HtmlTextWriter hw = new HtmlTextWriter(tw); 
    tbl.RenderControl(hw); 
    Response.Write(tw.ToString()); 
    Response.End(); 

Ниже приведены таблицы на * .aspx странице. И я хочу обе таблицы в одном excel с несколькими листами.

для примера: Таблица 1 в листе 1 таблица 2 находится в листе 2

<table id="tbl" border="1" runat="server" > 
       <tr> 
        <td>Product</td> 
        <td>Price</td> 
        <td>Available</td> 
        <td>Count</td> 
       </tr> 
       <tr> 
        <td>Bred</td> 
        <td>1 
        </td> 
        <td>2 
        </td> 
        <td>3 
        </td> 
       </tr> 
       <tr> 
        <td>Butter</td> 
        <td>4 
        </td> 
        <td>5 
        </td> 
        <td>6 
        </td> 
       </tr> 
      </table> 

    <table id="tbl2" border="1" runat="server" > 
       <tr> 
        <td>KD</td> 
        <td>Dabhi</td> 
        <td>Qnil</td> 
        <td>Dabhi</td> 
       </tr> 
       <tr> 
        <td>Bred</td> 
        <td>1 
        </td> 
        <td>2 
        </td> 
        <td>3 
        </td> 
       </tr> 
       <tr> 
        <td>Butter</td> 
        <td>4 
        </td> 
        <td>5 
        </td> 
        <td>6 
        </td> 
       </tr> 
      </table> 


    <asp:Button runat="server" ID="ExportToExcelButton" OnClick="ExportToExcelButton_Click" 
     Text="Export To Excel" /> 

ответ

2

В примере вы говорили, вы NOT создание Excel (или Excel рабочие листы), вместо того, чтобы вы пытаетесь открыть HTML-контент в формате Excel. Вот почему, даже если у вас есть таблицы TWO, они появятся на одном листе.

Используйте Microsoft's OpenXml SDK, с помощью которого вы можете создать любое количество листов и ввести данные в листы. Даже OpenXML SDK получил некоторые незначительные проблемы, когда дело доходит до типа даты (особенно при чтении данных из листов Excel). В таком случае вы можете обратиться к сторонним поставщикам автоматизации Excel, например SpreadSheetGear.

+0

Спасибо, Нет другого пути решения? либо с использованием C# или другого языка? –

+0

Используя C#, вы можете использовать OpenXML SDK. Существует еще один способ решения без использования OpenXml (или сторонних инструментов), то есть путем создания собственного XML и отправки его в ответ (http://www.codeproject.com/Articles/532589/ExportplustoplusExcelplus-e-plusMultipleplus) , Я не думаю, что это общий подход, поэтому я бы не предложил его. – ramiramilu

0

Рабочий раствор для GridViews здесь:

http://www.aspsnippets.com/Articles/Exporting-Multiple-GridViews-To-Excel-SpreadSheet-in-ASP.Net.aspx

Вы можете также посмотреть здесь какой-то советуют:

Add table to second sheet of Excel using C#

Вы можете использовать библиотеку EPPLUS (бесплатно) вместо взаимодействия, поскольку он имеет много функциональных возможностей:

http://epplus.codeplex.com/

+0

Спасибо за ваше возвращение. Но, я ищу с таблицами HTML, а не с сетками. :) Я действительно оценил ваши усилия здесь. –

+0

Нет проблем, поэтому использование некоторой библиотеки, такой как EPPLUS, может быть для вас решением вместо Interop, оно будет иметь большую гибкость. – demonplus

+0

Я понятия не имею о EPPLUS, возможно ли конвертировать HTML-таблицы в excel с помощью этой библиотеки? Если да, то как? –

Смежные вопросы