第三方工具下载:http://myxls.in2bits.org/WIKI/Downloads.ashx

1、服务器端可以不用安装 Excel。

2、网上很多资料都只有设值,没有取值,这里我自己整理了一些对这套控件的使用经验。

3、如果只是 写入 而不取值 则很好操作。

 

一、

这个第三方的控件在有的时候是不支持断点调试的,否则会出错:【没有可用于当前位置的源代码】

 

二、

如果要取值,则需要将没用到的单元格用空字符串初始化,否则的话在内部逻辑里面就会自动缩进。  如:你设置了 (1,1) 和 (1,3),取值就只能取 (1,1) 和 (1,2)

============================================================

org.in2bits.MyXls.XlsDocument xls = new org.in2bits.MyXls.XlsDocument(); 

        xls.FileName = "MyXLS Hello World.xls";  // 必须设置一个文件名

        //添加工作表,并设置名称 

        org.in2bits.MyXls.Worksheet sheet = xls.Workbook.Worksheets.AddNamed("Hello, World!");

        //获取单元格对象 

        org.in2bits.MyXls.Cells cells = sheet.Cells;

        cells.Add(1, 1, "Hello");// 设值

        cells.Add(1, 3, "World");// 设值

        //获取行对象。 

        org.in2bits.MyXls.Rows rows = sheet.Rows;

        // 取第一行,下标从1开始,而不是0 

        org.in2bits.MyXls.Row row = rows[ushort.Parse("1")">;       

  //下标从1开始,而不是0  

        org.in2bits.MyXls.Cell cell = row.GetCell(ushort.Parse("2")); 

       // 如果为null 则初始化为空字符串,否则ToString() 会出错。 

        object obj = cell.Value == null ? "" : cell.Value; 

  //xls.Save(@"d:\");// 保存到某个路径下 

        xls.Send();  // 发送到客户端

        //Response.Write(int.Parse(obj.ToString()));

===========================================================

 

三、

合并 : 

cells.Add(2, 1, "测试");

cells.Merge(2,2,1,3);

参数类型:(最小行,最大行,最小列,最大列)

这里和我们平时概念不一样(起始横坐标,起始纵坐标,结束横坐标,结束纵坐标)。

合并之后,算一个单元格,打出的样式是占的格子是正常的,

但是如果要取值而言,它只能代表一格。

设置 cells.Merge(2,2,1,3); 之后,

取 cells.Add(2, 4, "test"); 就得值得取   (2,2)而不是(2,4)。 

 

 

【在“二”和“三”中提到的自动缩进的问题,解决方案就是初始化没使用到的单元格】

cells.Add(2, 1, "测试"); 

cells.Add(2, 2, "");

cells.Add(2, 3, "");

cells.Merge(2,2,1,3);

设置 cells.Merge(2,2,1,3); 之后,

取 cells.Add(2, 4, "test"); 就取   (2,4)而不是(2,2)。 

 

所有呀,如果能在数据库端解决取值统计的问题就尽量在数据库端操作

最好少在Excel里面取值。

 

四、

样式:

org.in2bits.MyXls.XF xf = xls.NewXF();// 格式对象 

xf.Font.Bold = true;//粗体

xf.HorizontalAlignment = org.in2bits.MyXls.HorizontalAlignments.Centered;//左右居中

xf.VerticalAlignment = org.in2bits.MyXls.VerticalAlignments.Centered;//上线居中

xf.BottomLineStyle = ushort.Parse("2");//下边线粗

xf.BottomLineColor = org.in2bits.MyXls.Colors.Default0C;//下边线颜色

xf.Font.Height = 400;//自体高度,也是大小 

cells.Add(2, 4, "测试文本", xf);// 设值

 

也可以这样用:

org.in2bits.MyXls.Cell cell =  cells.Add(2, 4, "测试文本", xf); 

cell.Font.Bold = true;

cell.HorizontalAlignment = org.in2bits.MyXls.HorizontalAlignments.Centered;

cell.VerticalAlignment = org.in2bits.MyXls.VerticalAlignments.Centered;

cell.BottomLineStyle = ushort.Parse("2");

cell.BottomLineColor = org.in2bits.MyXls.Colors.Default0C;


支持的设置比较单一,也相对简单。

 

=============================================================

对 Excel.dll 的使用少用,服务器端必须装Excel,对于往客户端下载的支持和安全性很麻烦,官方也不建议这样使用:

http://support.microsoft.com/kb/257757/en-us 中这样说道:

 

Microsoft does not currently recommend, and does not support, Automation of Microsoft Office applications from any unattended, non-interactive client application or component (including ASP, ASP.NET, DCOM, and NT Services), because Office may exhibit unstable behavior and/or deadlock when Office is run in this environment.

=============================================

官方提倡 Office XML :

http://support.microsoft.com/kb/931866/

客户端要求

Microsoft Visual Studio 2005 或 Microsoft Visual C# 2005 
.NET 框架 3.0 
为.net 框架的 visual Studio 2005 扩展 3.0 
Excel 2007 或 Word 2007
 

 

上面这种模式 好像可以不用在服务器端 安装 Excel ,具体我还没去尝试。

但是客户端就必须安装 Excel 2007 或 Word 2007 

 

我在网上找了一些资料,在 VS2005 + .net 2.0  的基础之上升级到 VS2005 + .net3.0 失败了!