Özgür Özvarış

Bir yazılımcının kırık dökük dünyası

Html olarak word dökümanı çıktısı oluşturmak

clock Mart 28, 2013 15:24 by author OzgurOzvaris

Değerli Arkadaşlar,

daha önceki uygulamamızda excel ile ilgili bir kaç örnek vermıştim.

http://www.ozgurozvaris.com/post/2013/02/07/MVC-Excel-Export.aspx

http://www.ozgurozvaris.com/post/2013/02/18/MVC-Excel-Export-2.aspx

Şimdi ise benzer bir şekilde word dokümanı nasıl alınır ona bakalım.

Kaynak

http://www.shotdev.com/asp/asp-word/asp-word-response-contenttype-application-vnd-ms-word/

<%@ Language=VBScript %>
<%
Option Explicit
Response.Buffer = TRUE
Response.ContentType = "application/vnd.ms-word"
Response.AddHeader "Content-Disposition", "attachment; filename = MyDoc.doc"
%>
<html>
<head>
</head>
<body>

<table width="600" border="1">
<tr>
<th width="91"> <div align="center">CustomerID </div></th>
<th width="98"> <div align="center">Name </div></th>
<th width="198"> <div align="center">Email </div></th>
<th width="97"> <div align="center">CountryCode </div></th>
<th width="59"> <div align="center">Budget </div></th>
<th width="71"> <div align="center">Used </div></th>
</tr>
<%

%>
<tr>
<td><div align="center"><%="5"%></div></td>
<td><%="test"%></td>
<td><%="test"%></td>
<td><div align="center"><%="test"%></div></td>
<td align="right"><%="test"%></td>
<td align="right"><%="test"%></td>
</tr>

</table>

</body>
</html>


Freefilesync dosya tabanlı olarak senkronizasyon

clock Mart 25, 2013 13:54 by author OzgurOzvaris

Değerli arkadaşlar,

Dosya tabanlı olarak senkronizasyon toolları her geçen gün artıyor dropbox, skydrive vs. Ancak bir boşluk dikkatimi çekti sadece size verilen klasörü syncronize ediyorlar.

Bu nedenle eğer başka bir klasördeki yedekleride almak istediğinizde ilave bir programa ihtiyaç duyabilirsiniz.

http://sourceforge.net/projects/freefilesync/ dosyasını tavsiye ederim. Şuan itibari ile internet te tutuğum favorite klasörümü web le senkronize etmeye başladım.

Küçük bir hileyi şeriye ile bir drop box, iki FreeFileSync programı ile iki farklı bilgisayarınızdaki internet explorerları veya klasörleri syncronize edebiliriniz. Ama eğer book mark syncronizasyonu ile ilgili bir şeyler araştıracaksanız. http://www.xmarks.com/ ve http://www.bookmarksync.com/ veya googleda -> Bookmark sync yazarak arama yapabilirsiniz. Bookmark syncronization toolu kullanan var ise artı eksisini paylaşırsa sevinirim.

freefilesync how to schedule??

Aynı zamanda oluşturduğunuz bir bach sync dosyasını windows scheduled task vasıtası ile düzenli olarak çalıştırabiliyorsunuz. Denedim sorunsuz çalışıyor...

c:\Program Files\...\FreeFileSync.exe <path of syncjob.ffs_batch>

http://sourceforge.net/projects/freefilesync/forums/forum/847542/topic/4670004

freefilesync ftp folder ile sencronize olamıyor ancak ftp folder'ı map eden uygulamalar var bunlarla çalıştığını söylemişler.

http://sourceforge.net/p/freefilesync/discussion/847542/thread/ad796c76/

Örn free ftp map drive programı.

http://www.ferrobackup.com/ftpuse/


İyi çalışmalar.



Loading the XML Document

clock Mart 25, 2013 12:16 by author OzgurOzvaris

Değerli Arkadaşlar,

Eğer bir xml dökümanı farklı browserlarda yüklemek isterseniz...

Kaynak

http://www.w3schools.com/xpath/xpath_examples.asp

<!DOCTYPE html>
<html>
<body>
<script>
function loadXMLDoc(dname)
{
if (window.XMLHttpRequest)
  {
  xhttp=new XMLHttpRequest();
  }
else
  {
  xhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xhttp.open("GET",dname,false);
xhttp.send("");
return xhttp.responseXML;
}

xml=loadXMLDoc("books.xml");
path="/bookstore/book/title"
// code for IE
if (window.ActiveXObject)
{
var nodes=xml.selectNodes(path);

for (i=0;i<nodes.length;i++)
  {
  document.write(nodes[i].childNodes[0].nodeValue);
  document.write("<br>");
  }
}
// code for Mozilla, Firefox, Opera, etc.
else if (document.implementation && document.implementation.createDocument)
{
var nodes=xml.evaluate(path, xml, null, XPathResult.ANY_TYPE, null);
var result=nodes.iterateNext();

while (result)
  {
  document.write(result.childNodes[0].nodeValue);
  document.write("<br>");
  result=nodes.iterateNext();
  }
}
</script>

</body>
</html>

İyi çalışmalar.



JqueryUI css faydalı bilgiler

clock Şubat 20, 2013 14:47 by author OzgurOzvaris

font büyüklüklerini ayarlıyor.

.ui-widget {
	font-family: Verdana,Arial,sans-serif;
	font-size: .8em;
}

Corner radius dialogların köşelerini ayarlıyor

/* Corner radius */
.ui-corner-all,
.ui-corner-top,
.ui-corner-left,
.ui-corner-tl {
	border-top-left-radius: 0px;
}
.ui-corner-all,
.ui-corner-top,
.ui-corner-right,
.ui-corner-tr {
	border-top-right-radius: 0px;
}
.ui-corner-all,
.ui-corner-bottom,
.ui-corner-left,
.ui-corner-bl {
	border-bottom-left-radius: 0px;
}
.ui-corner-all,
.ui-corner-bottom,
.ui-corner-right,
.ui-corner-br {
	border-bottom-right-radius: 0px;
}


MVC Excel Export - 2

clock Şubat 18, 2013 10:33 by author OzgurOzvaris

Değerli Arkadaşlar,

Bir önceki yazımızda SpreadsheetModel view oluşturarak excelimizi nasıl form submit işlemi sonucunda mvc üzerinden export edebileceğimizi öğrendik. Bu yazımızda ise eğer formumuzu submit etmek yerine sadece ajax mantığı ile sayfanın sadece ihtiyacımız olan datasını gönderip excel downlad nasıl yapacağımızı öğreneceğiz.

Internete baktığınız zaman ajax.post yöntemi ile gönderilen datalar sonucunda clienta gönderilen excel dosyalarının downlad edilemediğini göreceksiniz. Buna karşılık alternatif olarak kullanılan bir yöntemi çok beğendim sizlerle paylaşmak istedim.

Tabi önce kaynaklar,

http://stackoverflow.com/questions/2186562/post-to-server-receive-pdf-deliver-to-user-w-jquery

http://stackoverflow.com/questions/5742243/submitting-a-form-with-json-data-in-jquery

http://haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx

ve tabiki Kendi harmanlanmış projem

MVCExcelExport.zip (2,36 mb)

Model

public class SpreadsheetModel
    {
        public String fileName { get; set; }
        public String[,] contents { get; set; }
    }
public class PersonSearchModel
    {
        public string FileName { get; set; }

        public string Field1 { get; set; }

        public DateTime Field2 { get; set; }

        public PersonSearchChieldClass ChieldClass { get; set; }
    }

    public class PersonSearchChieldClass
    {
        public string Field1 { get; set; }

        public int Field2 { get; set; }
    }

Controller

public ActionResult Index(string Cell1, string Cell2)
        {

            SpreadsheetModel mySpreadsheet = new SpreadsheetModel();
            mySpreadsheet.contents = new String[3, 2] 
                { 
                    {Cell1,Cell2}, 
                    {"Cell21","Cell22"},
                    {"Celsdfsdl31","Csdfsdell3"} 
                };

            mySpreadsheet.contents[2, 1] = "test";

            mySpreadsheet.fileName = "test.xls";
            return View(mySpreadsheet);

        }
public ActionResult Index2(string filename, string format, string content)
        {
            string[] ContentData = content.Split(';');

            SpreadsheetModel mySpreadsheet = new SpreadsheetModel();
            mySpreadsheet.contents = new String[3, 2] 
                { 
                    {ContentData[0],ContentData[1]}, 
                    {"Cell21","Cell22"},
                    {"Celsdfsdl31","Csdfsdell3"} 
                };

            mySpreadsheet.contents[2, 1] = "test";

            mySpreadsheet.fileName = filename +".xls";
            return View("Index", mySpreadsheet);

        }
public ActionResult Index3(string Paramaters)
        {
            System.Web.Script.Serialization.JavaScriptSerializer serializer = new System.Web.Script.Serialization.JavaScriptSerializer();

            PersonSearchModel PersonSearchModel_ = new PersonSearchModel();

            PersonSearchModel_ = serializer.Deserialize<PersonSearchModel>(Paramaters);




            SpreadsheetModel mySpreadsheet = new SpreadsheetModel();
            mySpreadsheet.contents = new String[3, 2] 
                { 
                    {PersonSearchModel_.Field1,PersonSearchModel_.Field2.ToShortDateString()}, 
                    {PersonSearchModel_.ChieldClass.Field1,PersonSearchModel_.ChieldClass.Field2.ToString()},
                    {"Celsdfsdl31","Csdfsdell3"} 
                };

            mySpreadsheet.contents[2, 1] = "test";

            mySpreadsheet.fileName = PersonSearchModel_.FileName + ".xls";
            return View("Index", mySpreadsheet);

        }

View

jQuery.download = function (url, data, method) {
        //url and data options required
        if (url && data) {
            //data can be string of parameters or array/object
            data = typeof data == 'string' ? data : jQuery.param(data);
            //split params into form inputs
            var inputs = '';
            jQuery.each(data.split('&'), function () {
                var pair = this.split('=');
                inputs += '<input type="hidden" name="' + pair[0] + '" value="' + pair[1] + '" />';
            });
            //send request
            jQuery('<form action="' + url + '" method="' + (method || 'post') + '">' + inputs + '</form>')
		.appendTo('body').submit().remove();
        };
    };

    jQuery.downloadJson = function (url, data, method) {
        //url and data options required
        if (url && data) {
            //send request
            var formTagStr = '<form id="DocPost" action="' + url + '" method="' + (method || 'post') + '"> <input type="hidden" name="Paramaters" id="Paramaters"  /> </form>';

            jQuery(formTagStr).appendTo('body');

            //alert(data);

            $("#DocPost #Paramaters").val(data);

            $("#DocPost").submit().remove();
        };
    };
function test() {
        var ContentData = "5;test";

        ExcelExportAjaxPost('/ExcelExport/Index2', 'filename=mySpreadsheet&format=xls&content=' + ContentData);
    }

    function test2() {

        var PersonSearchChieldClass =
        {
            Field1: "Chield",

            Field2: 15 
        }

        var PersonSearchModel = {

            FileName : "test",

            Field1: "Master",

            Field2:"18.02.2013",

            ChieldClass: PersonSearchChieldClass
        }

        ExcelExportAjaxPost2('/ExcelExport/Index3', JSON.stringify(PersonSearchModel));


    }

    function ExcelExportAjaxPost(path, data) {

        $.download(path, data);
    }

    function ExcelExportAjaxPost2(path, data) {

        $.downloadJson(path, data);
    }
<h2>@ViewBag.Message</h2>
<p>
    Excel Export Yöntemleri
</p>

<a href="./ExcelExport?Cell1=aaa&Cell2=111"> Normal Excel çıktı Al</a>
<br />
<br />
<a  href="#" onclick="test()"> Ajax Excel çıktı Al (form data)</a>
<br />
<br />
<a  href="#" onclick="test2()"> Ajax Excel çıktı Al (json data)</a>

Burada bir inceliği belirtmem lazım. "downloadJson" javascript metoduna dikkat ederseniz dinamik olarak oluşturulan formun içinde json datayı taşıyan hidden parameters html elementinin value değerinin içine string olarak değeri yazmak yerine  $("#DocPost #Paramaters").val(data); şeklinde value değerini set ettiğimi göreceksiniz. Sebebi Gidip gelen data string olduğu için alt classlar için " ' " değeri kullanılıyor ancak direk value ya set ederseni bu tırnaklar çakışmaya neden oluyor.

Herkese iyi çalışmalar dilerim.

 

 



MVC Excel Export

clock Şubat 7, 2013 16:56 by author OzgurOzvaris

Değerli Arkadaşlar,

Önce kaynaklar

MVC3 Razor Export To Excel

JQuery jqGrid Export to Excel Using ASP.NET MVC Framework

Kendi Projem

MVC Excel Export - 2 Yazısınıda mutlaka okuyum. Projedeki linkler o yazıyla da bütünlük arz ediyor.

Klasik aspx de hepimizin bildiği standart bir excel export yöntemi vardır. Bu yöntemi mvc de kullananlarda gördüm ancak pek içime sinmedi. 

public ActionResult ExportToExcel()
        {
            var products = _productRepository.GetAll();

            var grid = new GridView();
            grid.DataSource = from p in products
                              select new
                                         {
                                             ProductName = p.ProductName,
                                             SomeProductId = p.ProductID
                                         };
            grid.DataBind();

            Response.ClearContent();
            Response.AddHeader("content-disposition", "attachment; filename=MyExcelFile.xls");

            Response.ContentType = "application/excel";

            StringWriter sw = new StringWriter();

            HtmlTextWriter htw = new HtmlTextWriter(sw);

            grid.RenderControl(htw);

            Response.Write(sw.ToString());

            Response.End();

            return View("Index"); 
        }

Bizin kullanacağımız yöntem biraz daha farklı olacak.

Önce Model Tasarlıyoruz

public class SpreadsheetModel
    {
        public String fileName { get; set; }
        public String[,] contents { get; set; }
    }

Sonra View tasarlıyoruz.

@model MvcApplication1.Models.SpreadsheetModel 
@{ 
    Layout = null; 
    Response.ContentType = "application/vnd.ms-excel"; 
    Response.AddHeader("Content-Disposition", "attachment; filename=" + Model.fileName); 
    //Content-Disposition is defined in RFC-2183 
} 
<?xml version="1.0" encoding="utf-16"?> 
<ss:Workbook xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"> 
    <ss:Worksheet ss:Name="Sheet1"> 
        <ss:Table> 
        @for (int i = 0; i < Model.contents.GetLength(0); ++i) 
        { 
            <ss:Row> 
            @for (int j = 0; j < Model.contents.GetLength(1); ++j) 
            { 
                <ss:Cell> 
                    <ss:Data ss:Type="String">@Model.contents[i, j]</ss:Data> 
                </ss:Cell> 
            } 
            </ss:Row> 
        } 
        </ss:Table> 
    </ss:Worksheet> 
</ss:Workbook>

 Son olarak Controller

public ActionResult Index()
        {
            SpreadsheetModel mySpreadsheet = new SpreadsheetModel();
            mySpreadsheet.contents = new String[3, 2] 
                { 
                    {"Cell11","Cell12"}, 
                    {"Cell21","Cell22"},
                    {"Celsdfsdl31","Csdfsdell3"} 
                };
            
            mySpreadsheet.contents[2,1] = "test" ;

            mySpreadsheet.fileName = "ProofOfConcept.xls";
            return View(mySpreadsheet); 

        }

Bu yapı bana daha şık gözüktü. Herkese iyi çalışmalar.



Sql In clause parameter

clock Şubat 6, 2013 17:18 by author OzgurOzvaris

Değerli Arkadaşlar,

Sql cümlesine parametre olarak dizi geçmek isterseniz için 3 yöntem tespit ettim.

Önce Kaynaklar :

Parameterizing an SQL IN clause?

C# and Table Value Parameters

Örnek Proje

1. Yöntem

string[] tags = new string[] { "A", "D", "C", "F" };
string cmdText = "SELECT * FROM Table1 WHERE F2 IN ({0})";

string[] paramNames = tags.Select(
    (s, i) => "@tag" + i.ToString()
).ToArray();

string inClause = string.Join(",", paramNames);
using (SqlCommand cmd = new SqlCommand(string.Format(cmdText, inClause)))
{
    for (int i = 0; i < paramNames.Length; i++)
    {
        cmd.Parameters.AddWithValue(paramNames[i], tags[i]);
    }

    GridView1.DataSource = GetData(cmd); ;

    GridView1.DataBind();
}

2. Yöntem

DataTable dataTable = new DataTable("SampleDataType");
//we create column names as per the type in DB 
dataTable.Columns.Add("SampleString", typeof(string));
            
//and fill in some values 
dataTable.Rows.Add("A");
dataTable.Rows.Add("D");
dataTable.Rows.Add("C"); 

string cmdText = "SELECT Tags.* FROM Table1 Tags JOIN @tagNames as P ON Tags.F2 = P.Name";

SqlCommand cmd = new SqlCommand(cmdText);

// value must be IEnumerable
cmd.Parameters.AddWithValue("@tagNames", dataTable).SqlDbType = SqlDbType.Structured;
cmd.Parameters["@tagNames"].TypeName = "dbo.TagNamesTableType";

GridView1.DataSource = GetData(cmd); ;

GridView1.DataBind();

3.Yöntem (Linq)

var inValues = new string[] { "A", "D", "C", "F" };

Database1Entities d = new Database1Entities();

var results = from tag in d.Table1
                where inValues.Contains(tag.F2)
                select tag;

GridView1.DataSource = results;

GridView1.DataBind();

İyi çalışmalar.



Linkler

clock Şubat 6, 2013 15:23 by author OzgurOzvaris
C#

Convert a Generic List to a Datatable

http://www.codeproject.com/Articles/83271/Convert-a-Generic-List-to-a-Datatable

Entity Framework

EntityFramework 4.1 Extensions for batch Delete and Update

http://kevww.wordpress.com/2012/02/08/entityframework-4-1-extensions-for-batch-delete-and-update/

Entity Framework Batch Update and Future Queries and Audit Log

http://weblogs.asp.net/pwelter34/archive/2011/11/29/entity-framework-batch-update-and-future-queries.aspx

Entity Framework Patterns: Unit of Work

http://rlacovara.blogspot.com/2009/04/entity-framework-patterns-unit-of-work.html

SQL Server

How to format datetime & date in Sql Server 2005

http://anubhavg.wordpress.com/2009/06/11/how-to-format-datetime-date-in-sql-server-2005/

http://www.sqlusa.com/bestpractices2005/centurydateformat/

How to recover modified records from SQL Server without Backup Explanation

http://raresql.com/2012/02/01/how-to-recover-modified-records-from-sql-server-part-1/

http://raresql.com/2012/02/01/how-to-recover-modified-records-from-sql-server-part-2/



Alternatif arama motorları

clock Şubat 6, 2013 09:21 by author OzgurOzvaris

Bu yazımda Alternatif arama motorlarını ve arama motorlarında gelinen noktayı yüzeysel olarak incelemeye çalışacağım.

Kullandığınız arama motoru hangisi desem. Bir çoğumuz google diyeceğiz. Bilindiği üzere belkide son 10 yılın en güncel ve yenilikçi arama motoru şüphesiz google. Peki google gücünü nerden alıyor. Bir kaç ana başlıkta sıralabiliriz.

1 - Hız, sadelik : Bilindiği üzere google sade arayüzü ve tıklar tıklamaz getirmesi ile hepimizin dikkatini çekmişti.

2 - Semantic Search : Eskiden aradağınızı bulmak için hedef sitedeki cümleyi tam olarak bulmanız gerekirdi. Ama google yazım hatalarınızı anlıyor ilişkiler kuruyor bunumu demek istediniz gibi sonuçlar çıkarıyor ve hedef sitelere sizi daha kolay ulaştırıyordu.

3- Google Bot : Eskiden bir arama motoruna sizin üye olmanız gerekirdi. Oysaki google daha siz siteyi açtığınız gün sizi buluyor ve indexliyordu. Buda inanılmaz bir veri havuzu meydan getiriyordu. Böylece hedef sitelere ulaşmak daha kolay hale geldi.

4 - AJax Search : Bu özellik son yıllarda google getirdiği en güzel özelliklerden birisiydi. Siz daha aramaya başlar başlamaz altta listeler gözükmeye başlıyordu.

Evet google bu özellikleri ile arama motorları arasından sıyrılmayı başardı. Yıllardır da çoğumuzun açılış sayfası bile oldu. Hatta internet gittimi deyince bile google sitesi geliyorsa internet vardır diyenlerimizde heralde az değiliz.

Peki reel anlamda gerçekten google hala bu özellikleri ile liderliği elinde bulunduruyor mu? Çok profesyonel olmamakla birlikte kısa bir araştırma ile aslında durumun böyle olmadığını ve farkın yavaş yavaş kapandığını görmek çok mümkün. Örnek olarak yahoo, bing, yandex'i tercih ettim.

1 Hız, sadelik :

 Artık alternatif arama motorlarıda yeteri kadar sade.

 

 

 

2 - Semantic Search

Artık alternatif arama motorlarıda semantic seach yapabiliyor.

 

 

 

3- Google Bot

Artık sıradan arama motorları da siz onlara kayıt yapmadan botları ile sizi bulabiliyor.

4 - AJax Search

Artık alternatif arama motorlarıda ajax search yapabiliyor.

 

 

 

Sonuç olarak, google artık böyle gider dediğimiz düşünürsek aslında yakın gelecekte durum pekte böyle olmayabilir gibi gözüküyor. Çok detaylı bir araştırma yapmamakla birlikte bende oluşan intiba yakın gelecekten google'ın tahtı sallanabilir. Rakipleri çok güçlü geliyor.

Ayrıca sanırım yerli arama motoru yapmak bir hayal değilmiş diyebileceğiz. Hakia geliştiricilerine ithaf olunur.

 

Herkese selamlar.

 

 

 



Mssql Transaction Log temizleme

clock Ocak 26, 2013 18:06 by author OzgurOzvaris
Transaction log larınız her geçen gün büyüyor ve mssql 2005 de shirk  database ile ne kadar uğraşsanızda bir türlü küçültemiyorsanız size güzel bir yöntem önericeğim. çat diye transaction log dosyalarınızın küçüldüğünü göreceksiniz.....

BACKUP LOG databasename WITH TRUNCATE_ONLY DBCC SHRINKFILE('logfilename', 1)
databasename  : Enterprise Managment Studio ile gözüken database adını yazmanız gerekiyor.
logfilename :  Enterprise Managment Studio (EMS) ile gözüken logfilename adını yazmanız gerekiyor. Dikkat etmeniz gereken bir nokta var. Bazen file olarak gözüken .ldf uzantılı dosya ile EMS den gözüken logfilename ismi farklı olabilir..

Herkese Kolay Gelsin....


Hakkımızda  AboneOl 

Blog Yayınımıza Hoşgeldiniz.

Month List

RecentPosts

Sign In