前提・実現したいこと
C#でwindowsアプリを作成しています。
DBから読んだデータを全てエクセルに出力したいのですが、
DBの一番新しいデータしか出力できません。
解決方法ご教授いただけますでしょうか。
発生している問題・エラーメッセージ
エラーメッセージ
該当のソースコード
public void excel_OutPutEx() { String date = ""; String ginkou = ""; String kouza = ""; String kinn = ""; String bank = Form1obj.textBoxBank.Text.Trim(); String number = Form1obj.textBoxNumber.Text.Trim(); SqlConnection con1 = null; string constr = @"Data Source=pc2\sqlexpress;Initial Catalog=A;Connect Timeout=60;Persist Security Info=True;User ID=;Password=;MultipleActiveResultSets=True"; con1 = new SqlConnection(constr); con1.Open(); //Excelオブジェクトの初期化 Excel.Application ExcelApp = null; Excel.Workbooks wbs = null; Excel.Workbook wb = null; Excel.Sheets shs = null; Excel.Worksheet ws = null; try { //Excelシートのインスタンスを作る ExcelApp = new Excel.Application(); wbs = ExcelApp.Workbooks; wb = wbs.Add(); shs = wb.Sheets; ws = shs[1]; ws.Select(Type.Missing); ExcelApp.Visible = false; // エクセルファイルにデータをセットする //for ( int i = 1; i < 10; i++ ) //{ string sqlstr5 = "select date,kin from log_2 where bank = @bank and number = @number order by date ASC"; SqlCommand com5 = new SqlCommand(sqlstr5, con1); SqlParameter param5 = com5.CreateParameter(); param5 = com5.CreateParameter(); param5.ParameterName = "@bank"; param5.Value = bank; com5.Parameters.Add(param5); param5 = com5.CreateParameter(); param5.ParameterName = "@number"; param5.Value = number; com5.Parameters.Add(param5); SqlDataReader sdr5 = com5.ExecuteReader(); Excel.Range w_rgn = null; Excel.Range rgn = null; try { while (sdr5.Read()) { for (int i = 1; i < 20; i++) { w_rgn = ws.Cells; rgn = w_rgn[i,1]; //DBからデータを取得しエクセルへ出力 rgn.Value2 = sdr5.GetValue(0).ToString(); //kinn = sdr5.GetValue(1).ToString(); } } } finally { Marshal.ReleaseComObject(w_rgn); Marshal.ReleaseComObject(rgn); w_rgn = null; rgn = null; } //excelファイルの保存 wb.SaveAs(@"C:\logtest3.xlsx"); wb.Close(false); ExcelApp.Quit(); } finally { Marshal.ReleaseComObject(ws); Marshal.ReleaseComObject(shs); //Marshal.RelesaeComObject(wb); Marshal.ReleaseComObject(wbs); Marshal.ReleaseComObject(ExcelApp); ws = null; shs = null; wb = null; wbs = null; ExcelApp = null; GC.Collect(); } }
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
VisualStudio2013
ここにより詳細な情報を記載してください。
コードは ``` と ``` で囲ってください。インデントされて見やすくなりますので。(注: ``` はバッククォート 3 つです)
インデントされてないコードは質問者さん自身も見る気がしないのでは? 閲覧者・回答者はなおさらです。
削除済みや変更済みの履歴データを出力したいということですか?
履歴データを出力したいです。
テーブル内のデータを全て出力できれば良いのですが、、
つまり、データベースにあるデータを保存し、次にそのデータを変更した場合、変更する前のデータとした後のデータの両方がほしいということですか?
保存してあるデータをすべて出力したいです。
Y.H. さんの回答で質問の意図がわかりました。
伝わりづらく大変申し訳ございませんでした、ご指摘ありがとうございます。
指摘はなにもしていません。「新しい」が何を指すかわからなかったので尋ねただけです。次回の質問では「期待する出力」と「実際の出力」を記載すると誤解を招きにくいかと思います。
回答1件
あなたの回答
tips
プレビュー