六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 27|回复: 0

通过文件结构直接生成xls文件

[复制链接]

升级  85%

884

主题

884

主题

884

主题

探花

Rank: 6Rank: 6

积分
2700
 楼主| 发表于 2013-1-26 14:19:25 | 显示全部楼层 |阅读模式
以下代码演示了 直接通过excel可以识别的文件结构生成xls文件的方法,这样就可以不引用麻烦的ole了。
<div class="highlighter">

  • usingSystem;
  • usingSystem.Collections.Generic;
  • usingSystem.Text;
  • namespaceConsoleApplication16
  • {
  • classProgram
  • {
  • staticvoidMain(string[]args)
  • {
  • //不通过OLE生成excel文件的方法
  • ExcelWriterexcel=newExcelWriter(@"c:\test.xls");
  • excel.BeginWrite();
  • excel.WriteString(0,0,"Name");
  • excel.WriteString(0,1,"Score");
  • excel.WriteString(1,0,"jinjazz");
  • excel.WriteNumber(1,1,100);
  • excel.WriteString(2,0,"游客");
  • excel.WriteNumber(2,1,0);
  • excel.EndWrite();
  • }
  • }
  • publicclassExcelWriter
  • {
  • System.IO.FileStream_wirter;
  • publicExcelWriter(stringstrPath)
  • {
  • _wirter=newSystem.IO.FileStream(strPath,System.IO.FileMode.OpenOrCreate);
  • }
  • ///<summary>
  • ///写入short数组
  • ///</summary>
  • ///<paramname="values"></param>
  • privatevoid_writeFile(short[]values)
  • {
  • foreach(shortvinvalues)
  • {
  • byte[]b=System.BitConverter.GetBytes(v);
  • _wirter.Write(b,0,b.Length);
  • }
  • }
  • ///<summary>
  • ///写文件头
  • ///</summary>
  • publicvoidBeginWrite()
  • {
  • _writeFile(newshort[]{0x809,8,0,0x10,0,0});
  • }
  • ///<summary>
  • ///写文件尾
  • ///</summary>
  • publicvoidEndWrite()
  • {
  • _writeFile(newshort[]{0xa,0});
  • _wirter.Close();
  • }
  • ///<summary>
  • ///写一个数字到单元格x,y
  • ///</summary>
  • ///<paramname="x"></param>
  • ///<paramname="y"></param>
  • ///<paramname="value"></param>
  • publicvoidWriteNumber(shortx,shorty,doublevalue)
  • {
  • _writeFile(newshort[]{0x203,14,x,y,0});
  • byte[]b=System.BitConverter.GetBytes(value);
  • _wirter.Write(b,0,b.Length);
  • }
  • ///<summary>
  • ///写一个字符到单元格x,y
  • ///</summary>
  • ///<paramname="x"></param>
  • ///<paramname="y"></param>
  • ///<paramname="value"></param>
  • publicvoidWriteString(shortx,shorty,stringvalue)
  • {
  • byte[]b=System.Text.Encoding.Default.GetBytes(value);
  • _writeFile(newshort[]{0x204,(short)(b.Length+8),x,y,0,(short)b.Length});
  • _wirter.Write(b,0,b.Length);
  • }
  • }
  • }

您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表