データグリッド情報をExcelファイルにエクスポートしたいのですが、問題は、エクスポートしたいウィンドウから各ウィンドウで同じ関数を書き直す必要があることです。データグリッド情報をメイン機能に送信することはできますか?
コードは次のとおりです。
private void button2_Click(object sender, EventArgs e)
{
string name = textBox1.Text;
Excel.Application xlApp;
Excel.Workbook xlWorkBook;
Excel.Worksheet xlWorkSheet;
object misValue = System.Reflection.Missing.Value;
xlApp = new Excel.Application();
xlWorkBook = xlApp.Workbooks.Add(misValue);
xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);
int i = 0;
int j = 0;
for (i = 0; i <= dgvCostumers.RowCount - 1; i++)
{
for (j = 0; j <= dgvCostumers.ColumnCount - 1; j++)
{
DataGridViewCell cell = dgvCostumers[j, i];
xlWorkSheet.Cells[i + 1, j + 1] = cell.Value;
}
}
xlWorkBook.SaveAs(name + ".xls", Excel.XlFileFormat.xlWorkbookNormal, misValue, misValue, misValue, misValue, Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue);
xlWorkBook.Close(true, misValue, misValue);
xlApp.Quit();
releaseObject(xlWorkSheet);
releaseObject(xlWorkBook);
releaseObject(xlApp);
MessageBox.Show("Excel file created , you can find the file c:\\my documents\\" + name + ".xls");
textBox1.Text = "";
textBox1.Visible = false;
button1.Visible = true;
label2.Visible = false;
}
}
private void releaseObject(object obj)
{
try
{
System.Runtime.InteropServices.Marshal.ReleaseComObject(obj);
obj = null;
}
catch (Exception ex)
{
obj = null;
MessageBox.Show("Exception Occured while releasing object " + ex.ToString());
}
finally
{
GC.Collect();
}
}