- Dataset to Excel then reload
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Data;
- using System.Data.OleDb;
- using System.IO;
- using System.Drawing;
- using System.Linq;
- using System.Text;
- using System.Windows.Forms;
- using DocumentFormat.OpenXml.Packaging;
- using DocumentFormat.OpenXml;
- using DocumentFormat.OpenXml.Spreadsheet;
- namespace TestExcel1
- {
- public partial class Form1 : Form
- {
- public Form1()
- {
- InitializeComponent();
- }
- private string getFileName(string file)
- {
- string filename = Path
- .GetDirectoryName(System.Reflection.Assembly
- .GetExecutingAssembly().GetName().CodeBase) +
- "\" + file;
- filename = filename.Substring(6);
- return filename;
- }
- private string getConnString(string file)
- {
- string filename = getFileName(file);
- string connString = "Provider=Microsoft.ACE.OLEDB.12.0;" +
- "Data Source=" + filename + ";" +
- "Extended Properties=Excel 12.0;";
- return connString;
- }
- private void Form1_Load(object sender, EventArgs e)
- {
- loadData();
- }
- private void loadData()
- {
- string connString = getConnString("testv2003.xls");
- OleDbDataAdapter dbAdapter = new OleDbDataAdapter(
- @"Select LASTNAME, FIRSTNAME, BIRTHDATE, AGE, GENDER, CARDNO
- from [ELECTROLUX - FOR TESTING ONLY O$]", connString);
- DataSet myDataSet = new DataSet();
- dbAdapter.Fill(myDataSet, "ACUList");
- DataTable dataTable = myDataSet.Tables["ACUList"];
- dataGridView1.DataSource = dataTable;
- }
- private void dataGridView1_RowHeaderMouseDoubleClick(object sender, DataGridViewCellMouseEventArgs e)
- {
- removeData(e.RowIndex);
- }
- private void removeData(int position)
- {
- string connString = getConnString("testv2003.xls");
- OleDbDataAdapter dbAdapter = new OleDbDataAdapter(
- @"Select LASTNAME, FIRSTNAME, BIRTHDATE, AGE, GENDER, CARDNO
- from [ELECTROLUX - FOR TESTING ONLY O$]", connString);
- DataSet myDataSet = new DataSet();
- dbAdapter.Fill(myDataSet, "ACUList");
- DataTable dataTable = myDataSet.Tables["ACUList"];
- string selCardNo = dataTable.Rows[position].Field<string>("CARDNO").ToString();
- selCardNo = selCardNo.Replace("'", "");
- //MessageBox.Show(selCardNo);
- updateDataTable(selCardNo);
- }
- private void updateDataTable(string selected)
- {
- string connString = getConnString("testv2003.xls");
- OleDbDataAdapter dbAdapter = new OleDbDataAdapter(
- @"Select *
- from [ELECTROLUX - FOR TESTING ONLY O$]
- where CARDNO not like '%" + selected + "%'", connString);
- DataSet myDataSet = new DataSet();
- dbAdapter.Fill(myDataSet, "ACUList");
- Create(getFileName("testv2003.xls"), ToSheets(myDataSet));
- loadData();
- }
- static void Create(string path, Dictionary<String, List<OpenXmlElement>> sets)
- {
- using (SpreadsheetDocument package = SpreadsheetDocument.Create(path, SpreadsheetDocumentType.Workbook))
- {
- WorkbookPart workbookpart = package.AddWorkbookPart();
- workbookpart.Workbook = new Workbook();
- Sheets sheets = workbookpart.Workbook.AppendChild(new Sheets());
- foreach (KeyValuePair<String, List<OpenXmlElement>> set in sets)
- {
- WorksheetPart worksheetpart = workbookpart.AddNewPart<WorksheetPart>();
- worksheetpart.Worksheet = new Worksheet(new SheetData(set.Value));
- worksheetpart.Worksheet.Save();
- Sheet sheet = new Sheet()
- {
- Id = workbookpart.GetIdOfPart(worksheetpart),
- SheetId = (uint)(sheets.Count() + 1),
- Name = set.Key
- };
- sheets.AppendChild(sheet);
- }
- workbookpart.Workbook.Save();
- }
- }
- static Dictionary<string, List<OpenXmlElement>> ToSheets(DataSet ds)
- {
- return
- (from dt in ds.Tables.OfType<DataTable>()
- select new
- {
- // Sheet Name
- Key = dt.TableName,
- Value = (
- // Sheet Columns
- new List<OpenXmlElement>(
- new OpenXmlElement[]
- {
- new Row(
- from d in dt.Columns.OfType<DataColumn>()
- select (OpenXmlElement)new Cell()
- {
- CellValue = new CellValue(d.ColumnName),
- DataType = CellValues.String
- })
- })).Union
- // Sheet Rows
- ((from dr in dt.Rows.OfType<DataRow>()
- select ((OpenXmlElement)new Row(from dc in dr.ItemArray
- select (OpenXmlElement)new Cell()
- {
- CellValue = new CellValue(dc.ToString()),
- DataType = CellValues.String
- })))).ToList()
- }).ToDictionary(p => p.Key, p => p.Value);
- }
- }
- }