现在的位置: 首页 > 综合 > 正文

ASP.NET – 读写Excel – MyXls – 三方控件使用说明

2013年07月08日 ⁄ 综合 ⁄ 共 3419字 ⁄ 字号 评论关闭

转自 http://hi.baidu.com/nirvanan/blog/item/175abc002c4bf016728da5ae.html

 

第三方工具下载: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 失败了!

抱歉!评论已关闭.