0

asp.net Web アプリケーションで応答オブジェクトを使用して Excel ファイルを作成しています。長い数値の一部は科学表記法に変換されています。データのサイズが原因で発生したタイムアウトの問題を防ぐため、使用しているコードを保持したいと思います。列が科学表記法に変換されないように既存のコードを変更する方法について誰かアドバイスをいただけますか?

    Response.Clear()
    Response.Buffer = True
    Response.AddHeader("content-disposition", "attachment;filename=test.csv")
    Response.Charset = ""
    Response.Cache.SetCacheability(HttpCacheability.NoCache)
    Response.ContentType = "application/vnd.xls"


    Try
        sqlconn.Open()

        Dim dr As SqlDataReader = sqlcmd.ExecuteReader()
        Dim sb As New StringBuilder()
        'Add Header

        For count As Integer = 0 To dr.FieldCount - 1
            If dr.GetName(count) IsNot Nothing Then
                sb.Append(dr.GetName(count))
            End If
            If count < dr.FieldCount - 1 Then
                sb.Append(",")
            End If
        Next
        Response.Write(sb.ToString() & vbLf)
        Response.Flush()
        'Append Data

        While dr.Read()
            sb = New StringBuilder()

            For col As Integer = 0 To dr.FieldCount - 2
                If Not dr.IsDBNull(col) Then
                    sb.Append(dr.GetValue(col).ToString().Replace(",", " "))
                End If
                sb.Append(",")
            Next
            If Not dr.IsDBNull(dr.FieldCount - 1) Then
                sb.Append(dr.GetValue(dr.FieldCount - 1).ToString().Replace(",", " "))
            End If
            Response.Write(sb.ToString() & vbLf)
            Response.Flush()
        End While
        dr.Dispose()
    Catch ex As Exception

    Finally

        sqlconn.Close()
    End Try
    Response.End()
4

2 に答える 2

-1

こんにちは、私はこの質問が少し古いことを知っていますが、Excel で生成されたファイルで科学表記法を防ぐ方法についての私の考えを共有したいと思います。「@」を試しましたが、.NumberFormat を適用したそれぞれの行/列のセルに警告アイコンが表示されます。数値をテキストに変換することは無効であると書かれています。

私が個人的にその警告の修正として使用した解決策があります。「@」の代わりに「#」を使用できます。これがサンプルです。

mySheet.Range("A:A").NumberFormat = "#"

「@」を使用するのはテキストデータ型のみであり、それが警告が発生する理由だと思います。お役に立てれば。

于 2014-02-26T07:40:00.063 に答える