以下代码演示了 直接通过excel可以识别的文件结构生成xls文件的方法,这样就可以不引用麻烦的ole了。
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);
}
}
}
责任编辑:小草