Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on Jun 17th, 2012  |  syntax: None  |  size: 5.81 KB  |  hits: 14  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. Dataset to Excel then reload
  2. using System;
  3. using System.Collections.Generic;
  4. using System.ComponentModel;
  5. using System.Data;
  6. using System.Data.OleDb;
  7. using System.IO;
  8. using System.Drawing;
  9. using System.Linq;
  10. using System.Text;
  11. using System.Windows.Forms;
  12. using DocumentFormat.OpenXml.Packaging;
  13. using DocumentFormat.OpenXml;
  14. using DocumentFormat.OpenXml.Spreadsheet;
  15.  
  16.  
  17. namespace TestExcel1
  18. {
  19.     public partial class Form1 : Form
  20.     {
  21.         public Form1()
  22.         {
  23.             InitializeComponent();
  24.         }
  25.  
  26.         private string getFileName(string file)
  27.         {
  28.             string filename = Path
  29.                 .GetDirectoryName(System.Reflection.Assembly
  30.                 .GetExecutingAssembly().GetName().CodeBase) +
  31.                  "\" + file;
  32.             filename = filename.Substring(6);
  33.  
  34.             return filename;
  35.         }
  36.  
  37.         private string getConnString(string file)
  38.         {
  39.             string filename = getFileName(file);
  40.  
  41.             string connString = "Provider=Microsoft.ACE.OLEDB.12.0;" +
  42.                 "Data Source=" + filename + ";" +
  43.                 "Extended Properties=Excel 12.0;";
  44.  
  45.             return connString;
  46.         }
  47.  
  48.         private void Form1_Load(object sender, EventArgs e)
  49.         {
  50.             loadData();
  51.         }
  52.  
  53.         private void loadData()
  54.         {
  55.             string connString = getConnString("testv2003.xls");
  56.  
  57.             OleDbDataAdapter dbAdapter = new OleDbDataAdapter(
  58.                 @"Select LASTNAME, FIRSTNAME, BIRTHDATE, AGE, GENDER, CARDNO
  59.                 from [ELECTROLUX - FOR TESTING ONLY O$]", connString);
  60.  
  61.             DataSet myDataSet = new DataSet();
  62.             dbAdapter.Fill(myDataSet, "ACUList");
  63.  
  64.             DataTable dataTable = myDataSet.Tables["ACUList"];
  65.             dataGridView1.DataSource = dataTable;
  66.         }
  67.  
  68.         private void dataGridView1_RowHeaderMouseDoubleClick(object sender, DataGridViewCellMouseEventArgs e)
  69.         {
  70.             removeData(e.RowIndex);
  71.         }
  72.  
  73.         private void removeData(int position)
  74.         {
  75.             string connString = getConnString("testv2003.xls");
  76.  
  77.             OleDbDataAdapter dbAdapter = new OleDbDataAdapter(
  78.                 @"Select LASTNAME, FIRSTNAME, BIRTHDATE, AGE, GENDER, CARDNO
  79.                 from [ELECTROLUX - FOR TESTING ONLY O$]", connString);
  80.  
  81.             DataSet myDataSet = new DataSet();
  82.             dbAdapter.Fill(myDataSet, "ACUList");
  83.  
  84.             DataTable dataTable = myDataSet.Tables["ACUList"];
  85.  
  86.             string selCardNo = dataTable.Rows[position].Field<string>("CARDNO").ToString();
  87.             selCardNo = selCardNo.Replace("'", "");
  88.             //MessageBox.Show(selCardNo);
  89.  
  90.             updateDataTable(selCardNo);
  91.         }
  92.  
  93.         private void updateDataTable(string selected)
  94.         {
  95.             string connString = getConnString("testv2003.xls");
  96.  
  97.             OleDbDataAdapter dbAdapter = new OleDbDataAdapter(
  98.                 @"Select *
  99.                 from [ELECTROLUX - FOR TESTING ONLY O$]
  100.                 where CARDNO not like '%" + selected + "%'", connString);
  101.  
  102.             DataSet myDataSet = new DataSet();
  103.             dbAdapter.Fill(myDataSet, "ACUList");
  104.  
  105.             Create(getFileName("testv2003.xls"), ToSheets(myDataSet));
  106.  
  107.             loadData();            
  108.         }
  109.  
  110.         static void Create(string path, Dictionary<String, List<OpenXmlElement>> sets)
  111.         {
  112.             using (SpreadsheetDocument package = SpreadsheetDocument.Create(path, SpreadsheetDocumentType.Workbook))
  113.             {
  114.                 WorkbookPart workbookpart = package.AddWorkbookPart();
  115.                 workbookpart.Workbook = new Workbook();
  116.  
  117.                 Sheets sheets = workbookpart.Workbook.AppendChild(new Sheets());
  118.  
  119.                 foreach (KeyValuePair<String, List<OpenXmlElement>> set in sets)
  120.                 {
  121.                     WorksheetPart worksheetpart = workbookpart.AddNewPart<WorksheetPart>();
  122.                     worksheetpart.Worksheet = new Worksheet(new SheetData(set.Value));
  123.                     worksheetpart.Worksheet.Save();
  124.  
  125.                     Sheet sheet = new Sheet()
  126.                     {
  127.                         Id = workbookpart.GetIdOfPart(worksheetpart),
  128.                         SheetId = (uint)(sheets.Count() + 1),
  129.                         Name = set.Key
  130.                     };
  131.                     sheets.AppendChild(sheet);
  132.                 }
  133.                 workbookpart.Workbook.Save();
  134.             }
  135.         }
  136.  
  137.         static Dictionary<string, List<OpenXmlElement>> ToSheets(DataSet ds)
  138.         {
  139.             return
  140.                 (from dt in ds.Tables.OfType<DataTable>()
  141.                  select new
  142.                  {
  143.                      // Sheet Name
  144.                      Key = dt.TableName,
  145.                      Value = (
  146.                          // Sheet Columns
  147.                      new List<OpenXmlElement>(
  148.                         new OpenXmlElement[]
  149.                 {
  150.                     new Row(
  151.                         from d in dt.Columns.OfType<DataColumn>()
  152.                         select (OpenXmlElement)new Cell()
  153.                         {
  154.                             CellValue = new CellValue(d.ColumnName),
  155.                             DataType = CellValues.String
  156.                         })
  157.                 })).Union
  158.                          // Sheet Rows
  159.                      ((from dr in dt.Rows.OfType<DataRow>()
  160.                        select ((OpenXmlElement)new Row(from dc in dr.ItemArray
  161.                                                        select (OpenXmlElement)new Cell()
  162.                                                        {
  163.                                                            CellValue = new CellValue(dc.ToString()),
  164.                                                            DataType = CellValues.String
  165.                                                        })))).ToList()
  166.                  }).ToDictionary(p => p.Key, p => p.Value);
  167.         }
  168.     }
  169. }