以下代码演示了 直接通过excel可以识别的文件结构生成xls文件的方法,这样就可以不引用麻烦的ole了。
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);
}
}
}
相关文章
- C#读取Excel文件(*.xls)|*.xls(2种方法)
- log4j如何直接通过自定义日志文件及动态生成路径
- ESP32学习 -从STM32工程架构进阶到ESP32架构-sdkconfig:配置ESP-IDF的系统参数(如任务堆栈大小、Wi-Fi SSID),通过文本文件或 menuconfig 修改。 .ioc:图形化配置STM32的外设(如GPIO、UART),生成初始化代码,不可直接编辑文本。 Q3: 为什么ESP32需要 components 目录?
- excel双击打不开通过文件可以打开_双击Excel表格文件时只打开程序不能直接打开文件...
- java 动态生成多个excel(xls\xlsx)文件打成zip包供用户下载
- NPOI写Excel,Spire.XLS for.NET组件转换Excel为PDF 首先要引用NPOI动态库和Microsoft.Office.Interop.excel.dll (Microsoft.Office.Interop.excel.dll 最好使用使用NuGet下载 ,或者使用网上下载,网上下载以后解压文件,把Microsoft.Office.Interop.excel.dll拷贝到项目下,添加引用,而NuGet下载直接引用,不需要再添加引用了,建
- C# 调用WebService的3种方式 :直接调用、根据wsdl生成webservice的.cs文件及生成dll调用、动态调用
- C#预览DWG文件方法(一)直接读取文件结构
- C#创建Excel(.xls和.xlsx)文件的三种方法
- [计算机故障处理]EXCEL文件双击不能直接打开 同事的电脑里的EXCEL文件不知什么原因双击不能直接打开了,双击只能打开软件而且是没有任何表格的,但通过软件中的“打开”再找到指定的文件能打开。