第三方工具下载: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 失败了!
转载于:https://blog.51cto.com/1030967291/1124145