C#+VBA操作Excel总结

Excel在日常办公中应用非常广泛,这次我接到一个案子,需要往Excel中写入数据并能够打印出固定格式,前前后后大概花了将近2星期才搞定,现在做一些分享。

一、关于操作Excel的几种方式

我们导出Excel,大抵是有两种方法,一种是在服务器端用一些类库或者COM组件直接生成Excel成品,其二是在后台只写入数据,而不写入具体格式,等用户下载完 Excel之后再在客户端上利用vba生成Excel成品。

1.1使用"自动化"功能-后台生成成品

微软把后台使用COM组件称之为"自动化",其实它本身是不建议这种用法,在257757 号文章(服务器端 Office 自动化注意事项)也明文标出"Microsoft 目前建议不要从任何无人参与的、非交互式客户端应用程序或组件(包括 ASP、DCOM 和 NT Service)中进行 Microsoft Office 应用程序的"自动化",也不为此提供支持,因为 Office 在这种环境中运行时可能会出现不稳定的现象并且/或者会死锁。"

这种方法的优点是给用户更简洁的展现,毕竟原生的Excel成品比半成品来更容易接受,而且可以避免宏安全问题 ...

more ...

脑袋大,脖子粗~

不是大款就伙夫~

昨天几个同事过来玩,我就下厨做菜了,哈哈,上两张图。

原料哈

大功告成

依次为:油面筋掐肉、番茄鸡蛋、韭黄鸡蛋、地三鲜、红烧鱼、番茄酱黄瓜,还有一个煨的排骨汤没端上来~累死我了~从来没烧过这么多菜~

话说地三鲜原来这么麻烦,在文静童鞋指导下面,依次食材过油,费了将近半小时才弄好~

more ...

一周Python小记

上个星期以来忙里偷闲一直在写一系列小型的代码生成器,完成一些从需求到结构化代码生成和验证作业。这个小东西是用Python写的,我简单分享一下中间所得。

一、配置文件

1、YAML格式

数据库连接信息和作业相关信息是存放在数据库中的,配置文件形式可以有很多种选择:XML / ini / txt,我这里选择YAML作为存放。

YAML使用起来相当方便,能够自动解析成对应语言中的变量,比如列表解析为列表,数字文字分别解析成对应的格式变量。

之所以选择YAML,是看中它对语言的亲和性和可读性,GAE的配置文件就是YAML格式。YAML的语法相当简单,用:来分隔key: value,用 - 来分隔列表,注意点是缩进需要用空格,关键符号和内容之间要加上一个空格。我的配置文件如下:

taskId: PQMI06
taskName: 测试建制作业
author: alswl
confirmId: 20101025xxx

headFiles:

  • head1.txt
  • head2.txt
  • head3.txt
    bodyFiles:

  • body1.txt

  • body2 ...
more ...

Python读写剪贴板

最近在写一个CodeGenX代码生成器,说是生成器,其实是目前只完成一堆零散的脚本。这些脚本的调用方式一般是从某个txt中读取数据,再写到另外一个txt中。

由于某些数据变动频繁,导致我操作txt次数大增,我怒了,就找了一个脚本自动读写剪贴板。

#coding=utf-8
'''
读写剪贴板
'''
import win32clipboard as w
import win32con

def getText():
  w.OpenClipboard()
  d = w.GetClipboardData(win32con.CF_TEXT)
  w.CloseClipboard()
  return d

def setText(aString):
  w.OpenClipboard()
  w.EmptyClipboard()
  w.SetClipboardData(win32con.CF_TEXT, aString)
  w.CloseClipboard()

别说有了这个脚本用起来还是蛮方便的,建议丢到Python的lib下面,然后可以方便调用。

如果双击 .py ...

more ...

在Win7上面使用Standalone Network Extender

用Win7大概1个月了,的确很不错,本来试用的心态变成了完全不想回到XP时代了。

Win7的UAC比Vista已有很大的进步,至少不是那么烦心了,但是仍然很多场合都不能与以前旧版本的一些软件配合默契。

比如公司用的这款VPN软件-Standalone Network Extender。

这款软件是Billion BiGuard公司推出的SSL产品,通过IE载入一个Active插件来连接公司内网。我在以前XP时候很轻松连入,先在却死活无法连接 成功。我看了一下版本:build:Sep 7 2009-14:06:08,在Billion BiGuard公司的主页也没有找到适合Win7的新版本。

我猜测VPN软件需要修改系统底层参数,可能需要管理员权限,就试用管理员权限打开IE,果然,顺利连接成功。

嗯,以后使用古董遇到一些比较怪异的问题,如果它是安全可靠的,就可以试试管理员权限了。我是不推荐关闭UAC的,权限机制虽然烦,但是可以保证一些系统权限不被开放 。

more ...

Update_10_10_11

  1. 十月份还没写过东西呢,于是Update一次。
  2. 国庆节参加同学婚礼,呀,人家都结婚了,我还单身,是不是该考虑考虑了呢~
  3. 最近工作有点忙,没刚进公司时候那么悠闲了。
  4. 南图的书四本在手上,还没有看完,发现用XMind做读书笔记挺不错,直观,方便。
  5. 晚上回家似乎都不怎么写代码,GR还堆了一坨没看,光顾着玩了
  6. 最近看的书《Python 学习手册(第三版)》、《Web界面设计》、《完美代码》、《Web Designer Idea》、《ASP.NET 3.5揭秘(卷2)》。
  7. 技术上面的积累零零碎碎挺多,记录在Wiz,挺难组织分享,遂罢。
more ...

小脚本mm->html

我同时在使用两套信息记录工具,知识收集记录工具BooguNote + KMS Wiz,关于这两套系统具体介绍请见桌面记录神器- BooguNote & 我所使用的知识管理系统

我的使用习惯是在BooguNote中收集日常的琐碎知识点,包括我所想的和工作记录。每个小知识节点的长度大概在200-300字左右。这些被我称为的知识碎片显然 不能直接放入KMS。

BooguNote可以将里面的文字直接复制出来,会在父亲节点上加入+,子节点加入-,这种简单的txt不能满足我的要求。于是我花了点时间写了一个mm文件到ht ml的转换脚本。

BooguNote的文件格式是boo,可以转换成FreeMind的思维导图格式.mm,我认为用mm作为源数据格式适用范围更大。

#coding=utf-8
from xml.dom import minidom
import sys
import os

class MM2Html:

'转换MM->Html类'

def init(self):

self.html = '''<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1 ...

more ...

我所使用的知识管理系统

最近工作比较忙,自由上网的时间被大幅度减少,加上在啃.net的书,所以能够分享的东西就不多了。公司所在的部门需要将PMS和KMS整合在一起,正在对KMS进行 选型,我就趁这个机会把我使用知识管理系统的经验分享一下。

一、知识管理系统(KMS)

简单说一下知识管理的定义:指个人或团体通过工具建立知识体系并不断完善,进行知识的收集、消化吸收和创新的过程,这其中使用的工具也就是KMS。KMS应该帮助我们 队只是进行采集、精炼、索引、分类、检阅、检索、搜索的功能。

不多解释KMS了,省的看大段文字心烦,想做理论深入的去最下面的相关链接查找吧。

二、我想要的KMS

我理想中的KMS应该能够满足一下几点要求。

1、数据保存格式

数据的保存格式关系到知识的完整性和呈现方式,这是我最看重的一条。我理想中的保存格式是能够内嵌媒体信息,可以自定义内容的样式,最好是用大家比较习惯的文档体系, 比如h1/h2/h3/p/br/ol/li。在内嵌媒体内容的同时也要能够在知识点外挂其他类型文件,比如Excel、知识导图,甚至exe可执行文件。

数据保存格式也要考虑数据的移植性 ...

more ...

恶心的Yahoo Group

image

这段时间一直受到来自YahooGroup的垃圾邮件,最早出现一封确认邮件,我当时粗粗看过,全英文,心想自己没有订阅过什么Yahoo Group的邮件组,应该只是一封纯粹的垃圾邮件。

可惜我错了,接下来几天来自Yahoo Group的垃圾邮件虽然不至于铺天盖地,不过也给我的Gmail造成了很大困扰(好在GMail垃圾邮件过滤功能强大)。

晚上回来Google了一下"YahooGroup 垃圾"关键词,果然有朋友遇到一样的症状,alswl在这里附上解决办法。

&nbsp_place_holder;先連到 My Communication Preferences 查看自己的 email&nbsp_place_holder; address

&nbsp_place_holder;在 Option 下點選 Edit

取消勾選這兩個項目

&nbsp_place_holder;&nbsp_place_holder;&nbsp_place_holder; * Allow group moderators to directly add me to their groups

&nbsp_place_holder;&nbsp_place_holder;&nbsp_place_holder; * Allow ...

more ...

将VisualStudio打造成Vim

image

背景:Vim in VisualStudio?

最近痴迷于Vim,尝试着在.net环境中(70%C#+20%ASPX+10%JS)使用Vim进行开发。但是似乎现成的Vim插件不太适应.net开发平台,在进 行调试、编译以及ASPX页面调整时候还是需要切换到VS。

内事不决问老婆,外事不决问Google,我以关键词"Vim C#"向G神询问,很可惜一圈一圈找下来,都没有什么有价值的答案。在StackOverlow上找到 了一些相关资源,其中几位资深人士(使用Vi/Vim大约20年)提到了一款叫做ViEmu的软件,就好奇的跑去看看。

ViEmu

让我们来见识一下ViEmu的厉害吧。ViEmu支持模式切换、移动、宏、高亮搜索,键盘映射、增强命令、正则表达、可视模式等等。反正常用的Vim功能都具备。它自 己也敢宣称支持Vim大部分功能(Vim太强大,不敢说完全模拟~)。下面是一张ViEmu的官方示意图 ...

more ...