Tag Archives: excel

Excel打开CSV中文乱码的问题

有时候我们从网站里将数据库内容导出来,生成CSV(即逗号分隔的文本格式)格式,在Win下默认是与Excel绑定,双击时会调用 Excel 打开,这此用文本编辑器能正确识别的UTF-8 编码的CSV文件会导致其中的汉字出现不被识别的现象,即乱码。

其原因是 Excel 默认是以 ANSI 格式打开,并不做编码识别,错误的将UTF-8编码的汉字以ANSI编码显示。

正确的在Excel里打开 UTF-8 编码的CSV 文件的方法:

1) 先打开空白的Excel 

2) 切换到“数据”Tab,选择“自文本”

3) 选择 CSV 文件,出现文本导入向导。

4) 选择“分隔符号”,下一步。选择“逗号”,其余均不选,下一步,完成。

5)出现的“导入数据”对话框,点确定。

现在Excel里就能正确显示CSV里的汉字了。

Excel column splitter

Author: Zhuotong Nan (zhn1@pitt.edu)

The newest 2007 Excel holds a much larger amount of columns than the old 2003 version. So maybe you are facing the situation you want to convert to the old version but it cannot hold so much columns. Here attached the codes I developed to deal with this situation. The script will separate the sheet holding a large number of columns into several sheets with a specified number of columns.

image 
A screen shot of this script

To use it, import the VBA source codes to your Excel file, open your VBA editor, find this userform, and run it. Before running it, put your cursor on any cell of the data you want to be separated.

The author would like to thank Shugong Wang for his kind help on VBA scripting.

http://cid-0ea641a5a7f665a1.skydrive.live.com/embedrowdetail.aspx/Public/excel.splitter.script.zip

Excel 2007 Chart导出为image

南卓铜 (zhn1@pitt.edu)

总结如下,

1) copy chart in Excel 2007,paste到paint(画图)或其它图像处理软件,然后保存为图像,如jpeg。

2) 写vba代码,ActiveChart.Export FileName:=’image.gif’, FilterName:=’GIF’,可以保存为JPG, GIF和PNG。需要知道如果在Excel里写VBA代码,并执行,有可能要求打开宏安全控制选项。但无法控制图像质量。MATLAB Handle Graphics

3) copy chart,打开PowerPoint,将chart使用special paste…到Powerpoint,可供选项有emf, png, gif, jpeg等。在powerpoint中右键点击粘贴进来的图像,可以save as picture…,保存为需要的格式。

4) 将包括chart的worksheet保存为了html,将同时生成.gif的chart图像。

5)第三方add-in,比如PUP 7,不过需要掏钱。

你还有什么tip?

一个Qt Excel的文档翻译

使用Qt调用Excel

Eugene Eremin

翻译:tong # cngis.org

原文Urlhttp://www.qtlib.ru/index.php?option=com_content&task=view&id=42&Itemid=28

 

Qt 3.1及以上版本的一个新特性是为Windows操作系统提供了ActiveX支持。开发者如果关心如何使用Qt操作COM组件,比如在Excel里插入新数据,这个新增功能就很重要了。

然而不幸的是,在Internet上没有太多这方面的主题可以借鉴。我在这里演示一个例子,可能会对大家有所帮助。

首先我们来看一下Qt自带的例子。通常Qt自带的例子可以告诉大家一些常用的知识点。我不记得在哪里看过,说一个好的文档应当是用户看过后不再存在不解的地方。但Qt只提供了一个与MS Outlook Express交互的例子。不过这就是我开始Excel交互研究的起点了。

ActiveXCOM的区别不是很大,我不是这方面的专家,但我在这里推荐大家看一本Adam Denninga的书“ActiveX for professionals”。这本书会帮助大家很好地理解这些概念。第一步,我们来引入Excel,并创建一个对象。

#include <qaxobject.h>

QAxObject* excel = new QAxObject( "Excel.Application", this ); //获取一个Excel对象

excel->dynamicCall( "SetVisible(bool)", TRUE ); //设置为可见

这里我们通过代码构建了一个对象,并通过对象打开了Excel。第二步,我们计划插入新数据。为了做到这一步,必须了解一点Excel文档的结构。Excel应用程序包括一系列的workbooks,每个workbook又由多个sheets组成。Microsoft公司并没有给出太多这方面的结构信息,我在Google上寻找了不短的时间,也没有太多的结果。

QAxObject *workbooks = excel->querySubObject( "Workbooks" ); //得到Workbooks集合的指针

QAxObject *workbook = workbooks->querySubObject( "Open(const QString&)", "C:dataA.xls" ); //打开硬盘上的一个Excel文档

QAxObject *sheets = workbook->querySubObject( "Sheets" ); //得到Sheets对象的指针

QAxObject *StatSheet = sheets->querySubObject( "Item(const QVariant&)", QVariant("stat") );     //得到名为stat的一个sheet的指针

StatSheet->dynamicCall( "Select()" ); //选择名为statsheet使之可见 

QAxObject *range = StatSheet->querySubObject( "Range(const QVariant&)", QVariant( Qstring("A1:A1")));  //选择A1:A1这个range对象

range->dynamicCall( "Clear()" ); // 清除range对象

range->dynamicCall( "SetValue(const QVariant&)", QVariant(5) ); //将该range对象的值设为5

接下去用户可以保存和关闭这个Excel文档了。

最后说一句,这些对象的接口可以通过generateDocumentation () 产生。比如,我们可以这样做:

QFile outfile("excel.html");

QTextStream out( &outfile );

outfile.open( IO_WriteOnly | IO_Translate );

QString docu = excel->generateDocumentation();

out << docu;

outfile.close();

这些信息被保存在名为“excel.html”的文件里。如果插入的数据很大,会花费很多的时间。MFC使用了专门的class,但我没能在Qt里实现这个class。如果有意见,请反馈至http://prog.org.ru/forum/ptopic_141.html

译者注:本文由在线语言工具从俄语翻译至英语,然后人工翻译成中文,因此中文与俄文可能有一些出入,欢迎指正。

Qt 4里已经有很多的有关ActiveQt的文档,大家应当以那个为主要的学习的材料。