Thursday, October 11, 2018

டாட்நெட் தொழில்நுட்பம் கற்றுக் கொள்ளலாம்-15-1


சி ஷார்ப்பில் எவ்வாறு எக்ஸல் ஃபைல் உருவாக்குவது எப்படி?
பின் வரும் கோடிங் ஆனது COM interop பயன்படுத்தி எவ்வாறு ஒரு எக்ஸல் ஃபைல் உருவாக்குவதற்கு பயன்படுகின்றது. இவ்வாறு உருவாக்குவதற்கு நம் கணினியில் எக்ஸல் நிறுவப்பட்டிருக்க வேண்டும்.
Excel Library
இதற்கு visual c# project-ல்  Microsoft Excel 15.0 Object Library என்கின்ற ரெஃபரென்ஸ் சேர்க்க பட்டிருக்க வேண்டும்.
புதிதாக c# ப்ரொஜெக்ட் உருவாக்கி அதில் command button ஒன்றை ஃபார்மில் சேர்த்துக் கொள்ளவும்.
COM Interop பயன்படுத்தி எவ்வாறு Excel Spreadsheet உருவாக்குவது எப்படி?
விசுவல் ஸ்டுடியோவில் project –மெனுவில் இருந்து add reference என்பதை செலெக்ட் செய்து Microsoft Excel 15.0 Object Library  என்பதை (இடது புறம் COM என்பதை செலெக்ட் செய்யவும்).
Select and click OK button
நிரல் மூலம் எக்ஸல் ஃபைல் உருவாக்குவது எப்படி?
முதலில் Excel application Object ஒன்றினை உருவாக்கவும்.

Excel.Application xlApp = new
Microsoft.Office.Interop.Excel.Application();

இதற்கு முன் நம் கணினியில் எக்ஸ்ல் நிறுவப் பட்டிருக்கின்றதா என்பதை உறதிப் படுத்திக் கொள்ளவும்.
if (xlApp == null)
{
    MessageBox.Show("Excel is not properly installed!!");
    return;
}

இப்போது ஒரு வொர்க் புக் ஒன்றினை உருவாக்குவோம்.

xlWorkBook = xlApp.Workbooks.Add(misValue);

இப்பொழுது வொர்க் சீட்டினை உருவாக்கவும்.

xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);
xlWorkSheet.Cells[1, 1] = "ID";
xlWorkSheet.Cells[1, 2] = "Name";
xlWorkSheet.Cells[2, 1] = "1";
xlWorkSheet.Cells[2, 2] = "One";
xlWorkSheet.Cells[3, 1] = "2";
xlWorkSheet.Cells[3, 2] = "Two";

இப்பொழுது இரண்டாவது சீட்டை உருவாக்கவும்.

xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(2);
xlWorkSheet.Cells[1, 1] = "Sheet 2 content";

Excel file (SaveAs() method) சேவ் செய்தல்.
இப்பொழுது நாம் உருவாக்கிய எக்ஸல் ஃபைலை சேவ் செய்து கொள்ளவும்.

xlWorkBook.SaveAs("your-file-name.xls");

மிகவும் முக்கியமான விசயம் என்னவென்றால் Excel COM ஆப்ஜெக்ட் ஒவ்வொன்றையும் முடிவில் null மதிப்பிருத்தப்பட வேண்டும்.
Marshal.ReleaseComObject (excelWB);
Marshal.ReleaseComObject (excelApp);


 Marshal class is ஆனது System.Runtime.InteropServices என்கின்ற  namespace –ல் உள்ளது.

using System.Runtime.InteropServices;

Creating an Excel Spreadsheet Programmatically
பின் வரும் நிரல் காப்பி செய்து உங்கள் புராஜெக்டில் பேஸ்ட் செய்யவும்.

using System;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using Excel = Microsoft.Office.Interop.Excel;

namespace WindowsFormsApplication3
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application();

            if (xlApp == null)
            {
                MessageBox.Show("Excel is not properly installed!!");
                return;
            }


            Excel.Workbook xlWorkBook;
            Excel.Worksheet xlWorkSheet;
            object misValue = System.Reflection.Missing.Value;

            xlWorkBook = xlApp.Workbooks.Add(misValue);
            xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);
           
            xlWorkSheet.Cells[1, 1] = "ID";
            xlWorkSheet.Cells[1, 2] = "Name";
            xlWorkSheet.Cells[2, 1] = "1";
            xlWorkSheet.Cells[2, 2] = "One";
            xlWorkSheet.Cells[3, 1] = "2";
            xlWorkSheet.Cells[3, 2] = "Two";



            xlWorkBook.SaveAs("d:\\csharp-Excel.xls", Excel.XlFileFormat.xlWorkbookNormal, misValue, misValue, misValue, misValue, Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue);
            xlWorkBook.Close(true, misValue, misValue);
            xlApp.Quit();

            Marshal.ReleaseComObject(xlWorkSheet);
            Marshal.ReleaseComObject(xlWorkBook);
            Marshal.ReleaseComObject(xlApp);

            MessageBox.Show("Excel file created , you can find the file d:\\csharp-Excel.xls");
        }

    }
}

குறிப்பு: Microsoft.Office.Interop.Excel  என்பதை இம்போர்ட் செய்ய வேண்டும்.
using Excel = Microsoft.Office.Interop.Excel;
அடுத்தது எவ்வாறு ஒரு excel file ஒன்றினை ஒப்பன் செய்து ரீட் செய்து என்று பார்ப்போம்.
புதிதாக புராஜெக்ட் உருவாக்கி ஃபார்மில் கமாண்ட் பட்டன் சேர்த்துக் கொள்ளவும்.
விசுவல் ஸ்டுடியோவில் project –மெனுவில் இருந்து add reference என்பதை செலெக்ட் செய்து Microsoft Excel 15.0 Object Library  என்பதை (இடது புறம் COM என்பதை செலெக்ட் செய்யவும்).

using System.Windows.Forms;
using Excel = Microsoft.Office.Interop.Excel; 
 
namespace WindowsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            Excel.Application xlApp ;
            Excel.Workbook xlWorkBook ;
            Excel.Worksheet xlWorkSheet ;
            object misValue = System.Reflection.Missing.Value;
 
            xlApp = new Excel.Application();
            xlWorkBook = xlApp.Workbooks.Open("csharp.net-informations.xls", 0, true, 5, "", "", true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0);
            xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);
 
            MessageBox.Show(xlWorkSheet.get_Range("A1","A1").Value2.ToString());
 
            xlWorkBook.Close(true, misValue, misValue);
            xlApp.Quit();
 
            releaseObject(xlWorkSheet);
            releaseObject(xlWorkBook);
            releaseObject(xlApp);
        }
 
        private void releaseObject(object obj)
        {
            try
            {
                System.Runtime.InteropServices.Marshal.ReleaseComObject(obj);
                obj = null;
            }
            catch (Exception ex)
            {
                obj = null;
                MessageBox.Show("Unable to release the Object " + ex.ToString());
            }
            finally
            {
                GC.Collect();
            }
        } 
    }
}
How to read an Excel file using C#
 எக்ஸல் ஃபைல் ஒன்றின் நேம்டு ரேஞ்சஸ் எவ்வாறு கண்டு பிடிப்பது என்பதைக் காண்போம்

 
Excel.Application xlApp = new
Excel.Workbook xlWorkBook ;
Excel.Worksheet xlWorkSheet ;
Excel.Range range ;

அடுத்த படியாக எக்ஸல் ஒர்க் அப்ளிகேசனை உருவாக்கி வொர்க் புக் ஒன்றினை ஓபன் செய்வது எப்படி என்று காண்போம்.
 
xlApp = new Excel.Application();
xlWorkBook = xlApp.Workbooks.Open(@"d:\csharp-Excel.xls", 0, true, 5, "", "", true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0);
xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);

அடுத்தது எந்த range  என்பதைக் குறிப்பிட வேண்டும்.
How to specify a range in Excel sheet?
குறிப்பிட்ட செல் என்றால் நிரல் வரிகள் பின் வருமாறு இருக்க வேண்டும்.
 
Excel.Worksheet excelSheet = workbook.ActiveSheet;
Excel.Range rng = (Excel.Range)excelSheet.Cells[10, 10];

Reading Named Ranges in Excel

Worksheet.get_Range Method

ஒன்றுக்கு மேற்பட்ட செல் எனில் நிரல் வரிகள் பின் வருமாறு இருக்க வேண்டும்.
 
Excel.Worksheet excelSheet = workbook.ActiveSheet;
Excel.Range rng = (Excel.Range) excelSheet.get_Range(excelSheet.Cells[1, 1],
excelSheet.Cells[3,3]);

using System;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using Excel = Microsoft.Office.Interop.Excel; 
 
namespace WindowsFormsApplication4
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            Excel.Application xlApp ;
            Excel.Workbook xlWorkBook ;
            Excel.Worksheet xlWorkSheet ;
            Excel.Range range ;
 
            string str;
            int rCnt ;
            int cCnt ;
            int rw = 0;
            int cl = 0;
 
            xlApp = new Excel.Application();
            xlWorkBook = xlApp.Workbooks.Open(@"d:\csharp-Excel.xls", 0, true, 5, "", "", true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0);
            xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);
 
            range = xlWorkSheet.UsedRange;
            rw = range.Rows.Count;
            cl = range.Columns.Count;
 
 
            for (rCnt = 1; rCnt  < = rw; rCnt++)
            {
                for (cCnt = 1; cCnt  < = cl; cCnt++)
                {
                    str = (string)(range.Cells[rCnt, cCnt] as Excel.Range).Value2;
                    MessageBox.Show(str);
                }
            }
 
            xlWorkBook.Close(true, null, null);
            xlApp.Quit();
 
            Marshal.ReleaseComObject(xlWorkSheet);
            Marshal.ReleaseComObject(xlWorkBook);
            Marshal.ReleaseComObject(xlApp);
 
        }
 
    }
}


ads Udanz