3

私は ExcelLibrary dll を使用しています。

ヘッダー行をフリーズしたい..これを行う方法を提案できる人はいますか?

私は次のコードを試しました..

Imports System.Data.SqlClient
Imports ExcelLibrary
Imports ExcelLibrary.SpreadSheet



Partial Class DownloadExcel
Inherits System.Web.UI.Page

Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load
    Try
        Dim wb As New Workbook()
        Dim sheetrowcounter As Integer
        sheetrowcounter = 0
        Dim sheet As New ExcelLibrary.SpreadSheet.Worksheet("ExcelSheet")

        sheet.Cells(sheetrowcounter, 0) = New Cell("DELIVERY MONITORING SUMMARY(PROJECT GRANDE) ")
        sheet.Cells(sheetrowcounter, 2) = New Cell("")

        sheet.Cells(sheetrowcounter, 3) = New Cell("Report Date: '" & DateTime.Now.ToString("yyyy/MM/dd H:mm:ss tt") & "                                                                                                                   ")

        sheetrowcounter += 1
        sheetrowcounter += 1
        sheet.Cells(sheetrowcounter, 0) = New Cell("Sl No")
        sheet.Cells.ColumnWidth(0) = 10000
        sheet.Cells(sheetrowcounter, 1) = New Cell("Name")
        sheet.Cells.ColumnWidth(1) = 6000

        sheetrowcounter += 1
        Dim t As DataTable = Session("exceltable")
        For i As Integer = 1 To t.Rows.Count - 1
            Try
                sheet.Cells(sheetrowcounter, 0) = New Cell(t.DefaultView.Item(i)(0))
                sheet.Cells(sheetrowcounter, 1) = New Cell(t.DefaultView.Item(i)(1))
                sheetrowcounter += 1
            Catch ex As Exception

            End Try

        Next
        sheet.Cells(0, 0).Format.FormatString = "freeze"

        wb.Worksheets.Add(sheet)


        Response.Clear()
        Response.ContentType = "application/vnd.ms-excel"
        Response.AddHeader("content-disposition", "attachment;filename=DeliveryMonitoringSummaryDaily.xls")

        Dim m As System.IO.MemoryStream = New System.IO.MemoryStream()
        wb.SaveToStream(m)
        m.WriteTo(Response.OutputStream)

    Catch ex As Exception

    End Try
End Sub

End Class

Session("exceltable") オブジェクトに 2 つの列といくつかの行を持つ Datatable を格納しています。

4

2 に答える 2

2

指定された Excel ライブラリを使用した経験はありませんが、http://epplus.codeplex.com/ サイトで無料で入手できる EPPlus ライブラリに移行することを提案できます。これは、明確な API を備えた非常に使いやすいライブラリであり、サーバー上で高度な Excel 2007/2010 スプレッドシートを作成するように設計されています。いくつかの生産プロジェクトでそれをうまく使用しました。それを使用すると、ExcelSheet.View.FreezePanes メソッドを使用して必要なものを実現できます。私の答えがあなたの質問に答えないことは理解していますが、それはあなたの問題の代替解決策として扱うことができます(指定したExcelライブラリで必要なものを達成できるかどうかは本当にわかりません)。

于 2013-06-17T15:32:41.837 に答える
-1

これを試して:

Dim e As Worksheet
...
e.Application.ActiveWindow.SplitRow = 1
e.Application.ActiveWindow.FreezePanes = True
于 2013-06-17T21:00:46.363 に答える