发表评论
@peace
这俩天正好也在做导出到Excel,看了你的文章才想到写这个的。。。。
@jillzhang
试用了 MyXls,觉的很好用,而且开源的也可靠,
发现SourceForge这个东西下载量非常小,所以拿来介绍下:-)
我记得MS已经正式官方发布了Office的二进制文档格式说明。
ushort fontIndex = BitConverter.ToUInt16(recordData.Get(0, 2).ByteArray, 0);
ushort formatIndex = BitConverter.ToUInt16(recordData.Get(2, 2).ByteArray, 0);
//ushort styleIndex = BitConverter.ToUInt16(recordData.Get(4, 2))
Font font = fonts[fontIndex];
以前看到过,在读EXCEL文件的时候有错误。
路过,学习!
一直苦恼.NET下没有类似于JAVA下的JExcelApi,现在好了!!
谢谢博主!!!!
MyXls————C#写的开源组件。可以给我一份吗,我想要个MyXls组件。
@鹏鹏_Lovely
文章里有链接的:-)
@所有人
谢谢大家支持
没个文档,没个性能测试数据,实在不放心用在自己的项目中
请问楼主:
1 XlsDocument xls = new XlsDocument(); //创建一个空的Excel文档
2
3 xls.Send(); //将文档发送到浏览器。
请问xls.Send();如何将文档只发送到IE浏览器中?我试了一下,只提示下载还是打开,可不可以不显示提示直接在IE中打开?
我又查了一下MyXls的源码,可以这样发送到浏览器:
xls.Send(XlsDocument.SendMethods.Inline);
再问楼主:
通过MyXls如何打开一个已存在的xls文档呢?
如果我这样写:
XlsDocument xls = new XlsDocument(@"D:\My Net\WebSite1\xls\test.xls");
运行时提示错误如下:
“/WebSite1”应用程序中的服务器错误。
--------------------------------------------------------------------------------
value already exists
参数名: name
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.ArgumentException: value already exists
参数名: name
请问:
xls.Send(XlsDocument.SendMethods.Inline); 是将内容显示在当前页面,那么如何让内容显示在另一个页面呢?
比如:左右两个框架,点击左框架某个按钮,会在右框架显示相关文件内容。
可能我问的问题太简单了点。左框架链接页面显示在右框架,这个我会。我的问题是:如果左框架显示了很多xls文件,这些文件可能分布在服务端众多的不同的目录,而我并未将这些目录在IIS中做成虚拟目录(如果做成虚拟目录,给xlls文件名写个超链接接可以了,但目录实在是太多)。现在我想实现的效果是:点击左框架xls文件名,会在右框架中(或在单独的一个页面,如果不用框架的话)显示该xls文件内容。我的xls文件内容读取方法采用MyXls的HttpContent方法。而MyXls新建xls文件后,采用xls.Send(XlsDocument.SendMethods.Inline); 只能将内容覆盖显示在当前页面,所以想请教楼主能不能让它单独显示在另一个页面呢?
谢谢!
@nine425
xls.Send()方法只是把当前excel文档的二进制流写入当前的输出流,
xls.Send(XlsDocument.SendMethods.Inline)只是给Http响应加了个
“Content-Disposition: Inline” Header,它使得浏览器默认处理附件的方式为直接打开,而不是保存。
关于Content-Disposition的更多信息可以浏览RFC1806
http://www.ietf.org/rfc/rfc1806.txt
至于你说的Feature,建议可以使用Javascript监测左框架的点击事件,驱动右边框架的地址。
至于读取Excel文件,ADO.net比较好的支持Excel文件读取,可以参考
http://support.microsoft.com/kb/306572/
欢迎讨论,希望这些信息对你有用:-)
谢谢楼主!这些信息很有价值。
不过,我想要的效果很简单,将xls文档或doc文档直接显示在另一个页面即可,但不通过链接如:http://...//test.doc的方式。直接读取服务端路径的某个office文件,采用二进制流,所以我对MyXls比较感兴趣。
不行,用不来。 使用后打开的excel里全是当前页的一些html编码,而且汉字都是乱码,也没产生5个sheet页,请教博主,我哪里出问题了?
楼主,我想知道怎么设置单元格的宽度?
我用
ColumnInfo col = new ColumnInfo(xls, sheet);
sheet.AddColumnInfo(col);
col.Width = 5120;
但是这只能改变第一列的宽度,后面的就变不了了,不知道这是为什么?
我自己使用最简单的代码都出错,
XlsDocument xls = new XlsDocument();
xls.Send();
这样子产生的文档内容为当前页的一些html编码,且汉字成了乱码。
请教博主,我哪里出问题了?
我是用vs2008在测。 不知道和这个有没有关系!
XlsDocument xls = new XlsDocument(path);
为什么执行到这个地方总有问题 ,我想吧本地xls文件读出来 这样不行吗
对不起,刚看到评论。
@冷火
@cepheus
单元格长度可以这样改变
ColumnInfo col = new ColumnInfo(xls, sheet);
cInfo.ColumnIndexStart = 1;
cInfo.ColumnIndexEnd = 4;
sheet.AddColumnInfo(col);
col.Width = 5120;
@Justinian
这个程序是2.0的,可能3.5会有问题,
@zhangyi
目前不支持读操作
刚才那段程序敲错了,应该这样 :-)
ColumnInfo cInfo = new ColumnInfo(xls, sheet);
cInfo.ColumnIndexStart = 1;
cInfo.ColumnIndexEnd = 4;
col.Width = 5120;
sheet.AddColumnInfo(col);
ColumnInfo类那俩个属性用来设置所要影响的列。
这位大哥,你提供的这个开源组件很有用,我正在为这个问题头痛,正好给我解决了,谢谢!
IE6下,生成Excel文件之后,会有一个空白页,楼主知道怎么把该空白页删除掉吗。IE7下面则没有这个问题
还有就是,隐藏一个不要的列怎么设置呢?
急需。。。
@郭斌
@天下鹰
@徐文兵
对不起,前阵子一直没打理博客,没看到各位的留言。
MergeArea meaA = new MergeArea(1, 2, 3, 4);//一个合并单元格实例(合并第一行、第三例 到 第二行、第四例)
sheet.AddMergeArea(meaA);
加上这段代码后生成的XLS不能正常打开,如果去掉以后就可以正常打开了,这什么原因啊,3Q
@Mr Chai
你说的是使用一个Excel模板,然后填充内容,创建一个Excel文件吧?你可以直接用ADO.NET,Insert语句就可以搞定了,性能相对很好
请问xls.Send();怎么提示不包括send的方法