データベースからデータを取得してグリッドに配置する関数があります。私は次のコードを使用します:SQLサーバーからDataGridViewからExcelにデータを取得する方法
ds = new DataSet();
SQL = "SELECT * " +
"FROM table ";
using (SqlConnection conn = new SqlConnection(Connect))
{
conn.Open();
adapter = new SqlDataAdapter(SQL, conn);
adapter.Fill(ds, "data");
}
dgvInvoiceData.DataSource = ds.Tables[0];
これはうまくいきます。場合によっては、グリッドをExcelにコピーすることがあります。これは小さな結果セットに対して十分に機能します。一度50行を超えると、すぐに使用できなくなります。私は配列に範囲を設定しようとしましたが、これは毎回失敗します。
int cols = 0;
int rows;
_Application XL = new Microsoft.Office.Interop.Excel.Application();
_Workbook workbook = XL.Workbooks.Add(Type.Missing);
_Worksheet worksheet = null;
Range xlr;
XL.Visible = false;
worksheet = workbook.ActiveSheet;
worksheet.Name = sheetName;
xlr = worksheet.Range["A0:B02"];
xlr = worksheet.get_Range("A0:" + (char)(64 + cols) + rows.ToString());
xlr = worksheet.get_Range("A0:" + (char)(64 + cols) + rows.ToString(), Type.Missing);
worksheet.get_Range("A0:" + (char)(64 + cols) + rows.ToString(), Type.Missing).Value2 = dt;
それへの配列または類似した何かを設定し、その後範囲を取得しようとする多くの試みがあります。
は私が型「System.Runtime.InteropServices.COMException」の未処理の例外がAspireExcel.dllで発生したいくつかの役に立たないエラーを取得
データを取得するためのより良い方法があればそのデータソースをExcelに直接渡すことができるグリッド、またはそれでうまくいくかもしれません。
これが関連しているかどうかわかりませんが、thisを見ると、Excelの変数が少し違っています。私は
using Microsoft.Office.Interop;
using Microsoft.Office.Interop.Excel;
Excel.Application XL = new Excel.Application();
を試したとき、私は型または名前空間名「Excelは」が見つかりませんでした
を取得する(あなたがusingディレクティブまたはアセンブリ参照が不足している?)エクセルC:\コード\ Excel \ Excel \ Transfer.cs 190アクティブ
私は間違った参照がありますか?私はMicrosoft.Office.Coreを持っています& Microsoft.Office.Interop.Excel
[EPPlus](http://epplus.codeplex.com)を見てみましょう、それが良い作品 – sallushan