教えて下さい。

他プログラムからCSVデータ出力したデータを
エクセルで表示すると、13桁の数字が9E+12と表示されて
しまいます。
セルの書式設定を「数値」に変更すると一時的に数字が表示されるのですが、一度保存して、再度ファイルを開くと戻ってしまいます。

エクセル形式で保存すれば大丈夫なのですが、どうしてもCSVファイルのままで保存したいのです。

CSVデータで13桁の数字を常に表示する方法を教えて下さい。

よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (4件)

CSVファイルはデータだけでCell書式等の情報はまったく持ちませんから


Excelの仕様ですので無理ですね。

あとはマクロでも作成して読み込み後に書式変更するしかないです。

それとExcelでCSVを読み込むとき全桁数字項目は自動的に数値と判断するため
コード項目等で前にゼロある場合、数値表示されて前ゼロが消えますから注意が必要です

私の場合は列単位で書式を設定した雛形を作成しておいてマクロにて展開しています
但しデータ量が多いと1Cell単位でセットすると遅いので配列に取り込み一括セットしてます。

Dim wDat(3, 2)

'データの読み込み処理
:
:
'一括セット
Range(Cells(1, 1), Cells(4, 3)) = wDat

分解にはSplit関数を使ってます。
    • good
    • 0
この回答へのお礼

ありがとうございます。
内容が高度すぎてイマイチ理解出来てませんが、
エクセル仕様なのはわかりました。
違うアプローチを考えます。
ありがとうございました。

お礼日時:2009/05/15 11:59

素人な私ですが、自分のスキルupのために考え作成してみました。


私の勘違いでしたら申し訳ありません。それでは
まず13桁の数値が入力されているCSVファイルをExcelで読み込むと
指数表示になって困る。これは下記の投稿の回答から察するとデータ
の修正等を行うことから「見づらい」や「扱いづらい」理由からと
推測しました。一応確認してみたのですが、Exselで13桁の数値が
入力されているファイルを開いて指数表示になったものをそのまま
保存すると13桁の数字で保存されずに、指数表示のまま保存され
ました。この場合他のプログラムで指数表示の数値を受けつけずに
エラーになる危険性もあるなと思いました。ということをふまえて
素直にgift4yさんの作業が楽になるマクロを考えてみました。
++++++++++++++++++++++++++++++++++++++++++++++++++++++++
13桁の数値が入力されているCSVを読み込んだときに指数表示
なってしまったすべてのセルの値を数値表示に変換するマクロ
++++++++++++++++++++++++++++++++++++++++++++++++++++++++
これで良いのではないでしょうか?ということで書きのソースが
それです。すごく単純なマクロです。
Sub Macro1()
'---ファイル名を取得するためのメソッド------------------
F_name = Application.GetOpenFilename _
(Filefilter:="csvファイル(*.csv), *.csv")
'-------------------------------------------------------
Workbooks.Open Filename:=F_name 'ファイルのオープン
Cells.Select
Selection.NumberFormatLocal = "0_ "
End Sub
    • good
    • 0

私の方の勘違いならすいませんが、他の回答者さんと違う視点で。



>また、拡張子はあくまでcsvにこだわりたいのです。
>そのデータを最終的には他プログラムに取り込みたいので。

もしかして、ここを勘違いされているのかと思い、回答した次第です。
CSVは単なるテキストファイルですから、書式のセットはできない、もしくは、Excelで開いた時に表示されるように出力側で制御する必要がある事は、#1さん、#2さんの回答通りです。

しかし、繰り返しになりますが、CSVそのものはテキストファイルですから、出力時に
1234567890123
と出力したのであれば、Excelで開けば「1.23E+12」のような指数表示になったとしても、CSVをメモ帳やテキストエディタで開けば、
1234567890123
のまま、となっているはずです。

つまり、他のプログラムに引き渡す分には、そのままで何の問題もないのです。
(むしろ、「'」を付ける事で取り込み側のプログラムが不具合を起こす可能性もある)

「それはわかっている」と言う事でしたら、#1さん、#2さん、以外の最適解は無い、と言う事になりますね。
    • good
    • 0
この回答へのお礼

データの吐き出しと取り込みの間に、エクセルでデータを修正という作業をする必要があるのです。
違うアプローチを考えてみます。
ありがとうございました。

お礼日時:2009/05/15 11:58

数値(標準)のままでは無理


文字列として扱うしかないです
数字の前にアポストロフィー 「 ' 」 を付けましょう(例 '1234567890123)
これで明示的に文字列とすることができます

あるいは、CSVファイルを開くのではなく
CSVファイルを参照するExcelファイルを作ることをお奨めします

この回答への補足

早速の回答ありがとうございます。

すいません、質問が不十分でした。

13桁の数字は、1シートの何千件とあるんです。
その数字にアポストロフィーをつけるのはちょっと厳しいです。

また、拡張子はあくまでcsvにこだわりたいのです。
そのデータを最終的には他プログラムに取り込みたいので。

補足日時:2009/05/14 15:23
    • good
    • 0
この回答へのお礼

ありがとうございます。
違うアプローチを考えてみますね。

お礼日時:2009/05/15 12:00

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q大量のCSVファイルをExcel形式に変換する

お世話になります。
大量のCSV(.csvファイルをExcel(.xls)ファイルに変換したい
と考えております。
リネームソフトを使って、(.csv)⇒(.xls)の一括変換を
したところ、拡張子は確かに.xlsに変換されたのですが、
中身はCSVのままとなっておりました。
(↑ファイル名とシート名が同期を取っているので)

このCSVを確実にエクセル形式へと変換したいのですが、
どなた様かいいお考えをお持ちでしたら教えてください。
ググってみたところ、そういったアドインがあるのですが、
できれば費用をかけずに行いたいです…。

Aベストアンサー

こんにちは。

すでに、マクロが1つ出ているようですが、私も作ってみました。

これは、ファイルをマルチセレクトして、そのファイル群を、Excelのマクロにより、一気に、CSV から XLS(Excel標準フォーマット)変換するマクロです。出来上がったら、Explorer 等で、確認してみてください。

>アドインがあるのですが、
私の個人的な意見ですが、この程度のものは、アドイン化すべきものではありませんから、よほど付加価値をつけないと公開用のアドインにはなりませんが、一般的にみて、アマチュアの作ったアドインは、押しなべて、あまり出来の良いものが少ないように思います。ですから、なるべく、一般のマクロで解決するように望みます。


'---------------------------------------------------

'<標準モジュール>
Sub CSV2XLS()
  'CSV を XLS に変換するマクロ
  Dim myArray() As String
  Dim FileName As Variant
  Dim fn As Variant
  Dim xlFileName As String
  Dim xlFileBaseName As String
  Dim TextLine As String
  Dim FileNo As Integer
  Dim i As Long
  Dim k As Long
  '基本となるフォルダ
  'BASE_DIR=""なら、マクロのあるブックと同じ場所のフォルダ
  Const BASE_DIR As String = ""
  If BASE_DIR <> "" Then
   ChDir BASE_DIR
   Else
   ChDir ThisWorkbook.Path
  End If
  FileName = Application.GetOpenFilename("CSV ファイル(*.csv),*.csv", MultiSelect:=True)
  If VarType(FileName) = vbBoolean Then
   Exit Sub
  End If
  Application.ScreenUpdating = False
  For Each fn In FileName
   On Error GoTo NextStatus
   With Workbooks.Open(fn)
     xlFileName = Mid$(fn, 1, InStrRev(fn, ".") - 1) & ".xls"
     Do
      k = k + 1 '同名の時枝番をつける
      If k > 3 Then Exit Do
      If Dir(xlFileName) = "" Then
        .SaveAs xlFileName
        xlFileBaseName = Mid$(xlFileName, InStrRev(xlFileName, "\") + 1)
        Workbooks(xlFileBaseName).Close False
        k = 0
        Exit Do
        Else
        xlFileName = Mid$(fn, 1, InStrRev(fn, ".") - 1) & "_" & CStr(k) & ".xls"
      End If
     Loop
   End With
NextStatus:
  Next fn
  Application.ScreenUpdating = True
  MsgBox "終了しました。",64
End Sub

'---------------------------------------------------

こんにちは。

すでに、マクロが1つ出ているようですが、私も作ってみました。

これは、ファイルをマルチセレクトして、そのファイル群を、Excelのマクロにより、一気に、CSV から XLS(Excel標準フォーマット)変換するマクロです。出来上がったら、Explorer 等で、確認してみてください。

>アドインがあるのですが、
私の個人的な意見ですが、この程度のものは、アドイン化すべきものではありませんから、よほど付加価値をつけないと公開用のアドインにはなりませんが、一般的にみて、アマチュアの...続きを読む

Q旧システム→新システム移行のデータ保存基準について

今度、システムをリニューアルするのですが
もともと、メインフレームで稼動していた
システムを、C/S型に移行します。

これまで保存されているデータを移行する必要がある
のですが、移行にあたっての基準を作らねばならなく
なりました。

例えば、診療情報は5年間保存する。
○○は移行する、破棄するなど。根拠は▽▽
等です。

メインフレームがなくなってしまうので、カートリッジ
テープに保存してある情報なども、何らかの手当てが
必要です。

大規模なシステムの移行が初めてで、参考になるものが
乏しく困っています。

何かヒントになることや、経験上、こういったことを
盛り込む必要があるなど、アドバイスをお願いします。

Aベストアンサー

NO1で回答した者です。
お客様が過去データに対して要件がないのであれば、
移行先の新システムのハードディスク容量と今後の推定発生データ量から移行データに割り当てる容量を
適当に決めて、逆算で過去年数を見積もってもよいのではないでしょうか?お客様に要件がないのであれば、根拠を適当に決めて承認してもらうしかないです。
それからお客様に移行方針を決めろと言っても難しいケースがあります。当たり前のことや思いつくことだけでも整理して提示するだけでも意味はあると思います。移行計画書の目次を検討して内容を連ねると考えるべき点がでてくると思います。
最後に、移行は一時的なもので、外に漏洩したらまずい情報を扱うので一般的にはノウハウ含めて公開されないと思われます。社内で小さくても移行経験のある人にヒアリングすることをお勧めします。

QエクセルデータからCSVファイルへの変換について

現在エクセルファイルにあるデータをCSVファイルへ変換する作業(エクセルでデータを作成して、保存時にCSVファイルを選択)をしているのですが、以下の例の場合うまく変換ができません・・・。
基本的な質問かもしれませんがどなたかご存知でしたら教えていただけると助かります。
よろしくお願いします。

【例】
        (エクセル) ⇒  (CSV)

うまくいく   12345     12345

うまくいかない 01234     1234


上記のようにエクセル上は文字列で管理されている
ケースだとCSVファイルに変換した時数列に変換
され、上記例のうまくいかないケースのように
頭に0がある場合CSVだと0が消えてしまいます。

よろしくお願いします。

Aベストアンサー

> CSVファイルに変換した時数列に変換

ちがいます。
いったんCSVで保存したものをエクセルで開いたときにそうなるのです。
CSVをエクセルでそのまま開かず、メニューの「データ」、「外部データの取り込み」、「すべてのファイル」、で取り込み、書式で文字列を選べばOKです。
あるいはCSVを拡張子を.TXTにしてテキストで取り込んでもOK

QNECノートPCのデータ保存

カテゴリーがずれていたらすみません。
現在NEC PC9821-Ndと9821-Nb10があります。
NdからNb10へHDDの中身を移動したいのですが…。(OS DOSの移動は不要)
仕様
Nd
DOS ver.6.2
FDD内蔵型あり、でも壊れている。
CD無し
14PinのRS232Cポートあり
PCカードスロットあり、使用可能か???
HDD取り外し可能

Nb10
DOS ver.6.2
FDD外付け型あり使用可能
CDD内蔵型たぶん使用可能
14PinのRS232Cポートあり
PCカードスロットあり、使用可能か???
HDD取り外し可能か???

昔、何とかリンクというソフトでデータを交換できるようなやり方があったと思うのですが。
但し、Ndの方は、FDD壊れていてCDも無しで、簡単にインストール及びデータを取り出せません。232Cを使ってデータを取り出せないでしょうか。
232Cのピンアサイン(通信ケーブル仕様)とリンクソフトとNbへのインストール方法とありましたら、教えて頂けないですか。
あとほかにやり方があればご教授下さい。
宜しくお願い致します。

カテゴリーがずれていたらすみません。
現在NEC PC9821-Ndと9821-Nb10があります。
NdからNb10へHDDの中身を移動したいのですが…。(OS DOSの移動は不要)
仕様
Nd
DOS ver.6.2
FDD内蔵型あり、でも壊れている。
CD無し
14PinのRS232Cポートあり
PCカードスロットあり、使用可能か???
HDD取り外し可能

Nb10
DOS ver.6.2
FDD外付け型あり使用可能
CDD内蔵型たぶん使用可能
14PinのRS23...続きを読む

Aベストアンサー

NDの方にFDすらないので難しいですね。

試せるNdあたりのマシンがないので保証できませんが、NdのHDDがNbにつきませんか?
確かNdあたりは厚めのHDDだったと思うのですが、Nbは裏にHDD入れるので蓋を閉めなければ刺さるのではないかと?
もしできたらNbでCOPYで一つずつでもbackupでもしてFDDに落とせばいいかと。

QCSVファイルをEXCELに変換の自動化作業

CSVファイルをEXCELに変換の自動化作業
{CSVファイルをEXCELに変換するため、
excel  ツールバーよりデータ(D)→外部データの取り込み(D)→テキストファイルのインポート→ファイルの種類変更→全てのファイル→○○.csvのファイル指定→“,”の区切り選択、、ウィザードに従って変更し次へで進む→A1が指定されるのでそのまま完了→CSVがEXCELファイルに変換された。
参照したabc1.csvの名前に対して新しいabc1.xlsとなずけて登録する。これらの作業をMYドキュメントのhenkan ホルダーに入っているCSVファイルに同様に作業して同じくhenkan ホルダーに入れる。}
上記の{ }内の作業を何か,excelのVBAのマクロのようなもので実行することはできませんか。
やり方を教えてください。

Aベストアンサー

もともと、CSVとはカンマ区切りのはずですから、そうではないということなら、このコードは、違っています。こういう質問系掲示板は、質問者が分らない部分をお助けするような形で出来上がるものだと思いますので、回答者の回答を最初から否定するような発言は控えていだきたいと思いました。なお、フォルダーの中を一気に変換してしまうようなコードは、必ず変換後の様子を確認してからでなくてはなりませんので、それを確認していただくつもりでした。

私自身は、ここのカテゴリで、私は、一ゲンではありませんので、後々のためにコードを掲示しておきます。以下は、私が考えていたコードであって、その処理後の状態を保証するものではありません。

'<標準モジュール推奨>
Sub DirectryCSV2XLS()
  Dim myCSVFnames() As String
  Dim myCSVFname As String
  Dim xlFileName As String
  Dim i As Long
  Dim j As Long
  Dim n As Variant
  Dim msg As String
'=====================================
  '以下 フォルダー要設定
  Const MY_FOLDER As String = ""C:\Documents and Settings\<User>\My Documents\"
'=====================================
  If Left$(MY_FOLDER, 1) <> "\" Then MsgBox "フォルダーの設定の最後は、「\」が必要です。": Exit Sub
  If Dir(MY_FOLDER, vbDirectory) = "" Then _
   MsgBox "そのフォルダーは存在しません。", vbCritical: Exit Sub
 
  myCSVFname = Dir(MY_FOLDER & "*.csv")
  Do While myCSVFname <> ""
   ReDim Preserve myCSVFnames(i)
   myCSVFnames(i) = myCSVFname
   i = i + 1
   myCSVFname = Dir()
  Loop
  If i = 0 Then MsgBox MY_FOLDER & " には、CSVファイルが存在しません。", vbCritical: Exit Sub
  Application.ScreenUpdating = False
  Application.DisplayAlerts = False
  For Each n In myCSVFnames
   xlFileName = Mid$(n, 1, InStrRev(n, ".csv")) & ".xls"
   If Dir(MY_FOLDER & "\" & xlFileName) = "" Then
     With Workbooks.Open(MY_FOLDER & "\" & n, Format:=2)
      .SaveAs MY_FOLDER & xlFileName
      Workbooks(xlFileName).Close False
      j = j + 1
     End With
   End If
  Next n
  Application.DisplayAlerts = True
  Application.ScreenUpdating = True
  If i <> j Then msg = "既に" & CStr(i - j) & "個のCSV ファイルは、XLSに変換されています。"
  MsgBox i & "個のCSVの内、" & j & "個のファイルをXLSに変換しました。" & vbCrLf & msg
End Sub

もともと、CSVとはカンマ区切りのはずですから、そうではないということなら、このコードは、違っています。こういう質問系掲示板は、質問者が分らない部分をお助けするような形で出来上がるものだと思いますので、回答者の回答を最初から否定するような発言は控えていだきたいと思いました。なお、フォルダーの中を一気に変換してしまうようなコードは、必ず変換後の様子を確認してからでなくてはなりませんので、それを確認していただくつもりでした。

私自身は、ここのカテゴリで、私は、一ゲンではありませ...続きを読む

Q申込日から起算して1ヶ月経過しているデータのみ表示

はじめまして。現在仕事でデータベースアプリを開発しているのですが、表題の件でちょっと頓いてしまっているので、皆様のお知恵を借りたく投稿させていただきます。

開発環境は下記で行っております。
================================================================
OS:WindowsXP Professional SP3
アプリケーション:Access ADP(Access2007 + SQLServer2008 Express)
SQLServer Management Studioを使用
================================================================

あるサービスへの申込者一覧をビューにて作成したいと思っているのですが、例を挙げると下記のようなデータ

---------元データのテーブル-------------
申込日 氏名
2010/12/01 テスト太郎
2010/12/02 テスト三郎
2010/12/05 テスト次郎
2010/12/31 テスト三郎
2011/01/04 テスト次郎
2011/01/05 テスト次郎
2011/01/10 テスト太郎
2011/02/01 テスト太郎
2011/02/11 テスト太郎
2011/03/02 テスト太郎
--------------------------------------

をビューを用いて同じ人がビューに出力されている申し込みから起算して1ヶ月の期間内にまた申し込まれたレコードは表示しないようにしたいのです。再現したいのは下記の通りです。

---------出力結果(ビュー)--------------
申込日 氏名
2010/12/01 テスト太郎
2010/12/02 テスト三郎
2010/12/05 テスト次郎
2011/01/05 テスト次郎
2011/01/10 テスト太郎
2011/02/11 テスト太郎
-------------------------------------

~~~~~~~~~~~元データをもとに解説~~~~~~~~~~~~~
2010/12/01 テスト太郎
2010/12/02 テスト三郎
2010/12/05 テスト次郎
はお三方とも最初の申し込みなのでそのままビューに出力

2010/12/31 テスト三郎
2011/01/04 テスト次郎
はビューに出力されるレコードのデータの日付からそれぞれ1ヶ月経過していないので、
ビューには出さない

2011/01/05 テスト次郎
はビューに出力される 2010/12/05 テスト次郎 の日付 2010/12/05 より起算して1ヶ月以上経過しているのでビューに出力

2011/01/10 テスト太郎
はビューに出力される 2010/12/01 テスト太郎 の日付 2010/12/01 より起算して1ヶ月以上経過しているのでビューに出力・・・(1)

2011/02/01 テスト太郎
はビューに出力される(1)の 2011/01/10 テスト太郎 の日付 2011/01/10 より起算して1ヶ月経過していないのでビューに出力しない

2011/02/11 テスト太郎
はビューに出力される(1)の 2011/01/10 テスト太郎 の日付 2011/01/10 より起算して1ヶ月以上経過しているのでビューに出力・・・(2)

2011/03/02 テスト太郎
はビューに出力される(2)の 2011/02/11 テスト太郎 の日付 2011/02/11 より起算して1ヶ月経過していないのでビューに出力しない


---------元データのテーブル-------------
(※ビューに出力は○、出力しないはX、番号は上記解説に対応)
申込日 氏名
2010/12/01 テスト太郎 ○
2010/12/02 テスト三郎 ○
2010/12/05 テスト次郎 ○
2010/12/31 テスト三郎 X
2011/01/04 テスト次郎 X
2011/01/05 テスト次郎 ○
2011/01/10 テスト太郎 ○・・・(1)
2011/02/01 テスト太郎 X
2011/02/11 テスト太郎 ○・・・(2)
2011/03/02 テスト太郎 X
--------------------------------------

※元データは申込受付テーブルなので、リアルタイムにお客様が申し込みされた日付でレコードは増えていきます
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
どのようなSQLにすればよろしいでしょうか...

はじめまして。現在仕事でデータベースアプリを開発しているのですが、表題の件でちょっと頓いてしまっているので、皆様のお知恵を借りたく投稿させていただきます。

開発環境は下記で行っております。
================================================================
OS:WindowsXP Professional SP3
アプリケーション:Access ADP(Access2007 + SQLServer2008 Express)
SQLServer Management Studioを使用
================================================================

あるサービスへの申込者一...続きを読む

Aベストアンサー

SQLは1件のデータの情報だけで条件判定するのは簡単ですが、前後のデータの関係性から条件判定するのは非常にやっかいです。

質問のような問題は、SQLではなくVBAを使ってモジュールに記述したほうが簡単になります。

具体的なVBAの記述方法は、
[技術者向]コンピューター>プログラミング のカテゴリーで質問すれば回答が得られると思います。

QCSVをExcelに変換したい

お世話になります。

CSVファイルをExcelファイルに変換する場合、CSVファイルをExcelで開いて拡張子を「xls」もしくは「xlsx」を指定して保存すればよいかと思いますが、PCにExcelがインストールされてない環境の場合、Excelに変換することは不可能でしょうか。

今回、Accessにてツールを作成し、CSV(カンマ区切り)のデータを読み込もうとしておりますが、そのデータの中には単語の中にカンマが含まれているものがある為、普通にCSVをインポートしようとすると、ズレてしまいます。

なので、インポートする前準備としていったんExcelに変換したいと考えているのですが。。そのPCにExcelがインストールされてないと、やはり変換することは出来ないでしょうか。

もしくは、カンマ区切りのCSVファイルをタブ区切りに変換したりすることは出来ますでしょうか。

ご教授の程、宜しくお願い致します。

Aベストアンサー

>Accessにてツールを作成し、CSV(カンマ区切り)のデータを読み込もうとしておりますが、そのデータの中には単語の中にカンマが含まれているものがある為、普通にCSVをインポートしようとすると、ズレてしまいます。

毎回同じCSVのフォーマットだったら
(項目数やデータ型など)
一度インポートウィザードで進めて行って
設定ボタンから定義を保存し
次回からはその定義名を使用してインポートしては?
VBAならDocmd.transferText のヘルプにあるSpecificationNameに定義名を入れます。
・・・じゃダメかいな?

>インポートする前準備としていったんExcelに変換したい
CSVファイルを直接開くとExcelのお節介機能で
電話番号などの前ゼロがなくなったり、ハイフン付きのデータが日付と解釈されたり・・・
ということががあるので、拡張子CSVをTxtに変えてから
Excelで開こうとするとウィザードが立ち上がって・・・と出来ますが
結局のところ二度手間です。

ご参考まで。

QCSVの文字コードについて

現在、業務でAccessから住民票のデータをCSVに出力する処理を開発しています。
その際に、中国人の氏名が一部「?」で表示されてしまいます。

調べたところ、「?」で表示される漢字はCSVを作成した際に設定される
エンコード「Shift-Jis」では表示することができないようです。

これを回避するために、CSVのエンコードを変更したいのですが
そのためにはどのようなロジックを組み込んだらいいのでしょうか?

また、Excelに出力し → Unicodeテキスト → CSVの順にファイルを変換すると
中国人の氏名は正しく表示されるのですが

その際にCSVの項目をタブ区切りにすると
Excelから開く場合では各セルに表示され
カンマ区切りにすると
Excelから開く場合では各セルに表示され
各行のA列に "AAA","","BBB" のような形で表示されてしまいます。

テキストエディタから開く場合ではカンマ区切り、Excelから開く場合では各セルに表示されるようにすることは可能でしょうか?


よろしくお願いします。

Aベストアンサー

ExcelからUnicodeのCVSファイルを開く時に、カンマを区切り文字、ダブルクォーテーションも文字区切りとして指定すれば各セルに収まる形で読み込む事が出来ます。

QCSV形式に変換

プログラミング(C言語)で、ファイルの内容をCSV形式に変換し、指定した出力ファイルに出力するプログラムを作成せよ。という課題がありましたが、
ファイルの内容をCSV形式に変換
がわかりません。どのようなプログラムをかいたらよいのでしょうか?

Aベストアンサー

#5です。
よく見たらフィールド内での入れ替えが居るようなので、
#5で書いたやり方ではできませんね。。。
#参考だしいいのかな。。。

読み込みを一行ずつにして、
中を入れ替えて・・・
という作業が必要になります。

QASP.net C# データの列表示

よろしくお願いいたします、ASP.net初心者です。C#でwebページ上にSQL Server上のデータを下記のように表示させたいのですが、どのようにすればいいのか全くわからず困っています。


<データベース>

アイテム名  店舗名   数量
--------------------------
アイテム1   店舗1   2
アイテム2   店舗1 3
アイテム3    店舗1 1
アイテム1   店舗2 2
アイテム3   店舗2 3


<Webページでの出力>

アイテム名  店舗1   店舗2
------------------------------
アイテム1      2      2
アイテム2      3      0
アイテム3      1      3


Webサイトの機能としては、ユーザーが都道府県を選択すると、その情報がパラメータとして渡されます。そのパラメーターを受け取ってクエリーを実行してデータを出力します。店舗数は選択した都道府県により異なります。

インターネットでも調べてみたのですが、検索の仕方が悪いためか、解決策がなかなか見つからず、質問させていただくことにしました。

ご教授いただければ 大変助かります。
よろしくお願いいたします。

よろしくお願いいたします、ASP.net初心者です。C#でwebページ上にSQL Server上のデータを下記のように表示させたいのですが、どのようにすればいいのか全くわからず困っています。


<データベース>

アイテム名  店舗名   数量
--------------------------
アイテム1   店舗1   2
アイテム2   店舗1 3
アイテム3    店舗1 1
アイテム1   店舗2 2
アイテム3   店舗2 3


<Webページでの出力>

アイテム名  店舗1   店舗2
------------------------------
ア...続きを読む

Aベストアンサー

>>多分用意されているListViewやGridViewなどは使えないのでしょう。

そんなことはないです。今回のレベルなら、画面に表示したいデータをC#のコードを使って作り上げて、その結果をListViewやGridViewに表示するようにすればいいだけだと思います。
とはいえ、初心者にとっては、なかなか先の長い道のりであるのは、確かかもしれませんね。

まあ、同様のことはMSのデータベースソフトのAccessでも、昔のボーランドのDelphiでも、オープンソースのRubyonRailsでもありました。これらを使うと、ちょいちょいと操作をすれば、フレームワークがデータベースを読み込んで、結果を画面に表示するプログラムを作ってくれます。でも、

「すごく簡単にプログラムが作れたなあ。でも、ちょっと表示方法・操作方法が気に入らない。ちょっとだけ直したい」

と思ったとき、そこから先は、使われている言語の勉強、フレームワーク自体の勉強、そのフレームワークが決めた動きを出し抜いて、自分の思い通りの動作をさせる方法を探さないといけないことになったりします。こうなると、腰をすえて長い勉強の始まりとなります。


さらに勉強が進んで、それらが理解できたとして、さらに細かな要望を実現したいとき、質問者さんの言われるように、自分の希望する動作をさせるには「用意されているListViweやGridViewなどが使えない」と判明することがあります。

わたしもC#でWindowsアプリを作っているとき、GridViewを自分の思うような動作をさせるには、機能が足りないことに気がついたことあります。このときは、GridViewのソースコードを追いかけて解析し、自分用のGridViewカスタムコンポーネントを作って対処しましたけど、元のコードが長くて時間がかかりましたね。

そして、私が勉強したとき、「C#によるカスタムコンポーネントプログラム」とか、「プログラミングADO.NET 2.0/マイクロソフト公式解説書」が役にたちました。

>>多分用意されているListViewやGridViewなどは使えないのでしょう。

そんなことはないです。今回のレベルなら、画面に表示したいデータをC#のコードを使って作り上げて、その結果をListViewやGridViewに表示するようにすればいいだけだと思います。
とはいえ、初心者にとっては、なかなか先の長い道のりであるのは、確かかもしれませんね。

まあ、同様のことはMSのデータベースソフトのAccessでも、昔のボーランドのDelphiでも、オープンソースのRubyonRailsでもありました。これらを使うと、ちょいちょいと...続きを読む


人気Q&Aランキング