2017-12-08 9 views
0

私はバルクエクセルのエクスポート操作を行っています。それはExcelを持っています。チャートがエクスポートされたデータに基づいてバインドする必要があります。しかし、データは文字列としてExcelに挿入されます。そのダイナミックなエクスポート私は1つのExcelファイルで10枚以上のシートを持っていますが、私はすべての操作に共通の方法を使用しています。だから私の全データは文字列として扱われました。私はその動的なのでintを変換することができません。Excelチャートは、Cからエクスポート中にバインドされていません。

 int rCnt; 
     int cCnt; 
     int rw = 0; 
     int cl = 0; 
       // Fill The Report Content Data Here 
       rw = dtblData.Rows.Count; 
       cl = dtblData.Columns.Count; 
       string[,] data = new string[rw, cl]; 
       for (var row = 1; row <= rw; row++) 
       { 
        for (var column = 1; column <= cl; column++) 
        { 
         data[row - 1, column - 1] = dtblData.Rows[row - 1][column - 1].ToString(); 
        } 
       } 
       Excel.Range endRange = (Excel.Range)xlWorkSheet.Cells[rw + (startrange.Cells.Row - 1), cl + (startrange.Cells.Column - 1)]; 
       Excel.Range writeRange = xlWorkSheet.Range[startrange, endRange]; 
       writeRange.WrapText = true; 
       writeRange.Borders.LineStyle = Microsoft.Office.Interop.Excel.XlLineStyle.xlContinuous; 
       writeRange.Value2 = data; 
       data = null; 
       startrange = null; 
       endRange = null; 
       writeRange = null; 
あなたがタイプ stringの配列と「カウント」列のない intを使用しているので、それが起こる

enter image description here

+0

あなたはinteropよりはるかに優れた結果を出しています.Epp plusをエクスポートするとよいでしょう。今のところ正確な解決策はありませんが、eppで試してみてください。 – Lucifer

+0

@Luciferその全体をEpp plus – Jzl

答えて

0

は、一つの方法は、厳密に型指定されたオブジェクトを使用することです(例では、構造体のリストですレンジ

ループトラフより
List<dataObj> data = new List<dataObj>(); 
for (var row = 1; row <= rw; row++) 
{ 
    for (var column = 1; column <= cl; column++) 
    { 
     dataObj d = new dataObj(); 
     d.DeniedSourceIp = dtblData.Rows[row - 1]["YourColNameOfDeniedSourceIp"].ToString(); 
     d.Count = int.Parse(dtblData.Rows[row - 1]["YourColNameOfCount"].ToString()); 
     data.Add(d); 
    } 
} 


struct dataObj 
{ 
    public string DeniedSourceIp { get; set; } 
    public int Count { get; set; } 
} 

とデータを挿入:それはデータを保持し、Excelワークシートにそれを埋めるよりも、ために)データオブジェクトあなたを表します。また

、オブジェクトの配列/リストを使用するように、なぜあなたのDataTableが強く型付けされた場合は、worklsheetを得意とし、あなたのデータテーブルからデータを直接注入することができ、あなたはそれを行うことができますRange使用する必要はいけない(?):

xlWorkSheet.Cells[i, j] = "somevalue"; 
0

いくつかの調査をした後、私はこれに適切な解決策を見つけました。私はデータを割り当てた後、コード行の下に追加しました。

writeRange.Value2 = data; writeRange.Formula = writeRange.Formula;

その前に私は私のExcelテンプレートに必要な形式を追加しました。私は数字の列をNumber形式と日付に変更しました。私のために仕事を冷やす。

関連する問題