using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Data.OleDb;
using ExcelLibrary.SpreadSheet;
using Excel = Microsoft.Office.Interop.Excel;
using Microsoft.Office.Interop.Excel;
namespace ClientManagementApp
{
public partial class FrmReport: Form
{
DataSet dstResults = new DataSet();
DataView myView;
DataSet dstConverted = new DataSet();
DataSet dstKeyData = new DataSet();
DataView myConvertedView;
DataView myKeyDataView;
DataSet dataSet = null;
public FrmReport()
{
InitializeComponent();
BindDataGrid();
}
private void BindDataGrid()
{
// DataTable dt = new DataTable();
System.Data.DataTable dtConverted = DataGridView2DataTable(dataGridView1, "Converted");
System.Data.DataTable dtKeyData = DataGridView2DataTable(dataGridView2, "KeyData");
dataGridView1.DataSource = dtConverted;
dataGridView2.DataSource = dtKeyData;
// dgvResults.DataSource = dt;
}
public System.Data.DataTable DataGridView2DataTable(DataGridView dgv, String tblName, int minRow = 0)
{
System.Data.DataTable dt = new System.Data.DataTable(tblName);
// Header columns
foreach(DataGridViewColumn column in dgv.Columns)
{
DataColumn dc = new DataColumn(column.Name.ToString());
dt.Columns.Add(dc);
}
// Data cells
for (int i = 0; i < dgv.Rows.Count; i++)
{
DataGridViewRow row = dgv.Rows[i];
DataRow dr = dt.NewRow();
for (int j = 0; j < dgv.Columns.Count; j++)
{
dr[j] = (row.Cells[j].Value == null) ? "" : row.Cells[j].Value.ToString();
}
dt.Rows.Add(dr);
}
// Related to the bug arround min size when using ExcelLibrary for export
for (int i = dgv.Rows.Count; i < minRow; i++)
{
DataRow dr = dt.NewRow();
for (int j = 0; j < dt.Columns.Count; j++)
{
dr[j] = " ";
}
dt.Rows.Add(dr);
}
return dt;
}
Excel.Application ExcelApp;
private void Btngenerate_Click(object sender, EventArgs e)
{
int maxs = 1;
FileName: int max = 0;
progressBar1.Minimum = 0;
++max;
progressBar1.Maximum = max;
progressBar1.Visible = true;
lbl_wait.Visible = true;
// Create a DataSet and put both tables in it.
System.Data.DataTable dtConverted = DataGridView2DataTable(dataGridView1, "Converted");
System.Data.DataTable dtKeyData = DataGridView2DataTable(dataGridView2, "KeyData");
dataSet = new DataSet("General");
dataSet.Tables.Add(dtConverted);
dataSet.Tables.Add(dtKeyData);
try
{
ExcelApp = new Excel.Application();
Microsoft.Office.Interop.Excel.Workbook xlWorkbook = ExcelApp.Workbooks.Add(Microsoft.Office.Interop.Excel.XlWBATemplate.xlWBATWorksheet);
// Loop over DataTables in DataSet.
DataTableCollection collection = dataSet.Tables;
for (int i = collection.Count; i > 0; i--)
{
Sheets xlSheets = null;
Microsoft.Office.Interop.Excel.Worksheet xlWorksheet = null;
//xlWorksheet.Name = "Mandate Summary";
//Create Excel Sheets
xlSheets = ExcelApp.Sheets;
xlWorksheet = (Microsoft.Office.Interop.Excel.Worksheet) xlSheets.Add(xlSheets[1],
Type.Missing, Type.Missing, Type.Missing);
System.Data.DataTable table = collection[i - 1];
xlWorksheet.Name = table.TableName;
for (int j = 1; j < table.Columns.Count + 1; j++)
{
ExcelApp.Cells[1, j] = table.Columns[j - 1].ColumnName;
}
// Storing Each row and column value to excel sheet
for (int k = 0; k < table.Rows.Count; k++)
{
for (int l = 0; l < table.Columns.Count; l++) {
ExcelApp.Cells[k + 2, l + 1] = table.Rows[k].ItemArray[l].ToString();
}
}
ExcelApp.Columns.AutoFit();
}
((Microsoft.Office.Interop.Excel.Worksheet) ExcelApp.ActiveWorkbook.Sheets[ExcelApp.ActiveWorkbook.Sheets.Count]).Delete();
ExcelApp.Visible = true;
//xlWorkbook.SaveAs("D:\\ClientData.xls");
xlWorkbook.SaveAs(@
"D:\ClientData-CR-DR-ALL-" + DateTime.Now.ToString("ddMMyyyy") + "-INP-" + maxs.ToString().PadLeft(6, '0') + ".xls");
lblreport.Text = "Report Generate Successfully";
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}++maxs;
progressBar1.Value++;
// goto FileName;
}
private void FrmReport_Load(object sender, EventArgs e)
{
//ReadData("SELECT ID,BankName,ContactPersonName,ContactNumber,EmailId,PORecieved,PayementRecievedDate,Remark,EToken,DigitalCertificate FROM tbl_ClientDetails",
ReadData("SELECT ID,NAME,AMT,AMC_INC,AMC,PAYMENT_RECVD,PayementRecievedDate,NARAT,VAT,S_T FROM tbl_ClientDetails",
ref dstConverted, "Converted");
myConvertedView = ((System.Data.DataTable) dstConverted.Tables["Converted"]).DefaultView;
ReadData("Select ID,NAME,AMT,W_E_F,PAYMENT_RECVD_vat,DSC_2,DSC_3 from tbl_ClientDetails", ref dstKeyData, "KeyData");
myKeyDataView = ((System.Data.DataTable) dstKeyData.Tables["KeyData"]).DefaultView;
dataGridView1.DataSource = myConvertedView;
dataGridView2.DataSource = myKeyDataView;
// dataGridView1.Refresh();
}
public void ReadData(string strSQL, ref DataSet dstMain, string strTableName = "default")
{
try
{
string connectionString = @
" Provider=Microsoft.ACE.OLEDB.12.0;Data Source=ClientMgmtDb1.accdb;";
// OleDbConnection cnn = conection();
OleDbConnection cnn = new OleDbConnection(connectionString);
OleDbCommand cmd = new OleDbCommand(strSQL, cnn);
cnn.Open();
OleDbDataAdapter da = new OleDbDataAdapter(cmd);
da.Fill(dstMain, strTableName);
da.Dispose();
cnn.Close();
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
}
}
}In this code snippet you will learn How to Download Database to Excel Sheet.
