<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	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/"
	>

<channel>
	<title>-Flyぁ梦- &#187; Excel</title>
	<atom:link href="http://blog.11034.org/tag/excel/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.11034.org</link>
	<description></description>
	<lastBuildDate>Sun, 22 Jun 2025 08:59:05 +0000</lastBuildDate>
	<language>zh-CN</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.2.38</generator>
	<item>
		<title>记C#和Excel开发</title>
		<link>http://blog.11034.org/2014-09/dotnet_csharp_excel.html</link>
		<comments>http://blog.11034.org/2014-09/dotnet_csharp_excel.html#comments</comments>
		<pubDate>Wed, 10 Sep 2014 07:31:54 +0000</pubDate>
		<dc:creator><![CDATA[-Flyぁ梦-]]></dc:creator>
				<category><![CDATA[Life in Coding]]></category>
		<category><![CDATA[.Net]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[Excel]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://blog.11034.org/?p=2287</guid>
		<description><![CDATA[需要一个windows环境下的工具，能够读写Excel。这个Excel比较复杂，内嵌VB脚本，写Excel的时 [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>需要一个windows环境下的工具，能够读写Excel。这个Excel比较复杂，内嵌VB脚本，写Excel的时候必须得保留这些原有的脚本数据。</p>
<p><span id="more-2287"></span></p>
<p>介绍下这个VB脚本，就是给每一行数据提供下拉框进行一些备用数据的选择，比如打标签。这个下拉框并不是Excel提供的控件（控件绑定于具体的Cell或者坐标很麻烦），而是用弹窗实现的，全局共享一个弹窗数据源。这是一段在Excel文件中的VB代码。</p>
<p>最初开始用Python，靠xlrd和xlwt模块进行读写，读的确没什么问题也挺方便，但是写就有点纠结了，xlwt不能写已经存在的excel文件而是需要新创建一个文件然后开始写入然后替换原有文件，如果Excel文件中有设置好的一些格式、控件、脚本的话，就都没了。然后Python最麻烦的当然就是windows下是没有预装Python的，这个工具给别人使用还要带一个Python环境真是麻烦，然后文件就很多包括.py、双击运行的.bat等。</p>
<p>然后想到的就是能够在win环境下良好支持的C#，本科的时候还是学过C#的有那么一点点基础而且毕竟和Java比较像。C#提供的操纵Excel功能的确比较强大，但是没这么好用，很容易报异常需要耐心调试。但是能够编译成.exe，在win环境下运行起来到底方便。</p>
<pre class="markdown_pre"><code>VS创建项目时，会提示选择.Net Framework版本，尽量选择4.0（win7自带）或者更低的，以更好的跨平台；一开始用了默认的4.5（大概是安装VS时候给自动装上的，编译出来在某些win7环境中会报错）

md5的方法：最简单的是用Web模块里的那个方法，但是这个Web模块似乎不太跨平台；网上方法很多，但是算出来的答案居然都不太一样！选个靠谱的不容易...</code></pre>
<p>写代码的时候遇到过的几个坑</p>
<pre class="markdown_pre"><code>xlsApp.Visible = false; （不然每次执行都会打开Excel再关闭）

xlsApp.DisplayAlerts = false; （不然保存的时候会各种提示确认比较烦）

filePath = filePath.Replace('/', '\\');   xlsBook.SaveAs ...（文件路径用 / 就会报异常）

xlsBook.Close(false, Type.Missing, Type.Missing); （没有这句话，程序执行完后Excel的进程就会留在内存中...执行多次就一堆死进程...）</code></pre>
<p>微软的代码风格也就算了，操纵Excel的各种API的命令和使用方法，真是无法直视</p>
<h4  class="related_post_title">看看 .Net , C++ , Excel , Python</h4><ul class="related_post"><li>2014-07-07 -- <a target="_blank" href="http://blog.11034.org/2014-07/ruby_on_rails.html" title="ruby on rails">ruby on rails</a></li><li>2011-10-20 -- <a target="_blank" href="http://blog.11034.org/2011-10/zoj_100_ac.html" title="ZOJ起步 100AC">ZOJ起步 100AC</a></li></ul><h4 class="related_post_title">看看 Life in Coding </h4><ul class="related_post"><li>2016-09-09 -- <a target="_blank" href="http://blog.11034.org/2016-09/jabber_and_xmpp.html" title="jabber和XMPP简述原理">jabber和XMPP简述原理</a></li><li>2015-01-07 -- <a target="_blank" href="http://blog.11034.org/2015-01/prevent_db_duplicate.html" title="防止数据库数据重复的几种方法">防止数据库数据重复的几种方法</a></li><li>2014-10-25 -- <a target="_blank" href="http://blog.11034.org/2014-10/linux_timeout.html" title="linux的timeout处理wkhtmltopdf进程超时">linux的timeout处理wkhtmltopdf进程超时</a></li><li>2011-06-11 -- <a target="_blank" href="http://blog.11034.org/2011-06/google_doodle_guitar.html" title="2011-6-9 Google Doodle之电子琴">2011-6-9 Google Doodle之电子琴</a></li><li>2011-03-10 -- <a target="_blank" href="http://blog.11034.org/2011-03/learning_cs.html" title="学计算机的尼玛伤不起啊！！！！！！">学计算机的尼玛伤不起啊！！！！！！</a></li>]]></content:encoded>
			<wfw:commentRss>http://blog.11034.org/2014-09/dotnet_csharp_excel.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
