Arşiv

Selamlar...
MVC ile ExtJs kullanarak excel çıktısı alma işlemine http://zamkinos.net/blog/Posts.aspx?PostID=5 yazımızda değinmiştik.
Kabaca tarif etmek gerekirse; js dosyamızda yazdığımız adresi Controller sınıfının içinde tanımladığımızda çağırabiliyorduk.
Web Form'da da WebMethod tanımlayarak istemci tarafından sunucu tarafındaki metotlara erişebiliyoruz.
Ancak iş excel'den çıktı almaya geldiğinde Web Method işimizi çözmüyor.
İnternette araştırdığım yerlerin tümündeki çözümler işe yaramadı ve bu excel çıktısı işini bir aspx sayfası yaparak çözme yoluna gittim.
Javascript tarafında bir form oluşturup, parametrelerimizi ekliyoruz. Aşağıdaki fonksiyonu bir excele çıktı butonunun click olayında tetikleyebiliriz.
    function formuPostalaExcel() {
        var form = new Ext.form.Panel({});
        form.getForm().submit({
            timeout: 120000,
            hidden: true,
            standardSubmit: true,
            url: 'ExcelExport.aspx',
            params: {
                param1: Ext.getCmp('txtParam1').getValue(),
                param2: Ext.getCmp('txtParam2').getValue(),
                param3: Ext.getCmp('txtParam3').getValue(),
                param4: Ext.getCmp('txtParam4').getValue(),
                param5: Ext.getCmp('txtParam5').getValue()
            },
            failure: function (form, action) {
                alert(action);
            }
        });
    }
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace ExcelCikti
{
    public partial class ExcelExport : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            string param1 = Request.Params["param1"].ToString();
            string param2 = Request.Params["param2"].ToString();
            string param3 = Request.Params["param3"].ToString();
            string param4 = Request.Params["param4"].ToString();
            string param5 = Request.Params["param5"].ToString();
            List<Musteri> lst = musterileriGetir(param1, param2, param3, param4, param5);
            StringBuilder sb = GenelIslemler.List2ExcelSb(lst); // http://zamkinos.net/blog/Posts.aspx?PostID=5 
            string sFileName = "MusteriListesi_" + GenelIslemler.strTarihiGetir() + ".xls";
            Response.AppendHeader("content-disposition", "attachment;filename=" + sFileName);
            Response.ContentType = "application/ms-excel";
            Response.ContentEncoding = Encoding.Unicode;
            Response.BinaryWrite(Encoding.Unicode.GetPreamble());
            Response.ContentType = "application/vnd.ms-excel";
            Response.Write(sb.ToString());
            Response.End();
        }
        private List<Musteri> musterileriGetir(string param1, string param2, string param3, string param4, string param5)
        {
            VeritabaniIslemleri vtIslem = new VeritabaniIslemleri();
            DataTable dtMaddeler = vtIslem.ReturnDataTable("SELECT Adi, No FROM Musteri"); // parametreler de eklenecek duruma göre.
            List<Madde> lst = new List<Madde>();
            foreach (DataRow dr in dtMaddeler.Rows)
            {
                lst.Add(new Musteri()
                {
                    Adi = dr["Adi"].ToString(),
                    No = dr["No"].ToString()
                });
            }
            return lst;
        }
    }
}
Saygılar...
# Kategoriler : C# Yazılım
# Etiketler : Etiket Yok
# Yorumlar : 0 Yorum Yorum Yaz

Selamlar...

Gene gerçek bir örnek üzerinden gidelim.
Edefter için Maliye'den paylaşılan stil dosyaları var. Ona uygun XML hazırlandığında uygun bir şekilde görüntülenmesini sağlıyor.
Bu XML dosyaları HTML biçiminde görüntüleniyor ama boyutları çok büyük olduğundan tarayıcıda açmakta sıkıntı yaşanıyor.
Oysa bu dosyaları PDF'ye çevirsek hem boyutu küçülüyor, hem de çok rahatlıkla görüntülenebiliyor.
Piyasada bunu yapan ücretli programlar var.
Peki ama bunu ücretsiz bir şekilde nasıl yaparız?
NReco.PdfGenerator diye bir DLL var ücretsiz. Ben bunu kullandım.
using NReco.PdfGenerator;
using System;
using System.Collections.Generic;
using System.IO;
using System.Windows.Forms;
using System.Xml.Xsl;
namespace Xml2Pdf
{
    public partial class Xml2Pdf : Form
    {
        public Xml2Pdf()
        {
            InitializeComponent();
        }
         
        private void btnXml2Pdf_Click(object sender, EventArgs e)
        {
            DirectoryInfo di = Directory.CreateDirectory("C:\\XmlPdf\\");
            string xsltYevmiye = "yevmiye.xslt";
            string xsltKebir = "kebir.xslt";
            string xsltBerat = "berat.xslt";
            string xsltAdres = "";
            lblBaslangicZamani2.Text = DateTime.Now.ToString("");
            dizinSecimDialog.SelectedPath = @"\\10.0.0.1\EDEFTER";
            DialogResult result = dizinSecimDialog.ShowDialog();
            if (result == DialogResult.OK)
            {
                string[] files = Directory.GetFiles(dizinSecimDialog.SelectedPath,
 "*.xml", SearchOption.AllDirectories);
                foreach (string file in files)
                {
                    string htmlDosyasi = di.FullName + 
Path.GetFileName(file).Replace(".xml", ".html");
                    string pdfDosyasi = di.FullName + 
Path.GetFileName(file).Replace(".xml", ".pdf");
                    if (file.IndexOf("-KB-") > 0)
                    {
                        xsltAdres = xsltBerat;
                    }
                    else if (file.IndexOf("-YB-") > 0)
                    {
                        xsltAdres = xsltBerat;
                    }
                    else if (file.IndexOf("-K-") > 0)
                    {
                        xsltAdres = xsltKebir;
                    }
                    else if (file.IndexOf("-Y-") > 0)
                    {
                        xsltAdres = xsltYevmiye;
                    }
                    else
                    {
                        throw new Exception("Tanımsız şema tipi:(" + file + ")");
                    }
                    pdfOlustur(xsltAdres, file, htmlDosyasi, pdfDosyasi);
                }
                MessageBox.Show("Pdf dosyaları " + di.FullName 
+ " dizini altında oluşturulmuştur.", "İşlem Başarılı", MessageBoxButtons.OK, 
MessageBoxIcon.Information);
                lblBitisZamani2.Text = DateTime.Now.ToString("");
            }
        }
        private void pdfOlustur(string xsltAdres, string file, 
string htmlDosyasi, string pdfDosyasi)
        {
            XslCompiledTransform xslt = new XslCompiledTransform();
            xslt.Load(Path.GetDirectoryName(file) + "\\" + xsltAdres);
            xslt.Transform(file, htmlDosyasi);
            HtmlToPdfConverter htmlToPdf = new HtmlToPdfConverter();
            htmlToPdf.GeneratePdfFromFile(htmlDosyasi, null, pdfDosyasi);
        }
    }
}


Saygılar...
# Kategoriler : C# Yazılım
# Etiketler : Etiket Yok
# Yorumlar : 0 Yorum Yorum Yaz

Selamlar...

Sql Server'da bir tabloda bir değerin hem Rusça, hem de Türkçe karşılığını tutma ihtiyacınız olduğunu varsayalım. İki alan tanımlayalım NVARCHAR türünde, TurkceAciklama ve RuscaAciklama şeklinde.

 

CREATE TABLE TABLOISMI(

[Id] [numeric](10, 0) IDENTITY(1,1) NOT NULL,

[TurkceAciklama] [nvarchar](60) NULL,

[RuscaAciklama] [nvarchar](60) COLLATE Cyrillic_General_CI_AS_KS NULL

)

 

Bu alana değer ataması yaparken de, string ifademizin önüne "N" eklemek gerekiyor.

 

INSERT INTO TABLOISMI VALUES ('Türkçesi', N'Rusçası:я,ё,ю,и,е,ь')

 

Saygılar...

# Kategoriler : Sql Server Veritabanı
# Etiketler : Etiket Yok
# Yorumlar : 0 Yorum Yorum Yaz

Arama
  Ara
Sayfalar
Takvim
<Temmuz 2017>
PSÇPCCP
262728293012
3456789
10111213141516
17181920212223
24252627282930
31123456
Bağlantılar