2017-02-17 4 views
0

私は、請求書の詳細を含むdatagridviewを持っています。また、合計金額を含むラベル。私はexcelにdatagridviewの値を追加し、Excelのdatagridviewの値の最後にあるラベルの合計を加えたいと思います。datagridviewとlabel vaueをExcelにエクスポートする

ここでは、datagridviewをエクセルにエクスポートする関数を使用しています。クリックイベントで呼び出します。

 private void ToCsV(DataGridView dGV, string filename) 
    { 
     string stOutput = ""; 
     // Export titles: 
     string sHeaders = ""; 

     for (int j = 0; j < dGV.Columns.Count; j++) 
      sHeaders = sHeaders.ToString() + Convert.ToString(dGV.Columns[j].HeaderText) + "\t"; 
     stOutput += sHeaders + "\r\n"; 
     // Export data. 
     for (int i = 0; i < dGV.RowCount - 1; i++) 
     { 
      string stLine = ""; 
      for (int j = 0; j < dGV.Rows[i].Cells.Count; j++) 
       stLine = stLine.ToString() + Convert.ToString(dGV.Rows[i].Cells[j].Value) + "\t"; 
      stOutput += stLine + "\r\n"; 
     } 
     Encoding utf16 = Encoding.GetEncoding(1254); 
     byte[] output = utf16.GetBytes(stOutput); 
     FileStream fs = new FileStream(filename, FileMode.Create); 
     BinaryWriter bw = new BinaryWriter(fs); 
     bw.Write(output, 0, output.Length); //write the encoded file 
     bw.Flush(); 
     bw.Close(); 
     fs.Close(); 
    } 

ここで、エクセルデータの最後に合計であるラベル値を追加します。私はラベル値を追加する例を見てきました。しかし、私の問題は、Excelのデータの最後に追加したいのです。だからそれは合計として言及することができます。どうやってやるの。私はそれで立ち往生した。誰か助けてくれますか?

+0

うーんコードである 'stOutput + = myLabel.Text +「\ rを\ n」は;'あなたはループはラベルが最後の行のテキスト作り終了後は? – JohnG

答えて

0

あなたのdatagridviewにはDataTableが入力されているとみなされます。あなたはopensourceであるEPPlusライブラリを使うことができます。ウェブからダウンロードし、アプリケーションを参照してください。ここでは... ..

Response.Clear(); 
Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; 
Response.AddHeader("content-disposition", "attachment;filename=" + HttpUtility.UrlEncode("Logs.xlsx", System.Text.Encoding.UTF8)); 

using (ExcelPackage pck = new ExcelPackage()) 
{ 
ExcelWorksheet ws = pck.Workbook.Worksheets.Add("Logs"); 
ws.Cells["A1"].LoadFromDataTable(dt, true);  

//Here you can add your Label value to whatever cells you want..for example- A1 or something 

var ms = new System.IO.MemoryStream(); 
pck.SaveAs(ms); 
ms.WriteTo(Response.OutputStream);       
} 
関連する問題