<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" version="2.0">

<channel>
	<title>SoftArtisans</title>
	
	<link>http://blog.softartisans.com</link>
	<description>Blogged</description>
	<lastBuildDate>Wed, 19 Jun 2013 19:32:02 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/SoftartisansBlog" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="softartisansblog" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>Meet the Team: Mike</title>
		<link>http://blog.softartisans.com/2013/06/19/meet-the-team-mike/</link>
		<comments>http://blog.softartisans.com/2013/06/19/meet-the-team-mike/#comments</comments>
		<pubDate>Wed, 19 Jun 2013 19:24:19 +0000</pubDate>
		<dc:creator>elisek</dc:creator>
				<category><![CDATA[Meet the Team]]></category>
		<category><![CDATA[Office Life]]></category>
		<category><![CDATA[meet the team]]></category>
		<category><![CDATA[mike]]></category>
		<category><![CDATA[QA]]></category>
		<category><![CDATA[Riparian Data]]></category>

		<guid isPermaLink="false">http://blog.softartisans.com/?p=4648</guid>
		<description><![CDATA[Hello and welcome to our Meet the Team series, in which we aim to give you deeper insight into the minds and personalities of those who make up this eclectic, close-knit group. We are developers, marketers, and technical support engineers, and at work we craft everything from Microsoft reporting APIs to mobile email applications. And outside of work? Let’s just [...]<img src="http://track.hubspot.com/__ptq.gif?a=104217&k=14&bu=http%3A%2F%2Fblog.softartisans.com&r=http%3A%2F%2Fblog.softartisans.com%2F2013%2F06%2F19%2Fmeet-the-team-mike%2F&bvt=rss&p=wordpress" style="float:left;" xml:base="http://blog.softartisans.com/feed/" width="1" height="1" border="0" align="right"/>]]></description>
				<content:encoded><![CDATA[<p><em>Hello and welcome to our <a href="http://blog.softartisans.com/category/officelife/meet-the-team-officelife/">Meet the Team series</a>, in which we aim to give you deeper insight into the minds and personalities of those who make up this eclectic, close-knit group. We are developers, marketers, and technical support engineers, and at work we craft everything from <a href="http://www.officewriter.com">Microsoft reporting APIs</a> to mobile <a href="http://www.ripariandata.com">email applications</a>. And outside of work? Let’s just say racing against the machine during hackathons, building architecturally sound beer towers during retros, and paddling down the Charles during the warmer months are simply the beginning.</em></p>
<p><a href="http://blog.softartisans.com/wp-content/uploads/2013/06/mikecrop.jpg"><img class="wp-image-4661 alignleft" src="http://blog.softartisans.com/wp-content/uploads/2013/06/mikecrop.jpg" alt="Meet the Team: Mike" width="343" height="253" /></a></p>
<p>Meet <a href="https://twitter.com/MikeFargnoli">Mike</a>, our QA Engineer. Drumming on his down time, ensuring product quality for our sister company<a href="http://ripariandata.com"> Riparian Data</a>, and harboring a soft spot for pugs.</p>
<p><strong>1. What do you do?</strong></p>
<p><em>I’m the QA Engineer for <a href="http://ripariandata.com">Riparian Data</a>. While the role touches a lot of areas, at its most basic level it means that no change is allowed into our product until I’ve had a chance to thoroughly vet it and ensure that it doesn’t affect our product’s quality. Oh, and preferably those changes should work as designed too.</em></p>
<p><strong>2. What are you listening to right now?</strong></p>
<p><em>At the moment I’m listening to the new National album on Spotify. </em></p>
<p><em></em><strong>3. If you could build any app, what would it be and why?</strong></p>
<p><em>I’ve always wanted an app that you could play a song into and it would spit back accurate drum tablature. When I was a kid I used to spend hours writing out the drum notation for songs I wanted to learn, and I don’t feel like anybody has released an app to make that experience any easier.</em></p>
<p><strong>4. When you were 5 what did you want to be and why?</strong></p>
<p><em>At that point I still had designs to be a professional baseball player. While I think modern day sabermetrics would appreciate my adept skill at being hit by pitches, it didn’t necessarily translate over into any success during my little league days.</em></p>
<p><strong>5. What is your favorite tech blog and why?<span id="more-4648"></span></strong></p>
<p><em>I don’t think either would count as a tech blog, but I spend a big chunk of my day on <a href="http://stackoverflow.com/">StackOverflow </a>and the QA Automation forums of LinkedIn. Both are great for picking people’s brains when I hit a dead end with what I’m trying to test. </em></p>
<p><strong>6. If you were a superhero, what would be your superhero name/power?</strong></p>
<p><em id="__mceDel"><em>The Snoopist, with the power of unbridled snooping!  I may or may not already refer to myself by this name.</em><br />
</em></p>
<p><strong>7. What is the last thing you bought? </strong><em> </em></p>
<p><em>I bought my sister a cookbook filled with Kolache recipes.</em> <em id="__mceDel"><em id="__mceDel"><em id="__mceDel"><em>It’s easily the most self-serving gift I’ve ever given.</em></em></em></em></p>
<p><strong>8. Name something that makes you smile.</strong></p>
<p><em id="__mceDel"><em>Pug hugs.</em></em></p>
<p><strong>9. If you could teach a college course what would it be?</strong></p>
<p><em id="__mceDel"><em>I’ve never actually encountered a class dedicated solely to QA, so I’d love to see a QA 101 course offered somewhere. </em></em></p>
<img src="http://track.hubspot.com/__ptq.gif?a=104217&k=14&bu=http%3A%2F%2Fblog.softartisans.com&r=http%3A%2F%2Fblog.softartisans.com%2F2013%2F06%2F19%2Fmeet-the-team-mike%2F&bvt=rss&p=wordpress" style="float:left;" xml:base="http://blog.softartisans.com/feed/" width="1" height="1" border="0" align="right"/>]]></content:encoded>
			<wfw:commentRss>http://blog.softartisans.com/2013/06/19/meet-the-team-mike/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Truth in Tech Ep 19: Thought Police</title>
		<link>http://blog.softartisans.com/2013/06/14/truth-in-tech-ep-19-thought-police/</link>
		<comments>http://blog.softartisans.com/2013/06/14/truth-in-tech-ep-19-thought-police/#comments</comments>
		<pubDate>Fri, 14 Jun 2013 19:54:48 +0000</pubDate>
		<dc:creator>elisek</dc:creator>
				<category><![CDATA[This Week in Tech]]></category>

		<guid isPermaLink="false">http://blog.softartisans.com/?p=4650</guid>
		<description><![CDATA[This week on Truth in Tech, we dive into the NSA&#8217;s surveillance programs. What do they collect? Who is targeted? Is it legal? And what will happen to Edward Snowden? Press play to find out! (You can also download it in iTunes.)<img src="http://track.hubspot.com/__ptq.gif?a=104217&k=14&bu=http%3A%2F%2Fblog.softartisans.com&r=http%3A%2F%2Fblog.softartisans.com%2F2013%2F06%2F14%2Ftruth-in-tech-ep-19-thought-police%2F&bvt=rss&p=wordpress" style="float:left;" xml:base="http://blog.softartisans.com/feed/" width="1" height="1" border="0" align="right"/>]]></description>
				<content:encoded><![CDATA[<p><img class="alignnone size-full wp-image-4651" src="http://blog.softartisans.com/wp-content/uploads/2013/06/surveillance-society.jpg" alt="surveillance society" width="590" height="253" /></p>
<p><div class="soundcloudIsGold " id="soundcloud-96909762"><iframe width="100%" height="166px" scrolling="no" frameborder="no" src="http://w.soundcloud.com/player/?url=http%3A%2F%2Fapi.soundcloud.com%2Ftracks%2F96909762&amp;auto_play=false&amp;show_artwork=false&amp;color=ff7700"></iframe></div><br />
This week on Truth in Tech, we dive into the NSA&#8217;s surveillance programs. What do they collect? Who is targeted? Is it legal? And what will happen to Edward Snowden? Press play to find out! (You can also<a href="https://itunes.apple.com/us/podcast/truth-in-tech-riparian-data/id635299377"> download it in iTunes</a>.)</p>
<img src="http://track.hubspot.com/__ptq.gif?a=104217&k=14&bu=http%3A%2F%2Fblog.softartisans.com&r=http%3A%2F%2Fblog.softartisans.com%2F2013%2F06%2F14%2Ftruth-in-tech-ep-19-thought-police%2F&bvt=rss&p=wordpress" style="float:left;" xml:base="http://blog.softartisans.com/feed/" width="1" height="1" border="0" align="right"/>]]></content:encoded>
			<wfw:commentRss>http://blog.softartisans.com/2013/06/14/truth-in-tech-ep-19-thought-police/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[Press Release] SoftArtisans Receives 2013 Best of Watertown Award</title>
		<link>http://blog.softartisans.com/2013/06/14/press-release-softartisans-receives-2013-best-of-watertown-award/</link>
		<comments>http://blog.softartisans.com/2013/06/14/press-release-softartisans-receives-2013-best-of-watertown-award/#comments</comments>
		<pubDate>Fri, 14 Jun 2013 15:24:28 +0000</pubDate>
		<dc:creator>elisek</dc:creator>
				<category><![CDATA[News Releases]]></category>
		<category><![CDATA[Office Life]]></category>
		<category><![CDATA[2013 best of watertown]]></category>
		<category><![CDATA[best of watertown]]></category>
		<category><![CDATA[press release]]></category>
		<category><![CDATA[SoftArtisans]]></category>

		<guid isPermaLink="false">http://blog.softartisans.com/?p=4639</guid>
		<description><![CDATA[We are so honored (not to mention pumped) to be recognized in the Watertown Award Program this year. Thank you! &#8220;The Watertown Award Program recognizes outstanding local businesses that serve their local market. Each year, we identify companies that we believe have achieved exceptional marketing success in their local community and business category. These are [...]<img src="http://track.hubspot.com/__ptq.gif?a=104217&k=14&bu=http%3A%2F%2Fblog.softartisans.com&r=http%3A%2F%2Fblog.softartisans.com%2F2013%2F06%2F14%2Fpress-release-softartisans-receives-2013-best-of-watertown-award%2F&bvt=rss&p=wordpress" style="float:left;" xml:base="http://blog.softartisans.com/feed/" width="1" height="1" border="0" align="right"/>]]></description>
				<content:encoded><![CDATA[<p><a href="http://watertown.awardprogram5.com/ADB6-BP7G-KGDD"><img class="size-full wp-image-4640 alignleft" src="http://blog.softartisans.com/wp-content/uploads/2013/06/digital-award-2013.jpg" alt="Best of Watertown 2013" width="300" height="368" /></a><em></em></p>
<p><em>We are so honored (not to mention pumped) to be recognized in the <a href="http://watertown.awardprogram5.com/ADB6-BP7G-KGDD">Watertown Award Program</a> this year. Thank you!</em></p>
<p><em>&#8220;The Watertown Award Program recognizes outstanding local businesses that serve their local market. Each year, we identify companies that we believe have achieved exceptional marketing success in their local community and business category. These are local companies that enhance the positive image of small business through service to their customers and community.</em><em>&#8220;</em></p>
<p>Press Release</p>
<p>FOR IMMEDIATE RELEASE</p>
<p>Software Artisans Receives 2013 Best of Watertown Award</p>
<p>Watertown Award Program Honors the Achievement</p>
<p>WATERTOWN June 6, 2013 &#8212; Software Artisans has been selected for the 2013 Best of Watertown Award in the Retail Computer Software category by the Watertown Award Program.</p>
<p>Each year, the Watertown Award Program identifies companies that we believe have achieved exceptional marketing success in their local community and business category. These are local companies that enhance the positive image of small business through service to their customers and our community. These exceptional companies help make the Watertown area a great place to live, work and play.</p>
<p>Various sources of information were gathered and analyzed to choose the winners in each category. The 2013 Watertown Award Program focuses on quality, not quantity. Winners are determined based on the information gathered both internally by the Watertown Award Program and data provided by third parties.</p>
<p>About Watertown Award Program<span id="more-4639"></span></p>
<p>The Watertown Award Program is an annual awards program honoring the achievements and accomplishments of local businesses throughout the Watertown area. Recognition is given to those companies that have shown the ability to use their best practices and implemented programs to generate competitive advantages and long-term value.</p>
<p>The Watertown Award Program was established to recognize the best of local businesses in our community. Our organization works exclusively with local business owners, trade groups, professional associations and other business advertising and marketing groups. Our mission is to recognize the small business community&#8217;s contributions to the U.S. economy.</p>
<p>SOURCE: Watertown Award Program</p>
<p>CONTACT:<br />
Watertown Award Program<br />
Email: PublicRelations@awardprogram.org<br />
URL: http://www.awardprogram.org</p>
<p>###</p>
<img src="http://track.hubspot.com/__ptq.gif?a=104217&k=14&bu=http%3A%2F%2Fblog.softartisans.com&r=http%3A%2F%2Fblog.softartisans.com%2F2013%2F06%2F14%2Fpress-release-softartisans-receives-2013-best-of-watertown-award%2F&bvt=rss&p=wordpress" style="float:left;" xml:base="http://blog.softartisans.com/feed/" width="1" height="1" border="0" align="right"/>]]></content:encoded>
			<wfw:commentRss>http://blog.softartisans.com/2013/06/14/press-release-softartisans-receives-2013-best-of-watertown-award/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Welcome Back, Privacy Concerns: Big Data, Healthcare, and PRISM</title>
		<link>http://blog.softartisans.com/2013/06/07/welcome-back-privacy-concerns-big-data-healthcare-and-prism/</link>
		<comments>http://blog.softartisans.com/2013/06/07/welcome-back-privacy-concerns-big-data-healthcare-and-prism/#comments</comments>
		<pubDate>Fri, 07 Jun 2013 21:32:05 +0000</pubDate>
		<dc:creator>elisek</dc:creator>
				<category><![CDATA[Big Data]]></category>
		<category><![CDATA[health care]]></category>
		<category><![CDATA[healthcare]]></category>
		<category><![CDATA[healthcare data]]></category>
		<category><![CDATA[NSA]]></category>
		<category><![CDATA[prism]]></category>
		<category><![CDATA[privacy concerns]]></category>
		<category><![CDATA[privacy issues]]></category>

		<guid isPermaLink="false">http://blog.softartisans.com/?p=4620</guid>
		<description><![CDATA[I suppose I shouldn’t say, “Welcome back, privacy concerns,” as I’m sure they never left, just quietly assumed their position humming in the background and shadows of the internet noise. This week, however, they took center stage both in the healthcare space and in government news. This week, The New York Times published an article [...]<img src="http://track.hubspot.com/__ptq.gif?a=104217&k=14&bu=http%3A%2F%2Fblog.softartisans.com&r=http%3A%2F%2Fblog.softartisans.com%2F2013%2F06%2F07%2Fwelcome-back-privacy-concerns-big-data-healthcare-and-prism%2F&bvt=rss&p=wordpress" style="float:left;" xml:base="http://blog.softartisans.com/feed/" width="1" height="1" border="0" align="right"/>]]></description>
				<content:encoded><![CDATA[<p><a style="color: #f5c421; outline: #000000;" href="http://blog.softartisans.com/wp-content/uploads/2013/06/data-security.jpg"><img class="wp-image-4621" src="http://blog.softartisans.com/wp-content/uploads/2013/06/data-security.jpg" alt="Photo Credit: Mashable.com" width="511" height="289" /></a></p>
<p><span style="font-size: 11px;">I suppose I shouldn’t say, “Welcome back, privacy concerns,” as I’m sure they never left, just quietly assumed their position humming in the background and shadows of the internet noise. This week, however, they took center stage both in the healthcare space and in government news.</span></p>
<p>This week, <a href="http://www.nytimes.com/2013/06/06/health/global-partners-agree-on-sharing-trove-of-genetic-data.html?ref=health"><em>The New York Times</em> </a>published an article on a significant announcement for the healthcare industry. A group of global partners spanning 41 countries and including 70 medical, research and advocacy organizations <a href="http://www.nytimes.com/2013/06/06/health/global-partners-agree-on-sharing-trove-of-genetic-data.html?ref=health">agreed to share a heap of genetic data</a>. “Their aim is to put the vast and growing trove of data on genetic variations and health into databases that would open to researchers and doctors all over the world, not just to those who created them,” <em>The New York Times </em>wrote. Currently, research labs and facilities are very much siloed. Each institution has their own research within their own walls and with their own records and system of operations. There is no universal method for representing and sharing genetic data, which could lead to advanced findings in cures and other health-related research.</p>
<p>One reason for the lack of a central system is the <a href="http://www.linkedin.com/today/post/article/20130606152605-43742182-the-challenge-control-health-data-not-drown-in-it?trk=tod-home-art-medium_0">sheer volume of data</a>. There is just too much information being produced by the minute. Not only that, but it is often unstructured and not of quality (meaning information was entered or gathered incorrectly/differently, such as January being entered in as Jan, 1, 01, or January, making it difficult to analyze). While volume and quality of data is an issue, the overarching problem, or rather challenge, healthcare professionals face lies mostly in the security space. With all of that sensitive patient data, there need to be strict, infallible measures to protect that information. Along those same lines is the question of who will have access to that information.</p>
<p>This is especially significant as it comes at the same time of privacy concerns regarding the NSA’s reported access to granular consumer data.<span id="more-4620"></span> The NSA is taking heat on a project called PRISM. <a href="http://gizmodo.com/what-is-prism-511875267"><strong>PRISM</strong> </a>is reported to be a secret government program whereby the government can access your data from certain company’s servers. And by certain company’s, I mean tech giants like Apple, Microsoft, and Facebook. What’s most concerning about this program is the type of content the government can access through it. Instead of looking at data in the aggregate or general consumer behavior patterns, PRISM allows the government to access specific content within emails, online conversations, calls, etc. <a href="http://news.cnet.com/8301-13578_3-57588234-38/obama-defends-secret-nsa-spy-program-trust-us/">President Obama maintained the government is acting within legal measures </a>and only doing so to protect citizens. AOL, Facebook, and others reported to be involved with this government program have turned to Twitter and their other social media accounts to deny their involvement with the program.<a href="http://front.kinja.com/obama-says-silicon-valley-surveillance-keeps-us-safe-511588927"> Anonymous, an advocacy hacker group, published NSA documents today</a>, and citizens aren’t too happy about PRISM. For the average citizen, I maintain that they don’t mind if you’re watching them, just so long as you don’t point out that you’re watching.</p>
<p>Issues of privacy concerns around big data are not new. Who owns and has access to all of the information you are publishing/generating/recording about yourself has cropped up again and again. Not even one year ago<a href="http://news.cnet.com/8301-1023_3-57544375-93/facebook-wants-you-to-understand-its-privacy-features-really/"> Facebook came under fire for changing its privacy statements</a> and settings without properly informing users. Privacy laws are confusing and questions around who owns and should have access to data, for the most part, remain vaguely addressed and unanswered. With new initiatives like PRISM and genetic data happening within healthcare and government, you can bet privacy concerns surrounding who has access to your data and how they use that information will continue to hog the spotlight.</p>
Note: There is a poll embedded within this post, please visit the site to participate in this post's poll.
<img src="http://track.hubspot.com/__ptq.gif?a=104217&k=14&bu=http%3A%2F%2Fblog.softartisans.com&r=http%3A%2F%2Fblog.softartisans.com%2F2013%2F06%2F07%2Fwelcome-back-privacy-concerns-big-data-healthcare-and-prism%2F&bvt=rss&p=wordpress" style="float:left;" xml:base="http://blog.softartisans.com/feed/" width="1" height="1" border="0" align="right"/>]]></content:encoded>
			<wfw:commentRss>http://blog.softartisans.com/2013/06/07/welcome-back-privacy-concerns-big-data-healthcare-and-prism/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to Download Files Containing Special or Non-ASCII Characters in the Filename Using ASP.NET</title>
		<link>http://blog.softartisans.com/2013/06/03/how-to-download-files-containing-special-or-non-ascii-characters-in-the-filename-using-asp-net/</link>
		<comments>http://blog.softartisans.com/2013/06/03/how-to-download-files-containing-special-or-non-ascii-characters-in-the-filename-using-asp-net/#comments</comments>
		<pubDate>Mon, 03 Jun 2013 15:34:56 +0000</pubDate>
		<dc:creator>ozgur</dc:creator>
				<category><![CDATA[ASP.NET]]></category>
		<category><![CDATA[Excel]]></category>
		<category><![CDATA[filenames]]></category>
		<category><![CDATA[filenames with special characters]]></category>
		<category><![CDATA[how to download files with non-ascii characters]]></category>
		<category><![CDATA[How to download files with special characters]]></category>

		<guid isPermaLink="false">http://blog.softartisans.com/?p=4442</guid>
		<description><![CDATA[A couple months ago, I worked with file downloads that had filenames with non-ASCII Unicode characters, as well as special characters, such as semi-colons, commas, periods, and others (@, %, +, {, }, [, ], $, #, &#38;, =). Here is an example of a filename that has all of those characters:  日本人 中國的 ~=[]()%+{}@;&#8217;#!$_&#38;-  [...]<img src="http://track.hubspot.com/__ptq.gif?a=104217&k=14&bu=http%3A%2F%2Fblog.softartisans.com&r=http%3A%2F%2Fblog.softartisans.com%2F2013%2F06%2F03%2Fhow-to-download-files-containing-special-or-non-ascii-characters-in-the-filename-using-asp-net%2F&bvt=rss&p=wordpress" style="float:left;" xml:base="http://blog.softartisans.com/feed/" width="1" height="1" border="0" align="right"/>]]></description>
				<content:encoded><![CDATA[<p><span style="font-size: 11px;"><a href="http://blog.softartisans.com/wp-content/uploads/2013/06/keyboard.jpg"><img class=" wp-image-4443 alignleft" src="http://blog.softartisans.com/wp-content/uploads/2013/06/keyboard.jpg" alt="Credit: http://lifehacker.com/5690522/how-to-enable-non+ascii-characters-on-linux" width="300" height="227" /></a>A couple months ago, I worked with file downloads that had filenames with non-ASCII Unicode characters, as well as special characters, such as semi-colons, commas, periods, and others (@, %, +, {, }, [, ], $, #, &amp;, =). Here is an example of a filename that has all of those characters:  </span><strong style="font-size: 11px;">日本人</strong><strong style="font-size: 11px;"> </strong><strong style="font-size: 11px;">中國的</strong><strong style="font-size: 11px;"> ~=[]()%+{}@;&#8217;#!$_&amp;-  éè  ;∞¥₤€   .txt </strong><span style="font-size: 11px;">   </span></p>
<p>After a couple days of online research,  I finally found a solution that worked across different major browsers like IE8, IE9 and IE10, Firefox 21, Chrome 27, Safari 5 (on Windows). These are the most up-to-date versions as of this writing. Opera mostly works fine as well; however, I noticed that it doesn’t like the space and curly bracket characters.</p>
<p>Without going into detail about character encodings in the HTTP headers, I’d like to mention two major pieces of information you should know that I found regarding this issue:</p>
<p style="padding-left: 30px;"><strong>1.</strong> According to the <strong>section 2.3 </strong>in <a href="http://tools.ietf.org/html/rfc2183">RFC-2183</a> (Content-Disposition header field), the “filename” parameter in the Content-Disposition header can only use the US-ASCII characters.</p>
<p style="padding-left: 30px;"><strong>2.</strong> However, as specified by <a href="http://tools.ietf.org/html/rfc5987">RFC-5987</a> and <a href="http://tools.ietf.org/html/rfc2231">RFC-2231</a>, the correct encoding can be included right in the header field by using the <strong><em>filename*</em></strong> syntax and then by percent-encoding the non-ASCII characters in the filename. For example, for the filename &#8221;test-€.txt,&#8221; the content-disposition header would look like the following:  <strong>attachment; filename*=utf-8&#8221;test-%E2%82%AC.txt. </strong>Here is the .NET code that I had for writing the response header:</p>
<p>Response.AddHeader(&#8220;Content-Disposition&#8221;, &#8220;attachment; filename*=utf-8&#8221;&#8221; + Server.UrlEncode(fileName);</p>
<p>However, when I tried that syntax with my test filename<span id="more-4442"></span>  “日本人 中國的 ~=[]()%+{}@;&#8217;#!$_&amp;-  éè  ;∞¥₤€   .txt,&#8221; I saw that all the spaces were replaced with “+” signs in Firefox, Chrome, IE9 and IE10 (“日本人+中國的+~=[]()%+{}@;&#8217;#!$_&amp;-++éè++;∞¥₤€+++.txt”)</p>
<p>In Opera, it was worse. In addition to the “+” signs, the curly brackets were removed. In IE8 and Safari, the filename didn’t even appear. In the download dialog, it displayed the name of the ASP.NET page instead (Default.aspx in my case).</p>
<p>After that, I tried using “Uri.EscapeDataString(fileName)” instead of Server.UrlEncode() in the code above. The results were a little bit better but still varied depending on the browser.  In Firefox, IE10 and IE9, the filename showed correctly. However, IE8 and Safari still showed the ASP.NET page and now Chrome did too. As for Opera, it was still missing the curly brackets.</p>
<p>After further testing, I finally came up with the following solution that worked for all popular browsers that I tested with:</p>
<p>var headerValue = (Request.UserAgent.ToLower().Contains(&#8220;msie&#8221;))</p>
<p>? string.Format(&#8220;attachment; filename=\&#8221;{0}\&#8221;", Uri.EscapeDataString(fileName))</p>
<p>: string.Format(&#8220;attachment; filename=\&#8221;{0}\&#8221;", fileName); //for Firefox, Chrome, Safari, Opera</p>
<p>Response.Clear();</p>
<p>Response.ContentType = &#8220;text/plain&#8221;;</p>
<p>Response.AddHeader(&#8220;Content-Disposition&#8221;, headerValue);</p>
<p>Response.TransmitFile(filePath);</p>
<p>Response.End();</p>
<p><strong>The trick was to set the content-encoding header based on the user-agent.</strong> For IE, I percent-encoded the filename using the <a href="http://msdn.microsoft.com/en-us/library/system.uri.escapedatastring.aspx">Uri.EscapeDataString()</a> method.  For the other browsers, I just left the filename string as is. It turned out the other browsers (at least the most recent versions as of this writing) didn’t need to use the RFC-5987 <em>filename*</em> syntax.</p>
<img src="http://track.hubspot.com/__ptq.gif?a=104217&k=14&bu=http%3A%2F%2Fblog.softartisans.com&r=http%3A%2F%2Fblog.softartisans.com%2F2013%2F06%2F03%2Fhow-to-download-files-containing-special-or-non-ascii-characters-in-the-filename-using-asp-net%2F&bvt=rss&p=wordpress" style="float:left;" xml:base="http://blog.softartisans.com/feed/" width="1" height="1" border="0" align="right"/>]]></content:encoded>
			<wfw:commentRss>http://blog.softartisans.com/2013/06/03/how-to-download-files-containing-special-or-non-ascii-characters-in-the-filename-using-asp-net/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Internet Week New York 2013 in Review</title>
		<link>http://blog.softartisans.com/2013/05/24/internet-week-new-york-2013-in-review/</link>
		<comments>http://blog.softartisans.com/2013/05/24/internet-week-new-york-2013-in-review/#comments</comments>
		<pubDate>Fri, 24 May 2013 21:27:32 +0000</pubDate>
		<dc:creator>elisek</dc:creator>
				<category><![CDATA[Events]]></category>
		<category><![CDATA[internet week new york]]></category>
		<category><![CDATA[internet week NY]]></category>
		<category><![CDATA[internet week ny 2013]]></category>
		<category><![CDATA[key takeaways from internet week]]></category>
		<category><![CDATA[panels at internet week]]></category>

		<guid isPermaLink="false">http://blog.softartisans.com/?p=4432</guid>
		<description><![CDATA[A whirlwind week of panels, classroom discussions, and events is the only way to describe Internet Week NY. Bringing together masterminds behind the digital space, Internet Week NY covered how companies from startups to non-profits to corporations like MLB are harnessing the power of online personalities to market their brand and really integrate customers into [...]<img src="http://track.hubspot.com/__ptq.gif?a=104217&k=14&bu=http%3A%2F%2Fblog.softartisans.com&r=http%3A%2F%2Fblog.softartisans.com%2F2013%2F05%2F24%2Finternet-week-new-york-2013-in-review%2F&bvt=rss&p=wordpress" style="float:left;" xml:base="http://blog.softartisans.com/feed/" width="1" height="1" border="0" align="right"/>]]></description>
				<content:encoded><![CDATA[<p><img class="wp-image-4436 alignleft" style="font-size: 11px;" src="http://blog.softartisans.com/wp-content/uploads/2013/05/Joan-Rivers-e1369430518859.jpg" alt="Joan Rivers" width="267" height="356" /></p>
<p><a style="font-size: 11px;" href="http://blog.softartisans.com/wp-content/uploads/2013/05/Digital-Cities-Panel.jpg"><img class="wp-image-4434 alignright" src="http://blog.softartisans.com/wp-content/uploads/2013/05/Digital-Cities-Panel-e1369430551261.jpg" alt="Digital Cities Panel" width="289" height="387" /></a><span style="font-size: 11px;">A whirlwind week of panels, classroom discussions, and events is the only way to describe I</span><a style="font-size: 11px;" href="https://internetweekny.com/">nternet Week NY</a><span style="font-size: 11px;">. Bringing together masterminds behind the digital space,</span><a style="font-size: 11px;" href="https://internetweekny.com/"> Internet Week NY</a><span style="font-size: 11px;"> covered how companies from startups to non-profits to corporations like MLB are harnessing the power of online personalities to market their brand and really integrate customers into their brand experience. Much like the internet itself (and was discussed by several panels), there was much &#8220;noise&#8221; or information to sift through. While valuable, it can be overwhelming. Thus, I wanted to provide a general guide with the most helpful info. While I&#8217;m tempted to talk about famous celebrities, Joan Rivers and Erica Oyama, I&#8217;ll save those and my favorite classes for later discussions. For now, I&#8217;ll attempt to boil down the overarching themes that wove the conference together and overlapped all of the different industries (from fashion to food to sports) taking over the digital arena. For all of the entrepreneurs, advertisers, and marketers out there, these are the key takeaways of which to make note.</span></p>
<p><strong>Key Takeaways from Internet Week NY:</strong></p>
<ul>
<li><strong>Humanize your brand </strong>- Social media and the internet in general allow for a more personalized customer experience. Not only that, they allow for customers to have an active involvement with your brand. People buy from people.</li>
<li><strong>Encourage customer involvement with your brand &#8211; </strong>In other words, create experiences that involve people with your brand, such as holding contests, recognizing fans, and providing people the ability to vote on different elements of your brand. (Fun fact:<strong> People like their name and their voice.</strong> A representative from USA Mini Cooper and a panel speaker for a crowdfunding class both touched on this. USA Mini Cooper found out people liked to name their cars, so they had a contest where people could name the next Mini Cooper. <span id="more-4432"></span>The crowdfunding class found that rewards on Kickstarter projects that used those two elements, did well. For instance, if you&#8217;re trying to raise money on Kickstarter, offer donors an incentive that involves their name or voice, such as having their name in the credits of your film.) Active involvement with your brand gives customers a sense of ownership in your brand.</li>
<li><strong>Be customer-centric</strong> &#8211; Bob Bowman from MLB said you need to be product-centric as well as customer-centric in your marketing approaches. One moment that really stuck out in my mind was when Bob Bowman emphasized that you need to be mindful and respectful of people&#8217;s time. I completely agree. In this day and age people are busy. They&#8217;re multi-tasking; they&#8217;re using multiple devices; they can choose when and if they want to listen to and interact with you; they have many activities crammed into their everyday lives. Be respectful of that, and give them quick, high-quality ways to engage with you and come back at a later time. Don&#8217;t insult your audience with low-quality, long-winded content, because that conveys to them that you don&#8217;t care about their time. Which brings me to my next point of&#8230;</li>
<li><strong>Focus on quality over quantity</strong> &#8211; The mantra, &#8220;Content is king,&#8221; still stands. Providing valuable, quality content to your audience is still an important asset to any company. That is how you attract and keep an audience. That is how you get people to pay for your content (Andrew Sorkin). That is how you get people to find your company and interact with your brand.</li>
<li><strong>Understand there isn’t necessarily a one-size-fits-all solution - </strong>Technology is constantly changing. The ways in which people are using technology are constantly changing. Therefore, the ways in which people interact with your brand are constantly changing. As a marketer/advertiser/entrepreneur, you need to be flexible and adapt to those changes. In order to reach your audience, you must be adept at moving along with them, at altering your content to fit with the different platforms and your different audiences&#8217; needs.</li>
</ul>
<p><a href="http://blog.softartisans.com/wp-content/uploads/2013/05/Internet-Week-NY.jpg"><img class="wp-image-4435 aligncenter" src="http://blog.softartisans.com/wp-content/uploads/2013/05/Internet-Week-NY.jpg" alt="Internet Week NY" width="458" height="343" /></a></p>
<img src="http://track.hubspot.com/__ptq.gif?a=104217&k=14&bu=http%3A%2F%2Fblog.softartisans.com&r=http%3A%2F%2Fblog.softartisans.com%2F2013%2F05%2F24%2Finternet-week-new-york-2013-in-review%2F&bvt=rss&p=wordpress" style="float:left;" xml:base="http://blog.softartisans.com/feed/" width="1" height="1" border="0" align="right"/>]]></content:encoded>
			<wfw:commentRss>http://blog.softartisans.com/2013/05/24/internet-week-new-york-2013-in-review/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>How to open a report from SQL Server Reporting Services with the Application object</title>
		<link>http://blog.softartisans.com/2013/05/13/how-to-open-a-report-from-sql-server-reporting-services-with-the-application-object/</link>
		<comments>http://blog.softartisans.com/2013/05/13/how-to-open-a-report-from-sql-server-reporting-services-with-the-application-object/#comments</comments>
		<pubDate>Mon, 13 May 2013 18:07:17 +0000</pubDate>
		<dc:creator>Alison</dc:creator>
				<category><![CDATA[Excel]]></category>
		<category><![CDATA[OfficeWriter]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[SSRS]]></category>
		<category><![CDATA[excelwriter]]></category>
		<category><![CDATA[reporting services]]></category>
		<category><![CDATA[sql server]]></category>

		<guid isPermaLink="false">http://blog.softartisans.com/?p=4342</guid>
		<description><![CDATA[Problem You want to modify your reports with the WordApplication or ExcelApplication object after they&#8217;ve been populated with data by SQL Server Reporting Services. The ExcelApplication or WordApplication object&#8217;s Open method can&#8217;t pull a report from a report server, so how do you open a SSRS report with OfficeWriter? Solution For simplicity and ease of reading the code examples and text in this [...]<img src="http://track.hubspot.com/__ptq.gif?a=104217&k=14&bu=http%3A%2F%2Fblog.softartisans.com&r=http%3A%2F%2Fblog.softartisans.com%2F2013%2F05%2F13%2Fhow-to-open-a-report-from-sql-server-reporting-services-with-the-application-object%2F&bvt=rss&p=wordpress" style="float:left;" xml:base="http://blog.softartisans.com/feed/" width="1" height="1" border="0" align="right"/>]]></description>
				<content:encoded><![CDATA[<h1>Problem</h1>
<p>You want to modify your reports with the <strong>WordApplication</strong> or <strong>ExcelApplication</strong> object after they&#8217;ve been populated with data by SQL Server Reporting Services. The <strong>ExcelApplication</strong> or <strong>WordApplication</strong> object&#8217;s Open method can&#8217;t pull a report from a report server, so how do you open a SSRS report with OfficeWriter?</p>
<h1>Solution</h1>
<p>For simplicity and ease of reading the code examples and text in this article refer to the ExcelApplication object exclusively. However, the exact same techniques can be used with the WordApplication object. The only strict requirement for opening reports from SSRS is for the Open method to have an overload that takes a Stream argument, which both objects have.</p>
<p>SQL Server Reporting Services exposes a web service that lets programs access and work with the reports on the server. The web service has a number of functions for interacting with a report server and in fact is the same API that the <a href="http://msdn.microsoft.com/en-us/library/ms157147.aspx">Report Manager</a> tool is built on top of. One of its functions will let us retrieve a fully rendered report that we can then pass to the ExcelApplication object. Once the ExcelApplication object has opened the report, it can be used as if it were any other file.</p>
<h2><strong>Getting a Reference to the Report Server</strong></h2>
<p>There are a number of different ways to access a report server to manage your reports. The <a href="http://msdn.microsoft.com/en-us/library/ms153697.aspx">MSDN documentation</a> has detailed instructions for all the different techniques. The most powerful way, and the one that the Report Manager application uses, is to use the report server&#8217;s web service, or SOAP API. The easiest way to use the web service is to add the report server as a web reference in Visual Studio. This will allow us to make web service calls to the report server as though it were any other object in a .NET project. I&#8217;ll provide a brief overview of the steps to add a report server as a web reference; details can be found at <a href="http://msdn.microsoft.com/en-us/library/ms155134.aspx">MSDN</a>.<span id="more-4342"></span></p>
<ol>
<li>After opening the project you want to open a report in, select &#8216;Add Web Reference&#8217; from the Project menu (or by right-clicking on the project name in the Solution Explorer).</li>
<li>Enter the URL of the report server in the text box. In most cases, this should be &#8220;http:///reportserver/reportservice.asmx&#8221;. Click &#8216;go&#8217;.</li>
<li>Visual Studio should find a single reference named &#8216;reportservice&#8217;. Enter a friendly name for the service in the text box on the right. For this example, I&#8217;ll use the name &#8220;MyReportService&#8221;.</li>
<li>Click &#8216;Add Reference&#8217;.</li>
</ol>
<h2><strong>Creating a ReportingService Object</strong></h2>
<p>Adding the web reference in the last section created a special namespace that contains the object we&#8217;ll use to render the report. This namespace is .. In the example I used above this would be ReportingServiceRender.MyReportService. This namespace contains a <a href="http://msdn.microsoft.com/en-us/library/aa258073(SQL.80).aspx">ReportingService</a> object that we&#8217;ll use to do the actual rendering of the report. To create a ReportingService object, use its default (empty) constructor. You can either fully qualify the class name or add a using (imports in VB.NET) statement to your code like I do in the sample below.</p>
<p>Note that while the default behavior is to add the report service in the project&#8217;s namespace, this is not always guaranteed, especially if the project name changes. If you add a web reference and cannot find it in the project namespace, right click on the web service in the Solution Explorer and select &#8216;View in Object Browser&#8217;. This will open the object browser and highlight the web service with its full namespace.</p>
<p>After creating the ReportingService object, we have to tell it how to authenticate itself to the report server. As long as the account your program is running as has permissions to render reports, you can use the default credentials here. If you need the code to run under a different set of credentials, you&#8217;ll need to create those at this step using the <a href="http://msdn.microsoft.com/en-us/library/system.net.credentialcache.aspx">CredentialCache</a> object.</p>
<pre><code> // Replace this name with whatever you named your reporting service instance using ReportingServiceRender.MyReportService; // ... Namespace and class declarations, etc ... ReportingService rs = new ReportingService(); rs.Credentials = System.Net.CredentialCache.DefaultCredentials; </code></pre>
<h2><strong>Calling the Render Function</strong></h2>
<p>The function we&#8217;ll use to get a copy of the populated report is <a href="http://msdn.microsoft.com/en-us/library/aa258532(SQL.80).aspx">ReportingService.Render</a>. For our purposes, all we need are the first two arguments: the path of the report and the name of the rendering extension.</p>
<p>The path to a report always begins with a &#8216;/&#8217;, and does not include the &#8216;.rdl&#8217; extension. For example, a report in the Home folder named &#8220;MyFancyReport&#8221; will have a path of &#8220;/MyFancyReport&#8221;. If we moved that same report to the &#8220;ExtraFancy&#8221; folder, the path would be &#8220;/ExtraFancy/MyFancyReport&#8221;. Note that all the slashes are forwards, as in a URL, instead of backwards, as in a Windows path.</p>
<p>The rendering extension is a string that tells Reporting Services what format to return the report in. By default, SSRS can render reports to a few simple formats including HTML, XML, PDF and basic, limited Word and Excel documents. To render a report as an Excel workbook with the SoftArtisans OfficeWriter renderer, use the &#8220;XLTemplate&#8221; extension. For Word documents, use the &#8220;WordTemplate&#8221; extension.</p>
<p>Because the last five arguments are output arguments in C#, we need to create variables to pass to the function instead of simply using null. Even though we don&#8217;t use the values in those variables, the variables must exist for the code to compile.</p>
<pre><code> // These variables are all the output variables the Render function takes. // We don't use them, but we need to create them to pass to the function. // Note that the ParameterValue array and the Warning array are members of // the ReportingServiceRender.MyReportService namespace we created earlier string optionalEncoding = null; string optionalMimeType = null; ParameterValue[] optionalParams = null; Warning[] optionalWarnings = null; string[] streamIDs; // The first argument tells Render where to find the report, the second // argument tells it what extension to use to render the report. string reportPath = "/ExtraFancy/MyFancyReport"; string reportFormat = "XLTemplate"; // The actual call to Render. The only important parameters are the first // two; the rest are either null or unused. byte[] result = rs.Render(reportPath, reportFormat, null, null, null, null, null, out optionalEncoding, out optionalMimeType, out optionalParams, out optionalWarnings, out streamIDs); </code></pre>
<h2><strong>Opening the Report in the Application Object</strong></h2>
<p>As you can see in the code snippet above, the Render function returns a byte array. The ExcelApplication object can&#8217;t open a byte array directly, but it can open a MemoryStream object (<a href="http://wiki.softartisans.com/display/EW8/ExcelApplication.Open%28System.IO.Stream%29">ExcelApplication</a>, <a href="http://wiki.softartisans.com/display/WW8/WordApplication.Open%28System.IO.Stream%29">WordApplication</a>. We can create a MemoryStream object by <a href="http://msdn.microsoft.com/en-us/library/e55f3s5k(VS.80).aspx">passing it a byte array in the constructor</a>.</p>
<p>Once the Application object has opened the stream we can use it just like any other file, including streaming the file to users with one of the overloads of Save (<a href="http://wiki.softartisans.com/display/EW8/ExcelApplication.Save%28Workbook%2C+System.Web.HttpResponse%2C+String%2C+Boolean%29">ExcelApplication</a>, <a href="http://wiki.softartisans.com/display/WW8/WordApplication.Save%28Document%2C+System.Web.HttpResponse%2C+String%2C+Boolean%29">WordApplication</a>.</p>
<pre><code> // Turn the byte[] to a stream object that Open can read. MemoryStream reportStream = new MemoryStream(result); ExcelApplication xla = new ExcelApplication(); Workbook wb = xla.Open(reportStream); reportStream.Close(); // ... Modify the report with the Application object ... // Stream the rendered and modified report back to the user. xla.Save(wb, Page.Response, "RenderedReport.xls", false); </code></pre>
<p>Note that this code should be executed as part of a postback in a web form. By invoking this code through a web form you can create an interface that lets users request a report by clicking on a button or link, then stream that report back to them as though it were any other downloaded file.</p>
<p>Attached to this article is a zip file containing a Visual Studio 2008 project with this code in it. The project also contains a web form with a button that fires the code. Note that the web reference in the project assumes that the report server is hosted on the same machine that the code runs on, so it may need to be updated before the code will run. Also keep in mind that the project looks for a report named MyFancyReport in the /ExtraFancy folder. If you don&#8217;t have a report there, you&#8217;ll either need to create one or change the path in Default.aspx.cs.</p>
<h1>Attachments</h1>
<ul>
<li><a href="http://dl.dropbox.com/u/59073595/How%20to%20open%20a%20report%20from%20SSRS%20with%20the%20Application%20object/SSRSPostProcessing.zip">SSRSPostProcessing.zip</a></li>
</ul>
<img src="http://track.hubspot.com/__ptq.gif?a=104217&k=14&bu=http%3A%2F%2Fblog.softartisans.com&r=http%3A%2F%2Fblog.softartisans.com%2F2013%2F05%2F13%2Fhow-to-open-a-report-from-sql-server-reporting-services-with-the-application-object%2F&bvt=rss&p=wordpress" style="float:left;" xml:base="http://blog.softartisans.com/feed/" width="1" height="1" border="0" align="right"/>]]></content:encoded>
			<wfw:commentRss>http://blog.softartisans.com/2013/05/13/how-to-open-a-report-from-sql-server-reporting-services-with-the-application-object/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Workbook colors are not displayed as expected in older versions of Excel</title>
		<link>http://blog.softartisans.com/2013/05/13/workbook-colors-are-not-displayed-as-expected-in-older-versions-of-excel/</link>
		<comments>http://blog.softartisans.com/2013/05/13/workbook-colors-are-not-displayed-as-expected-in-older-versions-of-excel/#comments</comments>
		<pubDate>Mon, 13 May 2013 13:17:33 +0000</pubDate>
		<dc:creator>Alison</dc:creator>
				<category><![CDATA[Excel]]></category>
		<category><![CDATA[OfficeWriter]]></category>
		<category><![CDATA[color palette]]></category>
		<category><![CDATA[excel application]]></category>
		<category><![CDATA[excelwriter]]></category>
		<category><![CDATA[officewriter tutorials]]></category>

		<guid isPermaLink="false">http://blog.softartisans.com/?p=4333</guid>
		<description><![CDATA[Problem When using ExcelWriter&#8217;s ExcelApplication object to generate a new workbook, custom colors that are assigned in code to fonts, charts, cell backgrounds, etc., display incorrectly on the client when the workbook is generated. OR When creating an Excel File or an Excel file to use as a template with the ExcelTemplate object using Excel 2007 and above, colors [...]<img src="http://track.hubspot.com/__ptq.gif?a=104217&k=14&bu=http%3A%2F%2Fblog.softartisans.com&r=http%3A%2F%2Fblog.softartisans.com%2F2013%2F05%2F13%2Fworkbook-colors-are-not-displayed-as-expected-in-older-versions-of-excel%2F&bvt=rss&p=wordpress" style="float:left;" xml:base="http://blog.softartisans.com/feed/" width="1" height="1" border="0" align="right"/>]]></description>
				<content:encoded><![CDATA[<h1>Problem</h1>
<p>When using ExcelWriter&#8217;s <strong>ExcelApplication</strong> object to generate a new workbook, custom colors that are assigned in code to fonts, charts, cell backgrounds, etc., display incorrectly on the client when the workbook is generated.</p>
<p>OR</p>
<p>When creating an Excel File or an Excel file to use as a template with the <strong>ExcelTemplate</strong> object using Excel 2007 and above, colors are not colors are not preserved in Excel 2003 or older.</p>
<p><img src="http://dl.dropbox.com/u/59073595/Workbook%20colors%20are%20not%20displayed%20as%20expected/differentcolors_1.png" alt="" /><span id="more-4333"></span></p>
<p>The Excel .XLSX file format supports millions of colors, so when working in newer versions of Excel, the user interface will give you the option to select any color because Excel does not know what file format you will save in.</p>
<ul>
<li>When creating a document using Excel 2007 and later and you save your file as XLS format, everything will appear as normal, but when the XLS file is opened in Excel 2003 the colors will revert to the closest 56 colors in the workbook palette. Depending on your application settings you may or may not receive a <strong>Minor loss of fidelity warning.</strong></li>
<li>If you save the file as an XLSX file you will not receive a warning, but when an XLSX file is opened in Excel 2003 with the compatibility pack, Excel will perform a file conversion back to XLS, which limits the workbook to the 56 colors in the palette.</li>
</ul>
<p>Since the XLS file format is limited to 56 colors stored in the workbook, special consideration must be taken when designing a document that will be viewed in previous versions of Excel.</p>
<p>To ensure that colors appear the same in all versions of Excel, one can customize the workbook palette to include the colors needed. This can be done both manually, and automatically with 3rd party tools.</p>
<h1>Solution</h1>
<h2><strong>Creating a custom palette using Excel Application</strong></h2>
<p>If you are using ExcelApplication to programmatically set colors using <a href="http://wiki.softartisans.com/display/EW8/Palette.GetClosestColor">Palette.GetClosestColor</a>, ExcelWriter will attempt to find the closest color in the palette. If the color or similar color is not in the workbook’s palette, the colors may not appear as expected. You can use ExcelWriter’s <a href="http://wiki.softartisans.com/display/EW8/Palette.SetColorAt%28Int32%2C+Int32%2C+Int32%2C+Int32%29">SetColorAt</a> method to replace a color in the palette and ensure that your color will be found.  You can also use ExcelWriter’s <a href="http://answers.int.softartisans.com/wiki.softartisans.com/display/EW8/Palette.GetColorAt%28Int32%29">Palette.GetColorAt</a> method to retrieve specific colors.  By ensuring the colors you are using are in the Workbook Palette you can ensure the document will render with the colors desired.</p>
<pre><code> ExcelApplication xla = newExcelApplication(); Workbook wb = xla.Create(); //Set a color in the Palette wb.Palette.SetColorAt(1, 240, 217, 216); //Can also use GetColorAt(1); wb[0].Cells["A1"].Style.BackgroundColor = wb.Palette.GetClosestColor(240, 217, 216); xla.Save(wb,"colors.xls"); </code></pre>
<h2><strong>Creating a custom palette using Excel</strong></h2>
<p>When designing a template in Excel, the colors in the workbook’s palette can be modified.</p>
<h3>Manually creating a custom palette in Excel 2010:</h3>
<ul>
<li>Open the Workbook whose palette you wish to modify.</li>
<li>In the upper left hand corner select <strong>File</strong></li>
<li>select <strong>Options</strong></li>
<li>Select the <strong>Save </strong>menu</li>
<li>Under <em>Preserve Visual Appearance</em> of a workbook, next to <strong>choose what colors will be seen in previous versions of Excel </strong>select <strong>Colors…</strong></li>
<li>Select a color you wish to change and press <strong>Modify</strong></li>
<li>Change the color and repeat sets as needed.</li>
<li>Press <strong>OK </strong>until you are back to the Workbook</li>
</ul>
<h3>Manually creating a custom palette in Excel 2007:</h3>
<ul>
<li>Open the Workbook whose palette you wish to modify.</li>
<li>In the upper left hand corner press the <strong>Microsoft Office Button </strong>and select <strong>Excel Options</strong></li>
<li>Select the <strong>Save </strong>menu</li>
<li>Under <em>Preserve Visual Appearance</em> of a workbook, next to <strong>choose what colors will be seen in previous versions of Excel </strong>select <strong>Colors…</strong></li>
<li>Select a color you wish to change and press <strong>Modify</strong></li>
<li>Change the color and repeat sets as needed.</li>
<li>Press <strong>OK </strong>until you are back to the Workbook</li>
</ul>
<h3>Manually creating a custom palette in Excel 2003:</h3>
<ul>
<li>Open the Workbook whose palette you wish to modify.</li>
<li>From the <strong>Tools </strong>menu select <strong>Options</strong>, and then select the <strong>Color</strong> tab.</li>
<li>Select a color you wish to change and press <strong>Modify</strong></li>
<li>Change the color and repeat sets as needed.</li>
<li>Press <strong>OK </strong>until you are back to the Workbook</li>
</ul>
<h2><strong>Automatically converting colors to custom palette:</strong></h2>
<p>Since manually editing the workbook color palette can be a time consuming process, some people have tried to automate the process.  Jon from Excel Campus has done just this with his <a href="http://excelcampus.com/tools/color-palette-conversion">color palette conversion</a> tool.</p>
<p>By ensuring the colors you are using are in the workbook’s palette, you can ensure that your workbook will appear the same throughout different versions of Excel.</p>
<img src="http://track.hubspot.com/__ptq.gif?a=104217&k=14&bu=http%3A%2F%2Fblog.softartisans.com&r=http%3A%2F%2Fblog.softartisans.com%2F2013%2F05%2F13%2Fworkbook-colors-are-not-displayed-as-expected-in-older-versions-of-excel%2F&bvt=rss&p=wordpress" style="float:left;" xml:base="http://blog.softartisans.com/feed/" width="1" height="1" border="0" align="right"/>]]></content:encoded>
			<wfw:commentRss>http://blog.softartisans.com/2013/05/13/workbook-colors-are-not-displayed-as-expected-in-older-versions-of-excel/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Excel’s color palette explained</title>
		<link>http://blog.softartisans.com/2013/05/13/excels-color-palette-explained/</link>
		<comments>http://blog.softartisans.com/2013/05/13/excels-color-palette-explained/#comments</comments>
		<pubDate>Mon, 13 May 2013 13:17:02 +0000</pubDate>
		<dc:creator>Alison</dc:creator>
				<category><![CDATA[Excel]]></category>
		<category><![CDATA[OfficeWriter]]></category>
		<category><![CDATA[color palette]]></category>
		<category><![CDATA[excelwriter]]></category>

		<guid isPermaLink="false">http://blog.softartisans.com/?p=4329</guid>
		<description><![CDATA[Problem Excel&#8217;s color palette contains 56 colors, all of which can be accessed and most of which can be replaced using ExcelWriter (v6 or later). This post describes the layout of the palette and enumerate the default palette colors. This content is most pertinent to the Excel 2003 color palette, which only has 56 colors. [...]<img src="http://track.hubspot.com/__ptq.gif?a=104217&k=14&bu=http%3A%2F%2Fblog.softartisans.com&r=http%3A%2F%2Fblog.softartisans.com%2F2013%2F05%2F13%2Fexcels-color-palette-explained%2F&bvt=rss&p=wordpress" style="float:left;" xml:base="http://blog.softartisans.com/feed/" width="1" height="1" border="0" align="right"/>]]></description>
				<content:encoded><![CDATA[<h1>Problem</h1>
<p>Excel&#8217;s color palette contains 56 colors, all of which can be accessed and most of which can be replaced using ExcelWriter (v6 or later). This post describes the layout of the palette and enumerate the default palette colors.</p>
<p>This content is most pertinent to the Excel 2003 color palette, which only has 56 colors. In Excel 2007 and later, workbooks can support millions of colors, but there is still an underlying workbook palette that has 56 colors. For more information about colors in multiple versions of Excel, we have enough post about <a href="http://blog.softartisans.com/?p=4333">workbook colors that are not displayed properly in older versions of Excel</a>.</p>
<h1>Solution</h1>
<p>The palette is split up into a few different sections:<span id="more-4329"></span></p>
<ul>
<li>40 Standard colors, which includes 8 system colors</li>
<li>8 Chart fill colors</li>
<li>8 Chart line colors</li>
</ul>
<p>The 40 standard colors are available in all color selection dialogs in Excel, including the drop-down dialogs on the Formatting toolbar. In ExcelWriter, they can all be accessed through the Palette class&#8217;s &#8220;get&#8221; methods. The system colors can also be accessed through the Palette.SystemColor enumeration. For example:</p>
<pre><code> //--- Get black using the SystemColor enumeration Color black = Palette.SystemColor.Black; </code></pre>
<p>Chart Fills and Chart Lines are what Excel uses when automatically setting fill and line colors on charts. Chart fills and lines not limited to these colors however. These colors are available as options in Patterns and Chart color dialogs (i.e. Format &gt; Cells &gt; Patterns). In ExcelWriter, all Chart fill and line colors can be accessed and replaced using the Palette&#8217;s &#8220;get&#8221; and &#8220;set&#8221; methods.</p>
<p>All standard and chart colors can be replaced with other colors using the Palette class&#8217;s &#8220;set&#8221; methods except for the system colors. For example:</p>
<pre><code> //--- Replace color at index 4 with RGB values (162, 221, 138) wb.Palette.SetColorAt(4, 162, 221, 138); </code></pre>
<p>This would be equivalent to changing the color palette in Excel through Tools &gt; Options &gt; Color.</p>
<h2>Palette Color Reference Charts</h2>
<p>Provided below are two views of the default palette. The first is ordered by palette index, and the second is similar to how the palette is displayed from within Excel.</p>
<p><strong>The colors in order of palette index</strong></p>
<pre><code> //--- Get the color at palette index 9 Color darkGreen = wb.Palette.GetColorAt(9); </code></pre>
<p>The RGB and HEX equivalents of each color are provided</p>
<table border="1" cellspacing="0" cellpadding="2">
<tbody>
<tr>
<th style="text-align: center;">Palette Index</th>
<th style="text-align: center;" width="75">Color</th>
<th style="text-align: center;">RGB</th>
<th style="text-align: center;">HEX</th>
<th style="text-align: center;">System Color</th>
</tr>
<tr>
<td style="text-align: center;">0</td>
<td style="text-align: center;" bgcolor="#000000"></td>
<td style="text-align: center;">0, 0, 0</td>
<td style="text-align: center;">#000000</td>
<td style="text-align: center;">Black</td>
</tr>
<tr>
<td style="text-align: center;">1</td>
<td style="text-align: center;" bgcolor="#FFFFFF"></td>
<td style="text-align: center;">255, 255, 255</td>
<td style="text-align: center;">#FFFFFF</td>
<td style="text-align: center;">White</td>
</tr>
<tr>
<td style="text-align: center;">2</td>
<td style="text-align: center;" bgcolor="#FF0000"></td>
<td style="text-align: center;">255, 0, 0</td>
<td style="text-align: center;">#FF0000</td>
<td style="text-align: center;">Red</td>
</tr>
<tr>
<td style="text-align: center;">3</td>
<td style="text-align: center;" bgcolor="#00FF00"></td>
<td style="text-align: center;">0, 255, 0</td>
<td style="text-align: center;">#00FF00</td>
<td style="text-align: center;">Green</td>
</tr>
<tr>
<td style="text-align: center;">4</td>
<td style="text-align: center;" bgcolor="#0000FF"></td>
<td style="text-align: center;">0, 0, 255</td>
<td style="text-align: center;">#0000FF</td>
<td style="text-align: center;">Blue</td>
</tr>
<tr>
<td style="text-align: center;">5</td>
<td style="text-align: center;" bgcolor="#FFFF00"></td>
<td style="text-align: center;">255, 255, 0</td>
<td style="text-align: center;">#FFFF00</td>
<td style="text-align: center;">Yellow</td>
</tr>
<tr>
<td style="text-align: center;">6</td>
<td style="text-align: center;" bgcolor="#FF00FF"></td>
<td style="text-align: center;">255, 0, 255</td>
<td style="text-align: center;">#FF00FF</td>
<td style="text-align: center;">Magenta</td>
</tr>
<tr>
<td style="text-align: center;">7</td>
<td style="text-align: center;" bgcolor="#00FFFF"></td>
<td style="text-align: center;">0, 255, 255</td>
<td style="text-align: center;">#00FFFF</td>
<td style="text-align: center;">Cyan</td>
</tr>
<tr>
<td style="text-align: center;">8</td>
<td style="text-align: center;" bgcolor="#800000"></td>
<td style="text-align: center;">128, 0, 0</td>
<td style="text-align: center;">#800000</td>
<td style="text-align: center;"></td>
</tr>
<tr>
<td style="text-align: center;">9</td>
<td style="text-align: center;" bgcolor="#008000"></td>
<td style="text-align: center;">0, 128, 0</td>
<td style="text-align: center;">#008000</td>
<td style="text-align: center;"></td>
</tr>
<tr>
<td style="text-align: center;">10</td>
<td style="text-align: center;" bgcolor="#000080"></td>
<td style="text-align: center;">0, 0, 128</td>
<td style="text-align: center;">#000080</td>
<td style="text-align: center;"></td>
</tr>
<tr>
<td style="text-align: center;">11</td>
<td style="text-align: center;" bgcolor="#808000"></td>
<td style="text-align: center;">128, 128, 0</td>
<td style="text-align: center;">#808000</td>
<td style="text-align: center;"></td>
</tr>
<tr>
<td style="text-align: center;">12</td>
<td style="text-align: center;" bgcolor="#800080"></td>
<td style="text-align: center;">128, 0, 128</td>
<td style="text-align: center;">#800080</td>
<td style="text-align: center;"></td>
</tr>
<tr>
<td style="text-align: center;">13</td>
<td style="text-align: center;" bgcolor="#008080"></td>
<td style="text-align: center;">0, 128, 128</td>
<td style="text-align: center;">#008080</td>
<td style="text-align: center;"></td>
</tr>
<tr>
<td style="text-align: center;">14</td>
<td style="text-align: center;" bgcolor="#C0C0C0"></td>
<td style="text-align: center;">192, 192, 192</td>
<td style="text-align: center;">#C0C0C0</td>
<td style="text-align: center;"></td>
</tr>
<tr>
<td style="text-align: center;">15</td>
<td style="text-align: center;" bgcolor="#808080"></td>
<td style="text-align: center;">128, 128, 128</td>
<td style="text-align: center;">#808080</td>
<td style="text-align: center;"></td>
</tr>
<tr>
<td style="text-align: center;">16</td>
<td style="text-align: center;" bgcolor="#9999FF"></td>
<td style="text-align: center;">153, 153, 255</td>
<td style="text-align: center;">#9999FF</td>
<td style="text-align: center;" rowspan="8" align="center">Chart Fills</td>
</tr>
<tr>
<td style="text-align: center;">17</td>
<td style="text-align: center;" bgcolor="#993366"></td>
<td style="text-align: center;">153, 51, 102</td>
<td style="text-align: center;">#993366</td>
</tr>
<tr>
<td style="text-align: center;">18</td>
<td style="text-align: center;" bgcolor="#FFFFCC"></td>
<td style="text-align: center;">255, 255, 204</td>
<td style="text-align: center;">#FFFFCC</td>
</tr>
<tr>
<td style="text-align: center;">19</td>
<td style="text-align: center;" bgcolor="#CCFFFF"></td>
<td style="text-align: center;">204, 255, 255</td>
<td style="text-align: center;">#CCFFFF</td>
</tr>
<tr>
<td style="text-align: center;">20</td>
<td style="text-align: center;" bgcolor="#660066"></td>
<td style="text-align: center;">102, 0, 102</td>
<td style="text-align: center;">#660066</td>
</tr>
<tr>
<td style="text-align: center;">21</td>
<td style="text-align: center;" bgcolor="#FF8080"></td>
<td style="text-align: center;">255, 128, 128</td>
<td style="text-align: center;">#FF8080</td>
</tr>
<tr>
<td style="text-align: center;">22</td>
<td style="text-align: center;" bgcolor="#0066CC"></td>
<td style="text-align: center;">0, 102, 204</td>
<td style="text-align: center;">#0066CC</td>
</tr>
<tr>
<td style="text-align: center;">23</td>
<td style="text-align: center;" bgcolor="#CCCCFF"></td>
<td style="text-align: center;">204, 204, 255</td>
<td style="text-align: center;">#CCCCFF</td>
</tr>
<tr>
<td style="text-align: center;">24</td>
<td style="text-align: center;" bgcolor="#000080"></td>
<td style="text-align: center;">0, 0, 128</td>
<td style="text-align: center;">#000080</td>
<td style="text-align: center;" rowspan="8" align="center">Chart Lines</td>
</tr>
<tr>
<td style="text-align: center;">25</td>
<td style="text-align: center;" bgcolor="#FF00FF"></td>
<td style="text-align: center;">255, 0, 255</td>
<td style="text-align: center;">#FF00FF</td>
</tr>
<tr>
<td style="text-align: center;">26</td>
<td style="text-align: center;" bgcolor="#FFFF00"></td>
<td style="text-align: center;">255, 255, 0</td>
<td style="text-align: center;">#FFFF00</td>
</tr>
<tr>
<td style="text-align: center;">27</td>
<td style="text-align: center;" bgcolor="#00FFFF"></td>
<td style="text-align: center;">0, 255, 255</td>
<td style="text-align: center;">#00FFFF</td>
</tr>
<tr>
<td style="text-align: center;">28</td>
<td style="text-align: center;" bgcolor="#800080"></td>
<td style="text-align: center;">128, 0, 128</td>
<td style="text-align: center;">#800080</td>
</tr>
<tr>
<td style="text-align: center;">29</td>
<td style="text-align: center;" bgcolor="#800000"></td>
<td style="text-align: center;">128, 0, 0</td>
<td style="text-align: center;">#800000</td>
</tr>
<tr>
<td style="text-align: center;">30</td>
<td style="text-align: center;" bgcolor="#008080"></td>
<td style="text-align: center;">0, 128, 128</td>
<td style="text-align: center;">#008080</td>
</tr>
<tr>
<td style="text-align: center;">31</td>
<td style="text-align: center;" bgcolor="#0000FF"></td>
<td style="text-align: center;">0, 0, 255</td>
<td style="text-align: center;">#0000FF</td>
</tr>
<tr>
<td style="text-align: center;">32</td>
<td style="text-align: center;" bgcolor="#00CCFF"></td>
<td style="text-align: center;">0, 204, 255</td>
<td style="text-align: center;">#00CCFF</td>
<td style="text-align: center;"></td>
</tr>
<tr>
<td style="text-align: center;">33</td>
<td style="text-align: center;" bgcolor="#CCFFFF"></td>
<td style="text-align: center;">204, 255, 255</td>
<td style="text-align: center;">#CCFFFF</td>
<td></td>
</tr>
<tr>
<td style="text-align: center;">34</td>
<td style="text-align: center;" bgcolor="#CCFFCC"></td>
<td style="text-align: center;">204, 255, 204</td>
<td style="text-align: center;">#CCFFCC</td>
<td style="text-align: center;"></td>
</tr>
<tr>
<td style="text-align: center;">35</td>
<td style="text-align: center;" bgcolor="#FFFF99"></td>
<td style="text-align: center;">255, 255, 153</td>
<td style="text-align: center;">#FFFF99</td>
<td style="text-align: center;"></td>
</tr>
<tr>
<td style="text-align: center;">36</td>
<td style="text-align: center;" bgcolor="#99CCFF"></td>
<td style="text-align: center;">153, 204, 255</td>
<td style="text-align: center;">#99CCFF</td>
<td style="text-align: center;"></td>
</tr>
<tr>
<td style="text-align: center;">37</td>
<td style="text-align: center;" bgcolor="#FF99CC"></td>
<td style="text-align: center;">255, 153, 204</td>
<td style="text-align: center;">#FF99CC</td>
<td style="text-align: center;"></td>
</tr>
<tr>
<td style="text-align: center;">38</td>
<td style="text-align: center;" bgcolor="#CC99FF"></td>
<td style="text-align: center;">204, 153, 255</td>
<td style="text-align: center;">#CC99FF</td>
<td style="text-align: center;"></td>
</tr>
<tr>
<td style="text-align: center;">39</td>
<td style="text-align: center;" bgcolor="#FFCC99"></td>
<td style="text-align: center;">255, 204, 153</td>
<td style="text-align: center;">#FFCC99</td>
<td style="text-align: center;"></td>
</tr>
<tr>
<td style="text-align: center;">40</td>
<td style="text-align: center;" bgcolor="#3366FF"></td>
<td style="text-align: center;">51, 102, 255</td>
<td style="text-align: center;">#3366FF</td>
<td style="text-align: center;"></td>
</tr>
<tr>
<td style="text-align: center;">41</td>
<td style="text-align: center;" bgcolor="#33CCCC"></td>
<td style="text-align: center;">51, 204, 204</td>
<td style="text-align: center;">#33CCCC</td>
<td style="text-align: center;"></td>
</tr>
<tr>
<td style="text-align: center;">42</td>
<td style="text-align: center;" bgcolor="#99CC00"></td>
<td style="text-align: center;">153, 204, 0</td>
<td style="text-align: center;">#99CC00</td>
<td style="text-align: center;"></td>
</tr>
<tr>
<td style="text-align: center;">43</td>
<td style="text-align: center;" bgcolor="#FFCC00"></td>
<td style="text-align: center;">255, 204, 0</td>
<td style="text-align: center;">#FFCC00</td>
<td style="text-align: center;"></td>
</tr>
<tr>
<td style="text-align: center;">44</td>
<td style="text-align: center;" bgcolor="#FF9900"></td>
<td style="text-align: center;">255, 153, 0</td>
<td style="text-align: center;">#FF9900</td>
<td style="text-align: center;"></td>
</tr>
<tr>
<td style="text-align: center;">45</td>
<td style="text-align: center;" bgcolor="#FF6600"></td>
<td style="text-align: center;">255, 102, 0</td>
<td style="text-align: center;">#FF6600</td>
<td style="text-align: center;"></td>
</tr>
<tr>
<td style="text-align: center;">46</td>
<td style="text-align: center;" bgcolor="#666699"></td>
<td style="text-align: center;">102, 102, 153</td>
<td style="text-align: center;">#666699</td>
<td style="text-align: center;"></td>
</tr>
<tr>
<td style="text-align: center;">47</td>
<td style="text-align: center;" bgcolor="#969696"></td>
<td style="text-align: center;">150, 150, 150</td>
<td style="text-align: center;">#969696</td>
<td style="text-align: center;"></td>
</tr>
<tr>
<td style="text-align: center;">48</td>
<td style="text-align: center;" bgcolor="#003300"></td>
<td style="text-align: center;">0, 51, 102</td>
<td style="text-align: center;">#003300</td>
<td style="text-align: center;"></td>
</tr>
<tr>
<td style="text-align: center;">49</td>
<td style="text-align: center;" bgcolor="#339966"></td>
<td style="text-align: center;">51, 153, 102</td>
<td style="text-align: center;">#339966</td>
<td style="text-align: center;"></td>
</tr>
<tr>
<td style="text-align: center;">50</td>
<td style="text-align: center;" bgcolor="#003300"></td>
<td style="text-align: center;">0, 51, 0</td>
<td style="text-align: center;">#003300</td>
<td style="text-align: center;"></td>
</tr>
<tr>
<td style="text-align: center;">51</td>
<td style="text-align: center;" bgcolor="#333300"></td>
<td style="text-align: center;">51, 51, 0</td>
<td style="text-align: center;">#333300</td>
<td style="text-align: center;"></td>
</tr>
<tr>
<td style="text-align: center;">52</td>
<td style="text-align: center;" bgcolor="#993300"></td>
<td style="text-align: center;">153, 51, 0</td>
<td style="text-align: center;">#993300</td>
<td style="text-align: center;"></td>
</tr>
<tr>
<td style="text-align: center;">53</td>
<td style="text-align: center;" bgcolor="#993366"></td>
<td style="text-align: center;">153, 51, 102</td>
<td style="text-align: center;">#993366</td>
<td style="text-align: center;"></td>
</tr>
<tr>
<td style="text-align: center;">54</td>
<td style="text-align: center;" bgcolor="#333399"></td>
<td style="text-align: center;">51, 51, 153</td>
<td style="text-align: center;">#333399</td>
<td style="text-align: center;"></td>
</tr>
<tr>
<td style="text-align: center;">55</td>
<td style="text-align: center;" bgcolor="#333333"></td>
<td style="text-align: center;">51, 51, 51</td>
<td style="text-align: center;">#333333</td>
<td style="text-align: center;"></td>
</tr>
</tbody>
</table>
<p><em>* The colors as displayed in Excel *</em></p>
<p>The following is similar to how the palette is displayed in Excel. To find the RGB and HEX equivalents, simply match up the palette index to the chart above.</p>
<table border="1" cellspacing="0" cellpadding="2">
<tbody>
<tr>
<th colspan="9">Excel Palette / Palette Indexes</th>
</tr>
<tr>
<td style="text-align: center;" rowspan="15" align="left" valign="top" width="100">Standard Colors</td>
<td style="text-align: center;" bgcolor="#000000" width="75"></td>
<td style="text-align: center;" bgcolor="#993300" width="75"></td>
<td style="text-align: center;" bgcolor="#333300" width="75"></td>
<td style="text-align: center;" bgcolor="#003300" width="75"></td>
<td style="text-align: center;" bgcolor="#003366" width="75"></td>
<td style="text-align: center;" bgcolor="#000080" width="75"></td>
<td style="text-align: center;" bgcolor="#333399" width="75"></td>
<td style="text-align: center;" bgcolor="#333333" width="75"></td>
</tr>
<tr>
<td style="text-align: center;">0</td>
<td style="text-align: center;">52</td>
<td style="text-align: center;">51</td>
<td style="text-align: center;">50</td>
<td style="text-align: center;">48</td>
<td style="text-align: center;">10</td>
<td style="text-align: center;">54</td>
<td style="text-align: center;">55</td>
</tr>
<tr>
<td colspan="8"></td>
</tr>
<tr>
<td bgcolor="#800000"></td>
<td bgcolor="#FF6600"></td>
<td bgcolor="#808000"></td>
<td bgcolor="#008000"></td>
<td bgcolor="#008080"></td>
<td bgcolor="#0000FF"></td>
<td bgcolor="#666699"></td>
<td bgcolor="#808080"></td>
</tr>
<tr>
<td style="text-align: center;">8</td>
<td style="text-align: center;">45</td>
<td style="text-align: center;">11</td>
<td style="text-align: center;">9</td>
<td style="text-align: center;">13</td>
<td style="text-align: center;">4</td>
<td style="text-align: center;">46</td>
<td style="text-align: center;">15</td>
</tr>
<tr>
<td colspan="8"></td>
</tr>
<tr>
<td bgcolor="#FF0000"></td>
<td bgcolor="#FF9900"></td>
<td bgcolor="#99CC00"></td>
<td bgcolor="#339966"></td>
<td bgcolor="#33CCCC"></td>
<td bgcolor="#3366FF"></td>
<td bgcolor="#800080"></td>
<td bgcolor="#969696"></td>
</tr>
<tr>
<td style="text-align: center;">2</td>
<td style="text-align: center;">44</td>
<td style="text-align: center;">42</td>
<td style="text-align: center;">49</td>
<td style="text-align: center;">41</td>
<td style="text-align: center;">40</td>
<td style="text-align: center;">12</td>
<td style="text-align: center;">47</td>
</tr>
<tr>
<td colspan="8"></td>
</tr>
<tr>
<td bgcolor="#FF00FF"></td>
<td bgcolor="#FFCC00"></td>
<td bgcolor="#FFFF00"></td>
<td bgcolor="#00FF00"></td>
<td bgcolor="#00FFFF"></td>
<td bgcolor="#00CCFF"></td>
<td bgcolor="#993366"></td>
<td bgcolor="#C0C0C0"></td>
</tr>
<tr>
<td style="text-align: center;">6</td>
<td style="text-align: center;">43</td>
<td style="text-align: center;">5</td>
<td style="text-align: center;">3</td>
<td style="text-align: center;">7</td>
<td style="text-align: center;">32</td>
<td style="text-align: center;">53</td>
<td style="text-align: center;">14</td>
</tr>
<tr>
<td colspan="8"></td>
</tr>
<tr>
<td bgcolor="#FF99CC"></td>
<td bgcolor="#FFCC99"></td>
<td bgcolor="#FFFF99"></td>
<td bgcolor="#CCFFCC"></td>
<td bgcolor="#CCFFFF"></td>
<td bgcolor="#99CCFF"></td>
<td bgcolor="#CC99FF"></td>
<td bgcolor="#FFFFFF"></td>
</tr>
<tr>
<td style="text-align: center;">37</td>
<td style="text-align: center;">39</td>
<td style="text-align: center;">35</td>
<td style="text-align: center;">34</td>
<td style="text-align: center;">33</td>
<td style="text-align: center;">36</td>
<td style="text-align: center;">38</td>
<td style="text-align: center;">1</td>
</tr>
<tr>
<td colspan="8"></td>
</tr>
<tr>
<td style="text-align: center;" rowspan="3" align="left" valign="top">Chart Fills</td>
<td style="text-align: center;" bgcolor="#9999FF"></td>
<td style="text-align: center;" bgcolor="#993366"></td>
<td style="text-align: center;" bgcolor="#FFFFCC"></td>
<td style="text-align: center;" bgcolor="#CCFFFF"></td>
<td style="text-align: center;" bgcolor="#660066"></td>
<td style="text-align: center;" bgcolor="#FF8080"></td>
<td style="text-align: center;" bgcolor="#0066CC"></td>
<td style="text-align: center;" bgcolor="#CCCCFF"></td>
</tr>
<tr>
<td style="text-align: center;">16</td>
<td style="text-align: center;">17</td>
<td style="text-align: center;">18</td>
<td style="text-align: center;">19</td>
<td style="text-align: center;">20</td>
<td style="text-align: center;">21</td>
<td style="text-align: center;">22</td>
<td style="text-align: center;">23</td>
</tr>
<tr>
<td style="text-align: center;" colspan="8"></td>
</tr>
<tr>
<td style="text-align: center;" rowspan="3" align="left" valign="top">Chart Lines</td>
<td bgcolor="#000080"></td>
<td bgcolor="#FF00FF"></td>
<td bgcolor="#FFFF00"></td>
<td bgcolor="#00FFFF"></td>
<td bgcolor="#800080"></td>
<td bgcolor="#800000"></td>
<td bgcolor="#008080"></td>
<td bgcolor="#0000FF"></td>
</tr>
<tr>
<td style="text-align: center;">24</td>
<td style="text-align: center;">25</td>
<td style="text-align: center;">26</td>
<td style="text-align: center;">27</td>
<td style="text-align: center;">28</td>
<td style="text-align: center;">29</td>
<td style="text-align: center;">30</td>
<td style="text-align: center;">31</td>
</tr>
</tbody>
</table>
<p><strong><em>Note: When accessing the palette through VBA, the color indexes are 1-based, not 0-based as they are when using ExcelWriter. Therefore, when using VBA, simply add 1 to the indexes listed above.</em></strong></p>
<h2><strong>Excel version of this information</strong></h2>
<p>An Excel file containing similar information about default palette colors is attached to this article. You may find it useful for testing different effects on the palette when changing colors using ExcelWriter.</p>
<h2><strong>Related Links</strong></h2>
<ul>
<li><a href="http://wiki.softartisans.com/display/EW8/The+Color+Palette">ExcelWriter Docs &#8211; The Color Palette</a></li>
<li><a href="http://wiki.softartisans.com/display/EW8/Palette">ExcelApplication Palette API Reference</a></li>
</ul>
<h2><strong>Attachments</strong></h2>
<p><a href="http://dl.dropbox.com/u/59073595/Excel%20color%20palette%20explained/Color_Palette_Example.zip">Color_Palette_Example.zip</a></p>
<img src="http://track.hubspot.com/__ptq.gif?a=104217&k=14&bu=http%3A%2F%2Fblog.softartisans.com&r=http%3A%2F%2Fblog.softartisans.com%2F2013%2F05%2F13%2Fexcels-color-palette-explained%2F&bvt=rss&p=wordpress" style="float:left;" xml:base="http://blog.softartisans.com/feed/" width="1" height="1" border="0" align="right"/>]]></content:encoded>
			<wfw:commentRss>http://blog.softartisans.com/2013/05/13/excels-color-palette-explained/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to create hyperlinks between cells in an Excel spreadsheet</title>
		<link>http://blog.softartisans.com/2013/05/13/how-to-create-hyperlinks-between-cells-in-an-excel-spreadsheet/</link>
		<comments>http://blog.softartisans.com/2013/05/13/how-to-create-hyperlinks-between-cells-in-an-excel-spreadsheet/#comments</comments>
		<pubDate>Mon, 13 May 2013 10:15:07 +0000</pubDate>
		<dc:creator>Alison</dc:creator>
				<category><![CDATA[Excel]]></category>
		<category><![CDATA[OfficeWriter]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[SSRS]]></category>
		<category><![CDATA[excelwriter]]></category>
		<category><![CDATA[reporting services]]></category>
		<category><![CDATA[sql server]]></category>

		<guid isPermaLink="false">http://blog.softartisans.com/?p=4327</guid>
		<description><![CDATA[Problem Your application requires cells to contain hyperlinks to other cells in the same spreadsheet, but the Cell.CreateHyperlink function only makes links to URLs on the internet. This article discusses a workaround using Excel&#8217;s HYPERLINK function. Solution Excel has a function named hyperlink() that, with some special syntax, can create links to other cells in a spreadsheet. [...]<img src="http://track.hubspot.com/__ptq.gif?a=104217&k=14&bu=http%3A%2F%2Fblog.softartisans.com&r=http%3A%2F%2Fblog.softartisans.com%2F2013%2F05%2F13%2Fhow-to-create-hyperlinks-between-cells-in-an-excel-spreadsheet%2F&bvt=rss&p=wordpress" style="float:left;" xml:base="http://blog.softartisans.com/feed/" width="1" height="1" border="0" align="right"/>]]></description>
				<content:encoded><![CDATA[<h1>Problem</h1>
<p>Your application requires cells to contain hyperlinks to other cells in the same spreadsheet, but the <a href="http://wiki.softartisans.com/display/EW8/Cell.CreateHyperlink%28String%29">Cell.CreateHyperlink</a> function only makes links to URLs on the internet. This article discusses a workaround using Excel&#8217;s HYPERLINK function.</p>
<h1>Solution</h1>
<p>Excel has a function named hyperlink() that, with some special syntax, can create links to other cells in a spreadsheet.</p>
<p>Normally, the hyperlink function creates a link to a URL, much like the <strong>CreateHyperlink</strong> function. Simply passing the name of a cell to the function causes it to form a bad link; Excel will interpret it as a URL.</p>
<p>The solution is to enclose the name of the destination cell in quotes and preface it with a pound sign. For example, a cell with formula =HYPERLINK(&#8220;#Sheet2!C3&#8243;, &#8220;Link to C3&#8243;) will contain the text &#8220;Link to C3&#8243;, and function as a hyperlink to that cell in Sheet2. The formula can be set either by editing an Excel file directly, or through setting the <strong>Cell.Formula</strong> property in ExcelWriter.</p>
<p>When the user clicks on the link, Excel&#8217;s focus will move to<span id="more-4327"></span> the specified cell, whether it is in the current sheet or another sheet.</p>
<h2><strong>Note about worksheet references:</strong></h2>
<p><a href="http://office.microsoft.com/en-us/excel-help/hyperlink-HP005209116.aspx">Microsoft&#8217;s documentation on the HYPERLINK function</a> has more information about how to create links in a spreadsheet. Careful readers will notice that their description of how to create links to cells in the same workbook is different from the one just discussed.</p>
<p>Namely, they recommend prefacing the sheet name with the name of the workbook in square brackets, as in =HYPERLINK(&#8220;[Book1]Sheet2!C3&#8243;, &#8220;Link to C3&#8243;). Unfortunately, this only works if you include the file extension with the name of the workbook: =HYPERLINK(&#8220;[Book1.xls]Sheet2!C3&#8243;, &#8220;Link to C3&#8243;).</p>
<p>Even then, this technique only works when the spreadsheet is saved to disk, not streamed to a user. The pound sign we used above is a special symbol that references the current workbook, no matter its name. Using the pound sign in your hyperlinks will let them reference the current workbook, even when streaming that workbook to the user.</p>
<img src="http://track.hubspot.com/__ptq.gif?a=104217&k=14&bu=http%3A%2F%2Fblog.softartisans.com&r=http%3A%2F%2Fblog.softartisans.com%2F2013%2F05%2F13%2Fhow-to-create-hyperlinks-between-cells-in-an-excel-spreadsheet%2F&bvt=rss&p=wordpress" style="float:left;" xml:base="http://blog.softartisans.com/feed/" width="1" height="1" border="0" align="right"/>]]></content:encoded>
			<wfw:commentRss>http://blog.softartisans.com/2013/05/13/how-to-create-hyperlinks-between-cells-in-an-excel-spreadsheet/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
