|
|
以下代码演示了 直接通过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);
- }
- }
- }
|
|