excel2016で、例えば
<table border="0" cellpadding="0" cellspacing="4" width="97%">と記入したデーターファイルを拡張子csvにしてアップロードすると
<table border=""0"" cellpadding=""0"" cellspacing=""4"" width=""97%"">と二個の引用符で囲まれて格納されます。
回避する方法をお教えください。どの段階で変換を間違えているのでしょうか。
No.4ベストアンサー
- 回答日時:
結論から言うと、次のいずれかになります。
○属性値には 二重引用符ではなく一重引用符を使う。HTML以外の場所でも備考欄には二重引用符を書かない。
○ Excelは使わずに、テキストエディタで編集する。
表形式になってないのでやりずらいかもしれないけど、そこは我慢する。
○プログラムを確認して、"" を " に変換して読み込むように変更する。
自分でやる。あるいは、他人(制作者を含む)に頼む。
ちょっと面倒なので、プログラムの内容を確認まではやりません。
おそらく、そのCGIでは、「一般的な規則に従ったCSV」を使うことは想定していなくて、「このシステム独自のCSVによく似たフォーマット」を使っているのでしょう。
ならば、対応するのは、ファイル編集を「独自形式」に合わせるか、システム側を「一般的なCSV」に合わせるか、になります。
問題になるのは"" ⇔ " の変換ですから、 二重引用符を使わなければ、問題はおこりません。
HTMLの属性値は " でも ' でもいいので、 ' を使えば回避できます。
Excelを使うと、どうしても「一般的なCSV」になってしまいます。
そのような自動変換をしないテキストエディタを使えば、元の状態を保持できます。
http://www.kent-web.com/pubc/kitei.html
> プログラムを改造して利用することは自由です。
とあるので、Excelから出力されたCSVに対応するように改造することができます。
https://www.kentweb.net/pubc/labo/
有償ですが、作者による改造も受けつけていますので、予算その他の条件があえば、対応してもらえるかもしれません。
このような話は、一般論で言っても意味がありません。
Kent-Webには公式のサポート掲示板があるので、そちらで聞いた方が確実ではないか、と思います。
http://www.kent-web.com/support/
本当にご親切にアドヴァイスをありがとうございます。
Excelだけでなく、2.3種のCSVエディターでも試してみたのですが、いい結果が得られませんでした。
ご教示にあるように「Kent-Webには公式のサポート掲示板」にもお尋ねしているのですが、まだ未回答です。
とりあえず一件ずつHTMLを再記入して急場をしのぐことにします。そしておいてCSVのことを勉強してみます。
No.3
- 回答日時:
まずは次のことをはっきりさせてください。
○「アップロード」とは、具体的にどんな操作をして、どんな状態になるもののことを言っているのか?
○「"が 2つ並んでいる」というのは、具体的にどのような方法で確認したのか?
○ CSVファイルと「確認方法」との間にどんな関係があるのか?
これらの内容によって
1.CSVでは無い形式でアップロードするのが正しい
2.文字列中の " を表現する時に別の方法を使うのが正しいので、アップロード前に加工するのが正しい
3.アップロードする時に変換処理するのが正しい
4.サーバーにある「閲覧プログラム」状で処理するのが正しい
等が考えられ、それぞれで対処方法が違います。
例えば、 1.の場合は、そもそもCSVを使うこと自体が間違いなわけで、
#2にあるようなVBAを使うとか、「テキスト形式(タブ区切り)」で保存するとかで解決できるかもしれません。
しかし、「CSVをアップロードするのが正しい」のなら、そんな処理をしてしまうと、別の問題が発生するでしょう。
(データ中にカンマがあって、本来1項目のはずが2つに分解されてしまう、とか)
ありがとうございます。
Kent webさんが配布しているcgiで作られたS-Cartを利用させていただいて、サイトを構築中です。
パーミッションの設定してサイトは構築されました。
管理ページの個別登録フォームで10数点のデータを新規登録しました。登録項目はHTMLができる備考欄を含めて6か所ほどあります。
10数点のデータは正しくサイトで表示されていました。
① データ一覧がCSVファイルをダウンロードできるようになっています。
そのファイルをエクセル2016で開けると、登録箇所6か所はきちんとセルに格納されていました。備考欄でのHTMLも正しくセルに収まっていました。
② 備考欄でのHTMLには手を加えずそのままにして、それ以外をエクセルで編集して管理画面からアップロードしました。すると6か所の登録箇所のうちHTMLで記載した備考欄だけが表示されなくなっていました。
③ そこで管理画面から個別登録フォームの編集を開けてみると
備考欄でのHTMLが<table border=""0"" cellpadding=""0"" cellspacing=""4"" width=""97%"">というようにすべての文字列が二個の引用符で囲まれて格納されていたのです。
④ 個別登録フォームの備考欄には「タグ有効。改行無効」とあります。それを理解できていないことに起因するのでしょうか?
全く素人ですのでうまく説明できません。ご寛容にお願いいたします。
No.2
- 回答日時:
CSV 変換したものをメモ帳などで見ると「"<table border=""0"" cellpadding=""0"" cellspacing=""4"" width=""97%"">"」のように前後にも「"」が付いています。
この CSV ファイルは何か別で使われるのでしょうか?
それでしたらマクロ(VBA)を使えば簡単に出来ます。マクロとかは使えますか?
例えばA列だけにデータが有るなら以下のマクロを実行すると、お好みの CSV ファイルがブックと同じフォルダに保存されるはずです。もちろん列を増やすことも別のフォルダーに変える事も情報をいただければ可能です。
Sub Sample()
Dim 行 As Long
Open ThisWorkbook.Path & "\Data.csv" For Output As #1
For 行 = 1 To Cells(Rows.Count, 1).End(xlUp).Row
Print #1, Cells(行, 1).Value
Next
Close #1
End Sub
ありがとうございます。マクロ(VBA)は触れずにいましたが、この機に学習してみます。そのうえで、また質問させていただくことになりましたら、よろしくお願いいたします。
No.1
- 回答日時:
CSVには「そのままでは カンマを含む文字列を表記できない(区切り文字との区別が付かない)」という欠点があります。
そのため「文字列は " でくくる。"でくくられた中にあるカンマは区切りには使わない」という規則を適用します。
ただし、この方法では「文字列中に " があると、 " という文字なのか、文字列の終りなのかの区別がつかない」という別の問題が出てきます。
そこで「文字列中の " は "" と2つ並べることで、文字列終了の " と区別する」という方法と取ります。
これを逆にするには、 "が一つ〜"が一つの間の文字列はそのまま抜き出し、その外のカンマでデータを区切る。
→ 文字列の中の"" を " にする
という変換が必要です。
CSVからどうやって処理しているかが書いてないので、上記の程度のことしか言えません。
理解できないことなのですが、ブラウザをFirefoxからIEに変えて、CSVをアップロードしたみたら、正確なHTMLが表示されました!!!。おさがわせいたしました。寄り添ってくださってありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・ハマっている「お菓子」を教えて!
- ・最近、いつ泣きましたか?
- ・夏が終わったと感じる瞬間って、どんな時?
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
タブ区切りデータからダブルコ...
-
【CSVファイル】先頭の文字列に...
-
TXTで作成したファイルをDATフ...
-
Access インポート
-
エクセルデータをテキストファ...
-
100万行のCSVを10万行ずつのフ...
-
アクセスでcsvに出力した際、頭...
-
ACCESS「CSV」形式での、保存方...
-
Accessでdatファイルのインポート
-
PL/SQLで文字列を分割
-
ACCESS2000:エクスプローラを開く
-
csvファイルが保存すると数...
-
CSVファイルのセルに「01」と入...
-
Access2007のエキスポートについて
-
アクセスがインポートできる容...
-
ThunderbirdのメールをCSVでま...
-
Accessで小数点以下を切り捨て...
-
【Excel】[Expression.Error] ...
-
SQLPLUSで結果を画面に表示しない
-
特定のエクセルファイルを起動...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
100万行のCSVを10万行ずつのフ...
-
Access インポート
-
ThunderbirdのメールをCSVでま...
-
アクセスでcsvに出力した際、頭...
-
カンマがデータとして入ってるC...
-
【CSVファイル】先頭の文字列に...
-
TXTで作成したファイルをDATフ...
-
タブ区切りデータからダブルコ...
-
accessで項目内の文字を自動改...
-
Access2007のエキスポートについて
-
アクセスがインポートできる容...
-
sqlldrのフィールドの属性について
-
Access95のエクスポートで教え...
-
TSVのファイルをACCESSにインポ...
-
Excelデータをテキストファイル...
-
txtをemlに変換したい!
-
Accessでdatファイルのインポート
-
csvファイルが保存すると数...
-
VBAでMSアクセスに、Tab区切り...
-
CSVファイルのセルに「01」と入...
おすすめ情報
早速のアドヴァイスをありがとうございます。
「 "が一つ〜"が一つの間の文字列はそのまま抜き出し、その外のカンマでデータを区切る。→ 文字列の中の"" を " にするという変換が必要です。」
とのことですが、この変換はエクセル上でできるのでしょうか。それともCSVエディターが必要なのでしょうか?
よろしくお願いします。