读书人

[攒分贴] 通过文件结构直接生成xls文件

发布时间: 2012-04-05 12:42:40 作者: rapoo

[攒分贴] 通过文件结构直接生成xls文件
直接通过excel可以识别的文件结构生成xls文件的方法,这样就可以不引用麻烦的ole了

C# code
using System;using System.Collections.Generic;using System.Text;namespace ConsoleApplication16{    class Program    {        static void Main(string[] args)        {            //不通过OLE生成excel文件的方法            ExcelWriter excel = new ExcelWriter(@"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();        }    }    public class ExcelWriter    {        System.IO.FileStream _wirter;        public ExcelWriter(string strPath)        {            _wirter = new System.IO.FileStream(strPath, System.IO.FileMode.OpenOrCreate);        }        /// <summary>        /// 写入short数组        /// </summary>        /// <param name="values"></param>        private void _writeFile(short[] values)        {            foreach (short v in values)            {                byte[] b = System.BitConverter.GetBytes(v);                _wirter.Write(b, 0, b.Length);            }        }        /// <summary>        /// 写文件头        /// </summary>        public void BeginWrite()        {            _writeFile(new short[] { 0x809, 8, 0, 0x10, 0, 0 });        }        /// <summary>        /// 写文件尾        /// </summary>        public void EndWrite()        {            _writeFile(new short[] { 0xa, 0 });            _wirter.Close();        }        /// <summary>        /// 写一个数字到单元格x,y        /// </summary>        /// <param name="x"></param>        /// <param name="y"></param>        /// <param name="value"></param>        public void WriteNumber(short x, short y, double value)        {            _writeFile(new short[] { 0x203, 14, x, y, 0 });            byte[] b = System.BitConverter.GetBytes(value);            _wirter.Write(b, 0, b.Length);        }        /// <summary>        /// 写一个字符到单元格x,y        /// </summary>        /// <param name="x"></param>        /// <param name="y"></param>        /// <param name="value"></param>        public void WriteString(short x, short y, string value)        {            byte[] b = System.Text.Encoding.Default.GetBytes(value);            _writeFile(new short[] { 0x204, (short)(b.Length + 8), x, y,0, (short)b.Length });            _wirter.Write(b, 0, b.Length);        }    }}


blog同步更新:
http://blog.csdn.net/jinjazz/archive/2008/08/01/2753869.aspx

[解决办法]
......牛x
对这都有研究

读书人网 >C#

热点推荐