DevExpress Data Blog
  • Spreadsheet Mail Merge (Coming soon in v14.1)

    At DevExpress we are committed to innovation when it comes to working with and presenting data. Our reporting suite is second to none when it comes to pixel-perfect reporting. Snap was designed to bring mail-merge to the next level: flow based reporting. I am pleased to announce that in our upcoming release we will continue this type of innovation by adding a mail-merge feature to our Windows Spreadsheet control


    Included in the spreadsheet smart tag is the “Create Mail Merge Bars” link.

    Spreadsheet Tasks

    This action will add the necessary ribbon items to manage the mail merge functionality in the spreadsheet. Additionally, clicking on the “Create Field List Panel” will add the UI necessary for dragging and dropping fields from the data source.

    Mail Merge Tools

    The two important properties for filling the Field List are “MailMergeDataSource” and “MailMergeDataMember.”

    var connection = new SqlConnection(CONNECTION);
    var adapter = new SqlDataAdapter("SELECT * FROM Products", connection);
    var productsTable = new DataTable("Products");
    spreadsheetControl1.Document.MailMergeDataSource = productsTable;
    spreadsheetControl1.Document.MailMergeDataMember = "Products";

    The last two lines are the important bit really: it effectively sets the DataSource and DataMember of the underlying spreadsheet.


    You can add a Detail, Header, and Footer section to the document. Clicking on the “Mail Merge Design View” button will display each of the three regions that have been designated as the “bindable” sections. You can then either drag the fields into the corresponding sections or type them is as formulas.


    One of the neatest parts is the fact that these fields can also participate in excel functions. That even includes aggregate functions in the Header or Footer sections.

    Aggregate Formulas

    When clicking on the preview you get exactly what you would expect:


    The aggregate also expands into a sensible excel formula:

    Aggregate Preview

    Given that this is a spreadsheet we also added the option of the detail repetition happening vertically (as shown above) or horizontally.



    When it comes to showing data we have the greatest range of flexibility in terms of controls and approaches. I am looking forward to seeing what you create with this!

    As always, if there are any comments and/or questions, feel free to get a hold of me!

    Seth Juarez
    Twitter: @SethJuarez

  • Spreadsheet Control Chart API (Coming soon in v14.1)

    When it comes down to it, I am a programmer. That is what I went to school for: it’s what I like to do. While wizards and drag-and-drop are really cool, sometimes we just want to get down to the code and do things ourselves. This is particularly true when we want to generate certain types of documents like Word Documents, PDF’s, or spreadsheets. In upcoming release of .NET Spreadsheet control we introduce a new API which allows to create or modify embedded charts programmatically.

    Using Spreadsheet Chart API you can:

    • Create new chart of predefined type (Bar/Column, Line, Pie, etc.) using data from specified cell range;
    • Enumerate existing charts embedded to worksheet;
    • Find existing chart by id or name;
    • Setup chart Z-order and position (using cells as anchor points);
    • Change chart type, select data from cell range or specify literal data, toggle row/column data;
    • Add, remove, reorder chart series, change series type or data references;
    • Adjust axis properties (like position, orientation, scaling, min/max values, etc.);
    • Adjust chart and axis titles;
    • Apply predefined style to whole chart or adjust formatting (fill, outline, font) of chart objects (plot area, legend, series, data points);
    • Adjust data labels, markers, trend lines, error bars, etc.;
    • Copy chart to another worksheet.

    For example, let’s create complex chart based on the following data:


    First, add a couple of namespaces:

    using DevExpress.Spreadsheet;
    using DevExpress.Spreadsheet.Charts;
    using DevExpress.Spreadsheet.Drawings;

    Next create column clustered chart using data from specified cell range:

    IWorkbook workbook = spreadsheetControl1.Document;
    Worksheet worksheet = workbook.Worksheets.ActiveWorksheet;
    Chart chart = worksheet.Charts.Add(ChartType.ColumnClustered, worksheet["B2:D8"]);

    And setup chart position:

    chart.TopLeftCell = worksheet.Cells["F2"];
    chart.BottomRightCell = worksheet.Cells["M18"];

    Basic Chart

    Change type of second series and use secondary axes to make chart easy to read:

    chart.Series[1].AxisGroup = AxisGroup.Secondary;

    Chart Type

    Adjust legend position and apply chart style:

    chart.Legend.Position = LegendPosition.Bottom;
    chart.Style = ChartStyle.ColorGradient;

    Changing Legend

    Finally setup chart title, primary and secondary value axis titles and secondary value axis number format:

    chart.Title.SetValue("My Sales");
    chart.PrimaryAxes[1].Title.SetValue("Units sold");
    chart.SecondaryAxes[1].Title.SetValue("Total transactions");
    chart.SecondaryAxes[1].NumberFormat.FormatCode = "$#,##0";
    chart.SecondaryAxes[1].NumberFormat.IsSourceLinked = false;

    Title and Axis Setup

    Done! Notice how clean the API is to work with. This truly makes it super easy to generate any kind of spreadsheet in code.

    As always, if there are any comments and/or questions, feel free to get a hold of me!

    Seth Juarez
    Twitter: @SethJuarez

  • Windows Spreadsheet: Name Manager and Data Protection (Coming soon in v14.1)

    I thought I would elaborate a bit more on two of the new features we are introducing in our Windows Spreadsheet offering coming in 14.1.

    Name Manager

    This feature is quite simple actually: it lets you create a grouping of cells that can be used under a single name.

    Range Naming

    Once the name is created, this name can be used within pretty much any function.

    Named Function

    This is a great feature for simplifying complex formulas or for simply keeping track of different sets of data within your spreadsheet.

    Data Protection

    As Julian pointed out, we are adding worksheet and workbook protection. Setting this up is quite simple: one need simply click on Protect Sheet or Protect Workbook and set a password.

    Sheet Protection

    Once protections have been set, the user will be unable to make changes unless the worksheet or workbook is set to unprotected mode. Additionally, you can set a password that can be used to unlock the protected sheet/workbook.

    Unprotect Sheet

    Let’s get a bit more in depth about range protection. In this release you can create a set of ranges that are individually protected.

    Range Protection

    Once a sheet (or workbook) is protected, the edit ranges can be activated by supplying the appropriate password (for this specific range):

    Unlock Range

    These features combined create the ability to protect your spreadsheet from a macro (workbook/spreadsheet) down to the micro (range protection) level.

    Final Thoughts

    Spreadsheets are indeed one of the rare pieces of software that have endured the test of time. In the next couple of posts I will take a more in depth look at the new Chart Object Model and API as well as a new feature in spreadsheets that Julian did not mention: it is pretty fantastic.

    As always, if there are any comments and/or questions, feel free to get a hold of me!

    Seth Juarez
    Twitter: @SethJuarez

  • Reporting: New Web End User Designer (Coming soon in v14.1)

    You might have heard we are (finally) releasing an end user designer for the web. I’ve been wanting this gem for years! Imagine being able to manage reports (create, edit, view) all from the web! We promised more details so I’m here to spill the beans.


    Web End User Report Designer
    Under the hood it is a pure html5/js application that we’ve wrapped in an ASP.NET control. We relied heavily on Knockout for the actual binding mechanism on the control. In fact, the developers were pretty excited when they were showing me how the bindings did almost all of the heavy lifting in the component. We decided to wrap the initial version in an ASP.NET control simply because it is what our customers use. Will we release a pure html5/js version? Maybe: we’re not to that point yet. Which brings me to the next bit of information.

    Community Technology Preview

    This is a Community Technology Preview (or beta) of this new reporting technology. This means that it might still have some hiccups. This means that some of your reports might not work. This means we really want your input and feedback. It also means that you can get your hands on it a lot earlier too!

    What’s In?

    So here’s what we do support:

    • Design Surface: rulers, controls selection (using mouse or keyboard, including multiselect and select with ctrl-key), drag-drop, resize, margins resizing, band selection, resizing, and collapsing, snap during control dragging (to other controls/margins)
      Design Surface
    • Toolbar: copy/paste, undo/redo, zooming
    • Toolbox: XRLabel, XRRichText, XRCrossBandLine, XRCrossBandBox, XRPanel, XRTable, XRPictureBox, XRPageBreak, XRPageInfo, XRLine, XRShape, XRCheckBox, XRSparkline 
    • Property Grid: grouped editors for currently selected object, which supports not at all, but most of used properties - font, color, styles, margins/paddings, bindings, data sources, sort/group fields
      Property Grid
    • Field List: data source structure, with possibility to drag field on the design surface with automatic binding
      Field List
    • Parameters Panel: add/edit/remove parameters
      Parameters Panel

    What’s Out?

    There are a one thing that we deliberately left out and a couple of things we still want to implement.

    • Report Explorer Panel: We felt this would be fairly redundant given our new approach to band visualization.
      Band Explorer 
    • Missing Controls: XRChart, XRSparkline, XRPivotGrid - these controls cannot be currently edited so they are simply represented as a box with a title on the design surface.

    We will continue to work on these complex report controls and hope to have news about their implementation soon (that is a “marketing” soon if you know what I mean).

    Working With the WEUD

    Setup is extremely easy. I simply created an empty Web Project using our handy DevExpress Template Gallery and added a run-of-the-mill report (ProductReport). Next I added a new WebForm and dropped the WEUD control on the design surface.

    ASPXReportDesigner Control

    Next you need to add this ridiculously long code snippet (joking):

    Loading a Report

    Done! The designer should render as shown above (at the beginning of the article).

    Saving Reports

    This would be a horrible component if it did not provide a way to save the report. The WEUD provides a save button at the top left hand side of the designer itself.

    Saving a Report

    A corresponding event is fired wherein you can get a hold of the report layout and do pretty much whatever you like:

    Saving a Report with Code

    Final Thoughts

    Like I said before, we are extemely excited about the new possibilities this will bring to your already powerful applications. Please (please, please) send me your feedback. We feel this is a monumental tool we are introducing and want to get it absolutely right.

    As always, if there are any comments and/or questions, feel free to get a hold of me!

    Seth Juarez
    Twitter: @SethJuarez

  • Reporting: Improved Data Access (Coming soon in v14.1)

    While I’m here at TechEd I thought I would show you some of the great features we are adding in our 14.1 series of releases. In this release we have seriously put a lot of legwork into making the process of creating reports much simpler from the perspective of data access. We have taken a cue from the work we have done with dashboards and brought it over into our reporting suite.

    Data Wizard

    Creating a new XtraReport will display the following window inside of Visual Studio (in the End User Designer we omit the Inherited Report option):

    XtraReport Wizard

    This new approach makes it easy to connect to your database directly or through EF5/EF6.
    Now one can directly specify a connection string (that can be saved as part of the project).

    XtraReports Data Options

    This wizard can connect to 14 or so different data providers without any effort really. I think the most interesting bit is that we completely co-opted the dashboard query builder to allow a good range of flexibility for shaping your data.

    XtraReports Query Designer

    That’s right! You can completely dispense with creating a dataset (or any database object).


    As a reporting platform we take great pride in having our toolset conform to the data you provide. In this particular instance a single query does not provide the adequate infrastructure to do true master-detail reports (not the fake flattened ones). In this case we’ve provided the ability to add queries directly onto the data source:

    Add Query Command

    Adding a query really just fires up the query builder and creates an additional table from which you can bind. The key goodness lies in the ability to *relate* the queries to create a true master-detail relationship.

    Manage Query Relations

    Once this is done the Field List reflects the changes as you would expect.

    Report Field List

    These relationships are also understood when creating Detail Report bands:

    Adding Detail Band with Relationship

    In Closing

    These features will greatly speed up the process of creating powerful reports in a matter of minutes. Another good bit of news: these features are also included in the WinForms End User Designer. This allows you to offload the entire process of creating reports to those who are most interested and willing.

    There are a number of other things in the works so stay tuned.

    As always, if there are any comments and/or questions, feel free to get a hold of me!

    Seth Juarez
    Twitter: @SethJuarez

  • Kansas City Developer Conference 2014–Come See Me!

    Kansa City Developer ConferenceI’m pretty excited to be heading out to Kansas City right after our stint at TechEd (take a look at what Mehul had to say on that). One of my favorite parts of what I do involves getting out and speaking to developers regarding their data visualization and analysis needs. I will also come with our freshest (and unreleased 14.1) bits to give you a sampling of some of the great things we plan to feature in our upcoming release. Please stop by with your questions/issues/suggestions.

    I am also happy to say that I get to give a few talks:

    Dashboarding: The Developers Role in Data Analysis, and

    Practical Machine Learning.

    The first talk involves understanding data visualization principles in order to maximize the potential of our dashboards. It is a product agnostic talk that really focuses on the essence of what a dashboard is and what you should embrace and avoid.

    The second talk is a gentle introduction to machine learning. In essence we will be looking at building a recommendation engine as well as implementing anomaly detection. A recommender system is pretty self explanatory (we use them all of the time). Anomaly detection is the process whereby a machine detects abnormal patters in a sequence of events. It should be a lot of fun.

    Per their site, “The Kansas City Developer Conference, a Kansas City based non-profit, is pleased to announce our 6th annual event. The event is on the 15th, 16th & 17th of May, 2014 and will be held at the Kansas City Convention Center in downtown Kansas City.”

    There is still time to register! If you can’t attend but would like to visit with us (Amanda is coming as well) just drop me a note so we can make arrangements.

    As always, if there are any comments and/or questions, feel free to get a hold of me!

    Seth Juarez
    Twitter: @SethJuarez

  • Charting: New Chart Types, WPF Improvements and Simplified Display Options (Coming soon in v14.1)

    As we near 14.1 release time I wanted to show you a couple of great features we are adding to our charting offering.

    Nested Donut Series View

    Nested Donut Series View

    In this particular case we are looking at a number of data points at the same time. The inner and outer donuts represent the female and male population respectively. Additionally the donuts are further subdivided by age. Finally each donut represents a country. In the case of Brazil notice that the female to male ratio of the 15-64 age group is almost equal. The purpose of any good visualization is to provide a large amount of information at a glance. Using the nested donut judiciously should indeed help elucidate data in a concise manner.

    This new series view is available WinForms, ASP.NET, WPF, and Silverlight

    WinForms Chart Range Control

    Chart Range Control Client

    This particular client of the range control both informs and performs. I am a fan of using all available space when laying out informative and functional UI.

    WPF/Silverlight Improvements

    As we continue to improve our charting experience there are features which make it into one product group but don’t make it into the other. Two features previously available in WinForms will now be made available in WPF as well. These are automatic data aggregation and Funnel Series view.

    WPF Data Aggregation

    Here’s a look at your funnel view:

    WPF Funnel View

    This type of visualization is great to see how things “whittle” down over a particular process.

    Text Patterns (Previously Series Points Options)

    The best way to explain this is to look at the before and after:


    13.2 Point Options

    When it comes to editing the way points are displayed, our 13.2 release did not allow custom formats to be used when displaying items.


    14.1 Point Options

    Notice that the 14.1 release changes the flexibility dramatically. All standard .NET formatting can now be used to change the way any portion of the point labels are displayed.

    Overall I think it is a significant improvement and adds a breadth of options when displaying data effectively. It is also important to note that these options work across all platforms.

    Parting Words

    Overall I think we’ve got a number of exciting things happening with our charting toolset. There is yet a lot of innovation to come!

    As always, if there are any comments and/or questions, feel free to get a hold of me!

    Seth Juarez
    Twitter: @SethJuarez

  • Build 2014 Recap: S. Somasegar Interview

    One of the best parts of attending Microsoft conferences is the access we have to the people building the very tools we use day in and day out. S. Somasegar is the Corporate Vice President of the Developer Division at Microsoft. I was delighted to spend some time asking questions about some of the interesting announcements at BUILD 2014. Topics varied from Universal Windows Apps to open sourcing C#. We also talked about some of the fantastic developments with Azure and how they have improved their PaaS offerings. We also discussed what Microsoft intends to do to support those of us still on ASP.NET WebForms as well as WinForms. Would love your thoughts about what he said as well as the overall direction Microsoft is taking. As I have mentioned in earlier posts, I really like the new openness Microsoft is espousing with its developers. Enjoy!

    As always, if there are any comments and/or questions, feel free to get a hold of me!

    Seth Juarez
    Twitter: @SethJuarez

  • Build 2014–Day Two Observations

    After the conclusion of an eventful day two here at Build, I thought I would share some insight into what I thought it all meant. In a nutshell, we live in a post OS world and Microsoft is embracing it with Azure it while maintaining its flagship compiler in an interestingly new way. Let me elaborate a bit.


    It is hard to grasp the entire reality of what Roslyn actually means for .NET. If a static language is a house, the compiler is its foundation. What Microsoft in effect did with the Roslyn project is pick up the house and build a new foundation while attempting to maintain the integrity of the walls. My sources tell me that every single .NET product in Microsoft is now compiled using Roslyn. This is a remarkable feat. To one-up themselves, they decided to go ahead and open source the entire Roslyn compiler. The first and obvious question is “why?” In an interview with Mads Torgersen (more on that later) he mentioned that doing so would allow folks to do more interesting things not only with the languages themselves, but with how the languages interact within Visual Studio. In other words, partners would have the same advantages as Microsoft when building tooling around Visual Studio.

    .NET Foundation

    Also, with the creation of the .NET foundation, anyone can contribute to .NET making it a truly vibrant and potentially innovative platform for development. Notice that at the forefront of the list of those in the .NET community is Miguel de Icaza. At Mix 11 I remember he coined the phrase “We love C# more than Microsoft does.” I believe that is no longer the case. It seems to me that for truly native device experiences Microsoft is putting all of its support behind Xamarin.

    Xamarin Session

    What you see above is not a keynote, it is a regular conference session with a little less than 1200 in attendance. It is clear that not only is Microsoft putting its stamp of approval on the Xamarin approach, but the Microsoft community is eager to use .NET to deliver multi-device experiences.

    Windows Azure

    In yesterday’s summary I mentioned that we live in a post OS world. Devices are becoming the ubiquitous computing platform of choice for completing quick every day tasks. Yesterday we saw devices 9” and smaller get an incredible offer: a free OS. While this seems completely contradictory, Microsoft has “reimagined” (to use their favorite term) the OS in a non-OS way.

    Microsoft today announced a number of IaaS and PaaS improvements and features that make Azure the ultimate OS with devices being the new “programs” so-to-speak. Just like windows of yore welcomed programs from really any source (including competitors), they are now embracing devices in exactly the same way. They are making it easy to create the backend infrastructure to support these devices in a pretty amazing way. Never in my life could I have imagined a John Gruber presentation during a Microsoft keynote; yet nonetheless there it was. It turns out that if John himself wants to build a killer app with cloud persistence he really can only turn to Amazon or Microsoft – Apple can’t help. While IaaS is interesting, it’s PaaS that is compelling to me. On that front Microsoft made announcements for Web, Mobile, and Data use cases in the cloud.

    Web Announcements

    For web anyone can now easily scale a website, manage traffic, backup, and run long running jobs pretty easily directly from Visual Studio. Many of these features were previously in beta mode.

    Mobile Announcements

    Azure as a mobile backend handles a ton of functionality that would otherwise be difficult for a small shop to administer.

    Data Announcements

    And finally Azure as a repository of data is a compelling alternative.

    The idea that the cloud was the new Microsoft OS dawned on me when I looked at this:

    Azure Portal

    It looks like the control panel (or task manager) for an OS! While this is not a revelation to some, it has become clear to me that this is really the only play Microsoft has: it also turns out to be the best one.


    What does this mean for you dear DevExpress reader? I think it means it is an exciting time to be a developer in the .NET space. I also think it is a great opportunity for you to leverage some of the innovations we have been building into more traditional .NET technologies that are designed to bridge the gap between your current investments and the new directions Microsoft is taking.

    As always, if there are any comments and/or questions, feel free to get a hold of me!

    Seth Juarez
    Twitter: @SethJuarez

  • Build 2014–Day One Observations

    I thought I should jot down a couple of observations from Day 1 here at Build 2014. Would love your thoughts! Apologies for some of the blurry images up front.

    Windows Phone 8.1 Update

    While there was a ton of time spent on discussing the Windows Phone update, I thought the most interesting thing discussed was Cortana, the new Microsoft Digital Assistant. A lot of thought went into its implementation and it shows. It was designed to learn about the user in order to be more effective at displaying the right information at the right time. Two examples I think cut to the heart of it: context whittling (my term) and person based tasks. Context whittling is a situation where an additional query to Cortana on an already queried set returns a more refined result. In other words the context can be shrunk with each additional query. Person based tasks are tasks issued to Cortana based around a particular person. Whenever that person comes into context, Cortana reminds the user of a task related to the person in question.

    In addition to Cortana, a slew of new devices were announced by Stephen Elop:

    Lumia 930

    Lumia 630/635

    Windows 8.1 Update

    The next update to Windows is slated to contain a number of features designed to improve support for the keyboard and mouse. The first is an improved start screen:

    Windows Start Screen

    In addition to the new start screen efforts have been made to have a more desktop-friendly approach to apps: these will also run from the task bar and execute as normal apps. Early complaints regarding the fragmentation of the desktop experience appear to have resonated with Microsoft enough to make these important changes. Finally, enough noise was made about the start menu that it will one day make its way back into the OS for good (still a prototype):

    Windows 8 Start Menu

    Universal Windows Apps

    This portion of the keynote resonated with me primarily because it reminded me of XAF. Instead of targeting Windows and Web, UWA’s (I like to pronounce it yewas because I can) target both the Windows 8 device as well as the Windows 8 Phone device using a shared codebase. This also includes specific Visual Studio tooling to work with the shared and non-shared code.

    Uiversal Windows App

    This is only the beginning of it: Microsoft is also currently working on extending this type of application development to the XBox.

    Office Touch

    Microsoft announced their work on a Touch-Based office for Windows 8.

    PowerPoint Touch

    I personally love this application. It is clearly touch friendly and a great deal of effort was put into making the ribbon more touch friendly without sacrificing space.


    There were obviously a bunch of other things mentioned (internet of things, more phone features, open sourcing WinJS, etc.) in the keynote that I’ll leave for another time. The overwhelming feeling was one of optimism – a far cry from the first Build to say the least. Microsoft feels more open and developer friendly. Satya Nadella (Microsoft CEO) even showed up in a t-shirt and jeans to answer honest-to-goodness difficult questions (why should I choose to build for Windows Phone instead of Android?) in an open and conversational manner. They also spent a great deal of time discussing roadmap-type stuff. My feeling is that if Microsoft wants the Enterprise on board with what they are doing they should at least give them a heads-up (something Microsoft did today).

    Last and most important: Microsoft now realizes that it can no longer rely on revenue from the OS (particularly on devices 9” and smaller). In fact, it will no longer be selling the software but giving it away for free. While this was not necessarily trumpeted, I think it is a critical departure from Microsoft’s OS centric past to a device and service based future.

    We’ve had tons of folks stop by to chat and take a look at what we offer as well.

    DevExpress Booth

    It has been great learning what our customers are developing and what our potential customers are keen on creating.

    On to Day 2!

    As always, if there are any comments and/or questions, feel free to get a hold of me!

    Seth Juarez
    Twitter: @SethJuarez

1 2
4 5 6 7 8 9 10

Chat is one of the many ways you can contact members of the DevExpress Team.
We are available Monday-Friday between 7:30am and 4:30pm Pacific Time.

If you need additional product information, write to us at or call us at +1 (818) 844-3383


DevExpress engineers feature-complete Presentation Controls, IDE Productivity Tools, Business Application Frameworks, and Reporting Systems for Visual Studio, along with high-performance HTML JS Mobile Frameworks for developers targeting iOS, Android and Windows Phone. Whether using WPF, ASP.NET, WinForms, HTML5 or Windows 10, DevExpress tools help you build and deliver your best in the shortest time possible.

Copyright © 1998-2016 Developer Express Inc.
All trademarks or registered trademarks are property of their respective owners