通过文件结构直接生成xls文件
以下代码演示了 直接通过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);
[*]}
[*]}
[*]}
[*]
页:
[1]