トップ回答者
CSVのダウンロード後のEXCEL表示について

質問
-
大変お世話になっています。
今回はCSVでのダウンロード/アップロードについて教えて下さい。
このフォーラムでいいのか分りませんが宜しくお願いします。
テーブルの内容をCSV形式でダウンロードし、EXCEL表示した時に以下のような状態になってしまい苦慮しております。
1.全角で"1"と入っている項目が半角の"1"になる
2.前ゼロがあった場合、ゼロがなくなってしまう。
"0001" → "1"になるこのようになるのを防ぐ為、ダウンロード項目の先頭に’(アポストロフィ)を付与した上でダウンロードした結果、EXCEL表示上は"’1"となってしまいます。
又、CSV内に'(アポストロフィ)が入った状態でアップロードをするとパイプエラーが出てしまいます。
以下コード記載
○ダウンロード
Protected Sub btn_DL_Click(ByVal sender As Object, ByVal e As System.EventArgs)
Dim dv As DataView = CType(SqlDataSource5.Select(DataSourceSelectArguments.Empty), DataView)
Dim dt As DataTable = dv.ToTable("XXXXXX")
Dim sb As StringBuilder = New StringBuilder()
' rows
For Each row As DataRow In dt.Rows
Dim arr As ArrayList = New ArrayList(row.ItemArray)
For i As Integer = 0 To arr.Count - 1
Dim val As String = arr(i).ToString
If (val.IndexOf(",") <> -1) OrElse (val.IndexOf(vbLf) <> -1) Then
val = """" & val.Replace("""", """""") & """"
End If
If val = "" Then
arr(i) = val
Else
arr(i) = """" & val & """"
End If
Next
Dim line As String = String.Join(",", CType(arr.ToArray(GetType(String)), String()))
sb.Append(line & vbCrLf)
Next
ResponseEncoding = "shift-jis"
Response.ContentType = "text/csv"
Response.AddHeader("Content-Disposition", "attachment; filename=Test.csv")
Response.Write(sb.ToString())
Response.End()
End Sub○アップロード
Protected Sub btn_upFile_Click(ByVal sender As Object, ByVal e As System.EventArgs)
Dim postfile As HttpPostedFile = FileUpload1.PostedFile
Dim uppath As String = Server.MapPath("~/App_data/data/" & Path.GetFileName(postfile.FileName))postfile.SaveAs(uppath)
Dim parser As New TextFieldParser(uppath, System.Text.Encoding.GetEncoding("SHIFT_JIS"))
parser.TextFieldType = FieldType.Delimited
parser.SetDelimiters(",")While Not parser.EndOfData
Dim row As String() = parser.ReadFields() ' 1行読み込み'エラーチェック、xxxxx存在チェック
.
.
.
if エラー無し then
'xxxxx追加処理
add_xxxxx_master(row(0), row(1), row(2), row(3), row(4), row(5), row(6), row(7))
end ifEnd While
Call parser.Close()
End Subこの状況の打開策等ありましたらご教授下さい。WIN XP SP2;EXCEL2002です。
宜しくお願いします。
回答
-
CSVをExcelで表示した際の問題であり、要はExcelの仕様ですね。
目的がExcelで正しく表示することであれば、以下のリンクのようにHTML形式で書き出すか、
CSV for Excel - Problem with Leading Zeros
http://forums.asp.net/thread/257100.aspx
以下のようにxlsファイルをサーバー側で作成する方法があります。ただし、この方法ですと、サーバーにExcelがインストールされている必要があります。
ASP.NETでのEXCEL出力
https://www.microsoft.com/japan/msdn/community/gdn/ShowPost-18614.htm
すべての返信
-
CSVをExcelで表示した際の問題であり、要はExcelの仕様ですね。
目的がExcelで正しく表示することであれば、以下のリンクのようにHTML形式で書き出すか、
CSV for Excel - Problem with Leading Zeros
http://forums.asp.net/thread/257100.aspx
以下のようにxlsファイルをサーバー側で作成する方法があります。ただし、この方法ですと、サーバーにExcelがインストールされている必要があります。
ASP.NETでのEXCEL出力
https://www.microsoft.com/japan/msdn/community/gdn/ShowPost-18614.htm -
trapemiyaさん いつもありがとうございます。
>CSVをExcelで表示した際の問題であり、要はExcelの仕様ですね。
そうですか。やっぱり...
>目的がExcelで正しく表示することであれば、以下のリンクのようにHTML形式で書き出す
仕様上CSVとなっていますので無理っぽいです。
>以下のようにxlsファイルをサーバー側で作成する方法があります。
やはりEXCELファイルのテンプレートを作成しなければならないのですね。
https://www.microsoft.com/japan/msdn/community/gdn/ShowPost-18614.htmを参考に修正します。
ありがとうございました。