web-dev-qa-db-ja.com

インターネットからExcelファイルを開くと、空白のExcelウィンドウが開きます

最近、GridViewをExcelファイルにダンプしてインターネットからダウンロード/開く方法が、新しいWindowsUpdateで機能しなくなりました。

私のコードは、StringWriter、HTMLTextWriter、およびRenderControlを使用してGridViewからXLSファイルにダンプします。 http://www.aspsnippets.com/Articles/Export-GridView-to-Excel-in-ASPNet-with-Formatting-using-C-andから次のコードを使用する一般的なアプローチ-VBNet.aspx

Protected Sub ExportToExcel(sender As Object, e As EventArgs)
    Response.Clear()
    Response.Buffer = True
    Response.AddHeader("content-disposition", "attachment;filename=GridViewExport.xls")
    Response.Charset = ""
    Response.ContentType = "application/vnd.ms-Excel"
    Using sw As New StringWriter()
        Dim hw As New HtmlTextWriter(sw)

        'To Export all pages
        GridView1.AllowPaging = False
        Me.BindGrid()

        GridView1.HeaderRow.BackColor = Color.White
        For Each cell As TableCell In GridView1.HeaderRow.Cells
            cell.BackColor = GridView1.HeaderStyle.BackColor
        Next
        For Each row As GridViewRow In GridView1.Rows
            row.BackColor = Color.White
            For Each cell As TableCell In row.Cells
                If row.RowIndex Mod 2 = 0 Then
                    cell.BackColor = GridView1.AlternatingRowStyle.BackColor
                Else
                    cell.BackColor = GridView1.RowStyle.BackColor
                End If
                cell.CssClass = "textmode"
            Next
        Next

        GridView1.RenderControl(hw)
        'style to format numbers to string
        Dim style As String = "<style> .textmode { } </style>"
        Response.Write(style)
        Response.Output.Write(sw.ToString())
        Response.Flush()
        Response.[End]()
    End Using
End Sub

Public Overrides Sub VerifyRenderingInServerForm(control As Control)
    ' Verifies that the control is rendered
End Sub

Excel(2013)は空白のウィンドウで開き、ブロックされた理由に関する警告やメッセージは表示されず、開くファイルを受け入れるオプションもありません。

私のコードはイントラネットサイトで実行されており、Windowsのグループポリシー/設定/ユーザー構成にアクセスできます。

7
Taylor Brown

ソリューション1

1)Excelを開くファイルオプションに移動

2)[セキュリティセンター]-> [セキュリティセンターの設定]をクリックします

3)保護されたビューに移動します。すべてクリックされたことを示す3つのオプションがあります。 「インターネットから発信されたファイルの保護されたビューを有効にする」という最初のオプションのチェックを外します。以下のコメントで報告されているように、場合によっては、1番目と2番目のオプションの両方をオフにする必要があります(@moshebに感謝)

ソリューション2

これらのWindowsUpdateをアンインストールします。

  • Windows Update KB3115262(Excel 2013)
  • Windows Update KB3115130(Excel 2010)
8
Taylor Brown

残念ながら、セキュリティオプションを変更することはできませんでしたが、XLSではなくCSVにエクスポートすると、トラストセンターのものを無視してファイルがExcelで開かれることがわかりました。

現在はクラシックASPを使用しているため、ページをHTMLテーブル形式のエクスポートからCSVに変更し、ヘッダーとコンテンツタイプを次のように変更します。

_Response.AddHeader "content-disposition", "attachment; filename=search_results.csv"
Response.ContentType = "text/csv"
_

と改行しました:Response.Write (chr(10))

3
user713813

ソリューション

  • ファイルのプロパティに移動します(Rクリック-プロパティ)
  • [ブロックを解除]をクリックします
  • [適用]をクリックします
3
Josh Bucklen

次のことを試してください。

から「添付ファイル」を置き換えます

Response.AddHeader("content-disposition","attachment;filename=GridViewExport.xls")

「インライン」で

Response.AddHeader("content-disposition","inline;filename=GridViewExport.xls")

それは役立つかもしれません!

Content-Disposition:「インライン」と「添付ファイル」の違いは何ですか?

2
Akash Agrawal

3番目の解決策があると言っておきたいと思いました。

.xlsを生成するサイトを信頼済みサイトリストに追加します。 CIOがKBのロールバックを拒否しているため、GPOを介して約12のWebサイトを追加する必要がありました... =(

1
Raniel66

Raniel66の提案 に従って、サイトを信頼済みサイトリストに追加した後でも、Excelが空白で開いた場合は、次のことを試してください。以下の回避策を提案します。

グレー表示/空白でもExcelブックを開き、Excelの[表示]タブをクリックしてから、[全画面表示/最大化画面]をクリックします以下のスクリーンショットに示すように、アイコン」。これは私のために働いたものです。

enter image description here

1
KRM