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で質問しましょう!
似たような質問が見つかりました
- PHP htmlで複数の個数入力欄を表示させるには 1 2022/09/20 03:11
- HTML・CSS 吹き出し 下記の吹き出しのスタイルシートについて 下記のスタイルシートは左側にアイコンがでる使用にな 1 2022/11/12 17:55
- Visual Basic(VBA) 複数のcsvファイルをExcelに一括変換したい 2 2023/03/03 12:44
- JavaScript EasyUIのSubGrid(jquery)におけるObjectに入れた連想配列について 1 2022/05/02 11:21
- HTML・CSS CSSがなぜかfont-sizeだけ効かない...記述がまちがっているんでしょうか 5 2022/04/09 17:52
- HTML・CSS 自身のHPにYouTube動画を貼り付けるのが出来なくなり困ってます 1 2022/11/11 10:44
- JavaScript 画面に表示したらアニメーションを開始したい 3 2023/01/13 15:38
- HTML・CSS (Javascript)印刷するファイルに応じて印刷プレビュー画面で用紙を自動的に切り替えたい!! 2 2022/04/11 12:04
- その他(プログラミング・Web制作) python 気象データの取得 2 2023/06/20 23:54
- Visual Basic(VBA) Selenium.ChromeDriverの使い方について 7 2022/09/22 06:43
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【CSVファイル】先頭の文字列に...
-
Access95のエクスポートで教え...
-
Access インポート
-
Access2007のエキスポートについて
-
ThunderbirdのメールをCSVでま...
-
100万行のCSVを10万行ずつのフ...
-
txtをemlに変換したい!
-
エクセル97で作成したファイ...
-
Accessでdatファイルのインポート
-
ファイルメーカープロのデータ...
-
PL/SQLで文字列を分割
-
アクセスからエクセルへの変換...
-
任意のCSVファイルをAccessに取...
-
アクセスでcsvに出力した際、頭...
-
行列転置データのファイル変換方法
-
CSVデータをピボットテーブルで...
-
csvファイルが保存すると数...
-
メモ帳のデータをCSVに変換
-
sqlldrのフィールドの属性について
-
ファイルメーカーへインポート...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【CSVファイル】先頭の文字列に...
-
100万行のCSVを10万行ずつのフ...
-
アクセスでcsvに出力した際、頭...
-
Access インポート
-
ThunderbirdのメールをCSVでま...
-
Access2007のエキスポートについて
-
カンマがデータとして入ってるC...
-
csvファイルが保存すると数...
-
タブ区切りデータからダブルコ...
-
TXTで作成したファイルをDATフ...
-
sqlldrのフィールドの属性について
-
Access95のエクスポートで教え...
-
アクセスがインポートできる容...
-
accessで項目内の文字を自動改...
-
ファイル名が同じ場合自動的に...
-
CSVファイルのセルに「01」と入...
-
エクセルデータをテキストファ...
-
CVS形式とは?
-
ACCESS「CSV」形式での、保存方...
-
任意のCSVファイルをAccessに取...
おすすめ情報
早速のアドヴァイスをありがとうございます。
「 "が一つ〜"が一つの間の文字列はそのまま抜き出し、その外のカンマでデータを区切る。→ 文字列の中の"" を " にするという変換が必要です。」
とのことですが、この変換はエクセル上でできるのでしょうか。それともCSVエディターが必要なのでしょうか?
よろしくお願いします。