Сохранить IList <T>или IQueryable <T>в Excel - C # - PullRequest
3 голосов
/ 13 марта 2009

Я создаю отчет через Linq to SQL и отображаю его на веб-сайте.

Мне нужно сохранить отчет в MS Excel (или .csv) и отправить его пользователю по электронной почте.

Любые идеи о том, как сохранить его как Excel или .csv?

.NET 3.5 / C #

РЕДАКТИРОВАТЬ:

Gridview взломать работает отлично. Если вы используете AJAX на странице, убедитесь, что вы добавили PostBaseTrigger на панель обновлений, чтобы вызвать FULL POSTBACK, иначе он не будет работать.

<asp:UpdatePanel ID="UpdatePanel1" runat="server">
    <ContentTemplate>
        <asp:Button ID="Button1" runat="server" Text="Export Grid" 
            onclick="Button1_Click" />
    </ContentTemplate>
    <Triggers>
        <asp:PostBackTrigger ControlID="Button1" />
    </Triggers>
</asp:UpdatePanel>

Я также нашел библиотеку для создания книг Excel XML в .NET , однако это не так просто, как принятое решение.

Ответы [ 2 ]

5 голосов
/ 13 марта 2009

Перейти к этой статье на LINQtoCSV на Code Project . Затем откройте исходный код в VS и закомментируйте строку 201 в FieldMapper.cs, чтобы исправить ошибку, которая искажает порядок столбцов:

//Array.Sort(m_IndexToInfo);

Перекомпилируй и все готово.

(я нашел это из комментариев к статье)

Затем использовать:

CsvFileDescription outputFileDescription = new CsvFileDescription
{
    SeparatorChar = '\t', // tab delimited
    FirstLineHasColumnNames = false // no column names in first record
};

CsvContext cc = new CsvContext();

cc.Write(
    YOUR_IQUERYABLE_RESULT_HERE,
    "filename.csv",
    outputFileDescription);

Я сделал упрощенный метод расширения IQueryable <T>. WriteToFile (path), но у меня его нет на этой машине.

2 голосов
/ 13 марта 2009

Этот взлом gridview - самое простое решение, которое я нашел.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...