Member 14904864 Ответов: 3

Экспорт текстов, введенных в текстовые поля в ASP.NET HTML-таблица в excel через microsoft.office.interop.excel (или любое другое предложение)


There is a table on the website and users enter data in the cells of the table. I edited the ready codes to pull the data entered by each user to different pages as follows. But the problem is: there are a lot of(2000) cells and I have to match them one by one in the code. I think this should be an easier way. I am waiting for your suggestions to me. (Sql will not be used) Thank you.


Что я уже пробовал:

<pre><td class="auto-style6">%<asp:TextBox ID="txtC7" runat="server" Width="28px"></asp:TextBox>
        </td>
        <td class="auto-style7">%<asp:TextBox ID="txtD7" runat="server" Width="28px"></asp:TextBox></td>
    </tr>
    <tr>
        <td class="auto-style5">(%)</td>
        <td class="auto-style6">%<asp:TextBox ID="txtC8" runat="server" Width="28px"></asp:TextBox></td>
        <td class="auto-style7">%<asp:TextBox ID="txtD8" runat="server" Width="28px"></asp:TextBox></td>
    </tr>


<pre>private static Microsoft.Office.Interop.Excel.Workbook mWorkBook;
    private static Microsoft.Office.Interop.Excel.Sheets mWorkSheets;
    private static Microsoft.Office.Interop.Excel.Application oXL;
    object mv= System.Reflection.Missing.Value;

    protected void Button1_Click(object sender, EventArgs e)
    {
        oXL = new Microsoft.Office.Interop.Excel.Application();
        oXL.Visible = true;
        oXL.DisplayAlerts = false;

        string path = "D:\\output.xls";
        if (!File.Exists(path))
        {
            mWorkBook = oXL.Workbooks.Add();
        }
        else
        {
            mWorkBook = oXL.Workbooks.Open(path, 0, false, 5, "", "", false, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "", true,
                false, 0, true, false, false);
        }
        mWorkSheets = mWorkBook.Worksheets;

        Microsoft.Office.Interop.Excel.Worksheet mWSheet = (Worksheet)mWorkBook.Worksheets.Add(mv, mv, mv, mv);
        mWSheet.Name = DateTime.UtcNow.ToString().Replace(":", "-"); //Replace(":", String.Empty);
        mWSheet.Range["B8"].Value = "(%)";
        mWSheet.Range["C7"].Value = "%" + txtC7.Text;
        mWSheet.Range["C8"].Value = "%" + txtC8.Text;
        mWSheet.Range["D7"].Value = "%" + txtD7.Text;
        mWSheet.Range["D8"].Value = "%" + txtD8.Text;

        mWorkBook.SaveAs(path, Microsoft.Office.Interop.Excel.XlFileFormat.xlWorkbookNormal,
        mv, mv, mv, mv, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlExclusive,
        mv, mv, mv,
        mv, mv);

        mWorkBook.Close(mv, mv, mv);
        mWSheet = null;

        mWorkBook = null;

        oXL.Quit();
        GC.WaitForPendingFinalizers();
        GC.Collect();
        GC.WaitForPendingFinalizers();
        GC.Collect();
    }

3 Ответов

Рейтинг:
2

Sandesh M Patil

https://www.codeproject.com/Questions/65930/How-to-export-textbox-values-to-excel-sheet


Richard Deeming

Как было сказано в решении 1, это не сработает в будущем. ASP.NET применение.

Рейтинг:
1

Sandeep Mewara

Ну, вы можете попробовать экспортировать с помощью JavaScript. Не точное решение, но даст вам достаточно направления, чтобы начать работу: Импорт и экспорт назначений Outlook (с использованием JavaScript)[^]

Вам нужно будет найти эквивалент excel, а затем попытаться экспортировать идею suing above.

ПС: Однако это решение предполагает, что в клиентской системе установлена эта сборка и Outlook. Если это не так, вам нужно найти какую-то третью сторону, как предложил Дейв.


Рейтинг:
0

Dave Kreskowiak

Вы не можете использовать Office Interop в ASP.NET применение. Он не поддерживается, потому что Office не поддерживает "повторный вход". Это означает, что несколько сеансов взаимодействия с Excel могут завершиться неудачей.

Конечно, он будет отлично работать на вашей машине для разработчиков. Вы-один пользователь, тестирующий приложение, но когда вы запускаете его в производство с несколькими пользователями, использующими один и тот же код, вы столкнетесь с проблемой.

Для записи листа Excel необходимо использовать другую библиотеку, например библиотеку OpenXML или ClosedXML. Просто погуглите их, и вы найдете их и множество примеров того, как их использовать.