第三方工具下載:http://myxls.in2bits.org/WIKI/Downloads.ashx
1、服務(wù)器端可以不用安裝 Excel。
2、網(wǎng)上很多資料都只有設(shè)值,沒有取值,這里我自己整理了一些對(duì)這套控件的使用經(jīng)驗(yàn)。
3、如果只是 寫入 而不取值 則很好操作。
一、這個(gè)第三方的控件在有的時(shí)候是不支持?jǐn)帱c(diǎn)調(diào)試的,否則會(huì)出錯(cuò):【沒有可用于當(dāng)前位置的源代碼】
二、如果要取值,則需要將沒用到的單元格用空字符串初始化,否則的話在內(nèi)部邏輯里面就會(huì)自動(dòng)縮進(jìn)。 如:你設(shè)置了 (1,1) 和 (1,3),取值就只能取 (1,1) 和 (1,2)
============================================================
org.in2bits.MyXls.XlsDocument xls = new org.in2bits.MyXls.XlsDocument();
xls.FileName = "MyXLS Hello World.xls"; // 必須設(shè)置一個(gè)文件名
//添加工作表,并設(shè)置名稱
org.in2bits.MyXls.Worksheet sheet = xls.Workbook.Worksheets.AddNamed("Hello, World!");
//獲取單元格對(duì)象
org.in2bits.MyXls.Cells cells = sheet.Cells;
cells.Add(1, 1, "Hello");// 設(shè)值
cells.Add(1, 3, "World");// 設(shè)值
//獲取行對(duì)象。
org.in2bits.MyXls.Rows rows = sheet.Rows;
// 取第一行,下標(biāo)從1開始,而不是0
org.in2bits.MyXls.Row row = rows[ushort.Parse("1")">;
//下標(biāo)從1開始,而不是0
org.in2bits.MyXls.Cell cell = row.GetCell(ushort.Parse("2"));
// 如果為null 則初始化為空字符串,否則ToString() 會(huì)出錯(cuò)。
object obj = cell.Value == null ? "" : cell.Value;
//xls.Save(@"d:\");// 保存到某個(gè)路徑下
xls.Send(); // 發(fā)送到客戶端
//Response.Write(int.Parse(obj.ToString()));
===========================================================
三、合并 :
cells.Add(2, 1, "測試");
cells.Merge(2,2,1,3);
參數(shù)類型:(最小行,最大行,最小列,最大列)
這里和我們平時(shí)概念不一樣(起始橫坐標(biāo),起始縱坐標(biāo),結(jié)束橫坐標(biāo),結(jié)束縱坐標(biāo))。
合并之后,算一個(gè)單元格,打出的樣式是占的格子是正常的,
但是如果要取值而言,它只能代表一格。
設(shè)置 cells.Merge(2,2,1,3); 之后,
取 cells.Add(2, 4, "test"); 就得值得取 (2,2)而不是(2,4)。
【在“二”和“三”中提到的自動(dòng)縮進(jìn)的問題,解決方案就是初始化沒使用到的單元格】
cells.Add(2, 1, "測試");
cells.Add(2, 2, "");
cells.Add(2, 3, "");
cells.Merge(2,2,1,3);
設(shè)置 cells.Merge(2,2,1,3); 之后,
取 cells.Add(2, 4, "test"); 就取 (2,4)而不是(2,2)。
所有呀,如果能在數(shù)據(jù)庫端解決取值統(tǒng)計(jì)的問題就盡量在數(shù)據(jù)庫端操作
最好少在Excel里面取值。
四、樣式:
org.in2bits.MyXls.XF xf = xls.NewXF();// 格式對(duì)象
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);// 設(shè)值
也可以這樣用:
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;
支持的設(shè)置比較單一,也相對(duì)簡單。
=============================================================
對(duì) Excel.dll 的使用少用,服務(wù)器端必須裝Excel,對(duì)于往客戶端下載的支持和安全性很麻煩,官方也不建議這樣使用:
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 擴(kuò)展 3.0
Excel 2007 或 Word 2007
上面這種模式 好像可以不用在服務(wù)器端 安裝 Excel ,具體我還沒去嘗試。
但是客戶端就必須安裝 Excel 2007 或 Word 2007
我在網(wǎng)上找了一些資料,在 VS2005 + .net 2.0 的基礎(chǔ)之上升級(jí)到 VS2005 + .net3.0 失敗了!
http://www.shidongliang.cn/2010/04/37.aspx