c# E-fatura görüntüleme aracı


c# ile hazırladığım basit bir e-fatura görüntüleme aracının kodlarını paylaşmak istedim.
GİB portaldan indirdiğiniz xml formatındaki faturayı HTML formatında görüntüleyip yazıcıdan çıktısını alabilirsiniz.
Umarım işinizi görür. Yorum ve görüşlerinizi paylaşırsanız dönüş yapmaya çalışırım.

Not: projede kullanılan general.xslt dosyasını ve gerekli kaynak kodu :

https://github.com/chnyksl/basics/raw/master/EFaturaGoruntuleyici.zip

adresinden indirebilirsiniz.






using System;
using System.IO;
using System.Text;
using System.Windows.Forms;
using System.Xml;
using System.Xml.XPath;
using System.Xml.Xsl;

namespace EFaturaGoruntuleyici
{
    public partial class FormMain : Form
    {
        Encoding en;
        string strXLST = "";
        private OpenFileDialog openFileDialog1;

        public FormMain()
        {
            InitializeComponent();
            openFileDialog1 = new OpenFileDialog();
            en = Encoding.UTF8;
            string startup_path = Application.StartupPath;
            string xlst_path = startup_path + "\\general.xslt";
            if (!File.Exists(xlst_path))
            {
                MessageBox.Show(xlst_path + " dosyası bulunamadı");
                return;
            }
            else
            {
                strXLST = File.ReadAllText(xlst_path, en);
            }
        }

        private void btnSelectFile_Click(object sender, EventArgs e)
        {
            if (openFileDialog1.ShowDialog() == DialogResult.OK)
            {
                try
                {
                    if (!openFileDialog1.FileName.ToLower().EndsWith(".xml"))
                    {
                        MessageBox.Show("sadece xml uzantılı dosyalar desteklenmektedir");
                        return;
                    }
                    var sr = new StreamReader(openFileDialog1.FileName);
                    txtFilePath.Text = openFileDialog1.FileName;
                    string strFaturaXML = sr.ReadToEnd();

                    string ErrMsg = "";
                    string strResult = Transform(strFaturaXML, strXLST, out ErrMsg);
                    
                    if (ErrMsg != "")
                        MessageBox.Show(ErrMsg);
                    else
                    {
                        webBrowser1.DocumentText = strResult;
                    }

                }
                catch (Exception ex)
                {
                    MessageBox.Show("Error message: " + ex.Message + Environment.NewLine + "Details:" + ex.StackTrace);
                }
            }
        }

        private void btnYazdir_Click(object sender, EventArgs e)
        {
            webBrowser1.ShowPrintDialog();
        }


        private string Transform(string XMLPage, string XSLStylesheet, out string ErrorMessage)
        {

            string result = "";
            ErrorMessage = "";
            try
            {
                // Reading XML
                TextReader textReader1 = new StringReader(XMLPage);
                XmlTextReader xmlTextReader1 = new XmlTextReader(textReader1);
                XPathDocument xPathDocument = new XPathDocument(xmlTextReader1);

                //Reading XSLT
                TextReader textReader2 = new StringReader(XSLStylesheet);
                XmlTextReader xmlTextReader2 = new XmlTextReader(textReader2);

                //Define XslCompiledTransform
                XslCompiledTransform xslt = new XslCompiledTransform();
                xslt.Load(xmlTextReader2);


                StringBuilder sb = new StringBuilder();
                TextWriter tw = new StringWriter(sb);

                xslt.Transform(xPathDocument, null, tw);

                result = sb.ToString();
            }
            catch (Exception ex)
            {
                ErrorMessage = ex.Message;
            }
            return result;
        }

    }
}





Yorumlar

Selim dedi ki…
Merhaba, inanılmaz işime yaradı. Paylaşımınız için çok teşekkür ederim.
Adsız dedi ki…
eyw saol eline sağlık
netlogs dedi ki…
10 numara :) teşekkürler, emeğinize sağlık.
iair bender dedi ki…
helal birader . interneti dort dönüyorum bi allahın kulu bişey yazmamış.

bende ek bilgi
2021 haziranda tarinde zip > xml dosyası açtım içinde attachement olarak xslt gömmüşler view/görünütlümek için gereken dosya.

efatura da xml var xslt dosyası yok diye heycan yapmayın. içine bakın.

<attachment <embed object bi tag onun içinde .
Adsız dedi ki…
Selam,

e-irsaliye görüntüleme var mı?
Adsız dedi ki…
Merhaba , ben bu xml seki herhangi bir childnode içindeki innertext i nasıl okurum ?
z dedi ki…
Teşekkür ederim.
Sağlıkla kalın, çok kullanışlı araç.
harun dedi ki…
tarayıcı iexplorer yerine başka tarayıcı nasıl seçebilirim iexplorer bazı xslt leri düzgün açmıyor

Bu blogdaki popüler yayınlar

Kablo Modem Netmaster CBW-700V VPN Ayarları

Sql mükerrer kayıtları silmek