A.
Excel
嵌入网页的方法。
1.
在后台用流的方式返回给前台页面展现;
2.
在后台讲Excel格式数据定好保存到本地,在前台页面用html标签加载展示;
B.
Excel
显示格式的控制。
1.
Excel
单元格格式设置,默认为常规类型;
2.
上下标格式的控制;
3.
单元格水平垂直对齐方式;
4.
单元格边框设置;
5.
单元格合并;
6.
字体设置,包括字体的颜色、大小、粗体、斜体、字体、下划线等;
7.
冻结行列;
8.
公式栏的显示与隐藏;
9.
行标题和列表题的显示与隐藏;
10.
网格的显示与隐藏;
11.
水平滚动条和垂直滚动条的显示与隐藏;
12.
Sheet
页的显示与隐藏;
C.
向Excel中填充数据,并导出为临时文件。
1.2.
OWC
试验:
A.
OWC
组件在web页面展示的方法。
1.
将OWC中Sheet导出为本地Excel文件,再将导出的文件呈现到Web页面;
2.
后台把配置好的Sheet直接以流文件方式返回到Web页面展现;
3.
用html标签将OWC展现在Web页面,加载后台程序导出到本地的文件(xml、html、csv格式)来显示数据;
B.
在OWC中的电子表格类中填充数据的方法。
C.
OWC
中显示数据格式的控制。
1.
电子表格外观控制:工具栏的显示、Office图标的显示、列标题的显示、行标题的显示、水平滚动条的显示、垂直滚动条的显示、网格的显示、网格颜色设置;
2.
单元格水平对齐方式;
3.
单元格垂直对齐方式;
4.
单元格合并;
5.
单元格字体设置:字体、字形、字号、字体颜色、字体加粗、下划线(多种样式);
6.
单元格边框设置;
2.
主要模块
2.1.
Excel
1、
Excel
嵌入网页的方法:
A
、将后台定制好的Excel文件在后台用流的方式返回给前台页面展现,代码如下
:
Response.ClearContent();
Response.ClearHeaders();
Response.ContentType =
"application/vnd.ms-excel";
Response.AddHeader(
"Content-Disposition",
"inline;filename='
我的文件'"
);
Response.WriteFile(FileName);//FileName
为Excel文件所在地址
Response.Flush();
Response.Close();
运行效果:整个页面都充满了Excel。
B
、在前台页面框架中直接加在,代码:
<
iframe
id
="myExcelHtml"
src
="Nomarl.xls"
width
=
"600"
height
="300"
align
="middle">
</
iframe
>
运行效果:可随意控制Excel在页面的显示位置。
2、
Excel
显示格式控制。
A、
单元格格式设置,默认为常规类型;
Excel
Excel.
Range r = mySheet.get_Range(mySheet.Cells[1, 1], mySheet.Cells[DT.Rows.Count + 2, DT.Columns.Count - 3]);
//
设置单元格格式为文本类型,文本类型可设置上下标
r.NumberFormat =
"@";
//
设置单元格格式为数值类型,小数点后2位
r.NumberForma = "0.00_ "
//
设置单元格格式为货币类型,小数点后2位
r.NumberForma = "
¥#,##0.00;¥-#,##0.00"
//
设置单元格格式为会计专用类型,小数点后2位
r.NumberForma = _"_
¥* #,##0.00_ ;_ ¥* -#,##0.00_ ;_ ¥* ""-""??_ ;_ @_ "
//
设置单元格格式为日期类型
r.NumberForma = "yyyy-m-d"
//
设置单元格格式为时间类型
r.NumberForma = "[$-F400]h:mm:ss AM/PM"
//
设置单元格格式为百分比类型,小数点后2位
r.NumberForma = "0.00%"
//
设置单元格格式为分数类型,分母为一位数
r.NumberForma = "# ?/?"
//
设置单元格格式为科学技术类型,小数位数为2
r.NumberForma = "0.00E+00"
//
设置单元格格式为特殊类型
r.NumberForma = "000000"
B、
上下标格式的控制;
//
控制输出样式为下标
mySheet.get_Range(mySheet.Cells[i + 3, DT.Columns.Count - 3], mySheet.Cells[i + 3, DT.Columns.Count - 3]).get_Characters(a.Length + 1, b.Length).Font.Subscript =
true;
//
控制输出样式为上标
mySheet.get_Range(mySheet.Cells[i + 3, DT.Columns.Count - 3], mySheet.Cells[i + 3, DT.Columns.Count - 3]).get_Characters(a.Length + b.Length + 1, c.Length).Font.Superscript =
true;
C、
单元格水平垂直对齐方式;
//
单元格水平,垂直居中
r.HorizontalAlignment = Excel.
XlHAlign.xlHAlignCenter;
r.VerticalAlignment = Excel.
XlVAlign.xlVAlignCenter;
上面代码中,枚举XLHAlign的值还有:
//
右对齐
xlHAlignRight,
//
左对齐
.
xlHAlignLeft,
//
两端对齐.
xlHAlignJustify,
//
分散对齐(缩进)
xlHAlignDistributed,
//
居中对齐
xlHAlignCenter,
//
依照数据类型对齐,常规
xlHAlignGeneral,
//
填充
xlHAlignFill,
//
跨列对齐.
xlHAlignCenterAcrossSelection = 7,
枚举XLVAlign的值还有:
//
靠上对齐
xlVAlignTop,
//
两端对齐.
xlVAlignJustify = -4130,
//
分散对齐.
xlVAlignDistributed,
//
居中对齐.
xlVAlignCenter,
//
靠下对齐.
xlVAlignBottom = -4107,
D、
单元格边框设置;
//
设置边框
Excel.
Range r = mySheet.get_Range(mySheet.Cells[1, 1], mySheet.Cells[DT.Rows.Count + 2, DT.Columns.Count - 3]);
r.Borders.LineStyle = Excel.
XlLineStyle.xlContinuous;
枚举XlLineStyle中还有下面线形:
//
没边框线
xlLineStyleNone,
//
双线.
xlDouble,
//
点状线.
xlDot,
//
虚线.
xlDash,
//
连续线.
xlContinuous,
//
点线交互型
xlDashDot,
//
两点一线型
xlDashDotDot,
//
斜线.
xlSlantDashDot,
E、
单元格合并
用get_Range方法获取要合并的单元格,再设置MergeCells属性的值进行合并。
//
合并单元格
myExcel.get_Range(myExcel.Cells[1, 1], myExcel.Cells[1,4]).MergeCells =
true;
F、
字体设置
先用get_Range方法选中要设置字体的某个单元格或者或者直接用get_Characters方法直接选中要设置的字符进行设置;
//
加粗字体
myExcel.get_Range(myExcel.Cells[1, 1], myExcel.Cells[1, 1]).Font.Bold =
true;
//
设置字体大小
myExcel.get_Range(myExcel.Cells[1,1],myExcel.Cells[1,1]).Font.Size = 16;
//
设置字体的颜色
myExcel.get_Range(myExcel.Cells[1, 1], myExcel.Cells[1, 1]).Font.ColorIndex = 3;
//
设置字体
myExcel.get_Range(myExcel.Cells[1, 1], myExcel.Cells[1, 1]).Font.Name =
"
隶书"
;
//
设置成斜体
myExcel.get_Range(myExcel.Cells[1, 1], myExcel.Cells[1, 1]).Font.Italic =
true;
//
设置下划线
myExcel.get_Range(myExcel.Cells[1, 1], myExcel.Cells[1, 1]).Font.Underline =
true;
G、
冻结行列
用get_Range方法获取单元格,再设置其Freezepanes属性为true,就把该单元格右上方的行和列都冻结了,取消冻结将其值设为false即可。
//
冻结行列
myExcel.get_Range(myExcel.Cells[3,1],myExcel.Cells[3,1]).Activate();
myExcel.ActiveWindow.FreezePanes =
true;
H、
公式输入栏的隐藏
//
设置是否显示Excel公式输入栏,默认为true
myExcel.DisplayFormulaBar =
false;
I、
列标题与行标题的隐藏
//
设置是否显示行和列的标题,默认为true
myExcel.ActiveWindow.DisplayHeadings =
false;
J、
网格的隐藏
//
设置是否显示网格,默认为true
myExcel.ActiveWindow.DisplayGridlines =
false;
K、
水平、垂直滚动条的隐藏
//
设置是否显示水平滚动条
myExcel.ActiveWindow.DisplayHorizontalScrollBar =
false;
//
设置是否显示垂直滚动条
myExcel.ActiveWindow.DisplayVerticalScrollBar =
false;
L、
页的隐藏
Sheet
//
设置是否显示Sheet页
myExcel.ActiveWindow.DisplayWorkbookTabs =
false;
经过格式设置以后,展示在页面上的效果如下图:
3、
向Excel中填充数据,并保存为临时文件
Excel.
Application myExcel =
new
Excel.
Application
();
//
打开模板文件
myExcel.Application.Workbooks.Open(mode.FullName, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing);
//
选中有数据的Cells
Excel.
Workbook myBook = myExcel.Workbooks[1];
Excel.
Worksheet mySheet = (Excel.
Worksheet
)myBook.Worksheets[1];
Excel.
Range r = mySheet.get_Range(mySheet.Cells[1, 1], mySheet.Cells[DT.Rows.Count + 2, DT.Columns.Count - 3]);
r.Select();
//
不单独显示Excel,最后在IE中显示
myExcel.Visible =
false;
//
第一行为报表的标题
myExcel.Cells[1, 1] =
"
用模板导出的报表"
;
//
逐行写入数据,数组中第一行为报表的列标题
for (
int
i = 0; i < DT.Columns.Count - 3; i++)
myExcel.Cells[2, 1 + i] = DT.Columns[i].Caption; ;
//
在当前目录下指定一个临时文件
string FileName = Server.MapPath(
"~"
) +
"""Temp.xls"
;
if (
File
.Exists(FileName))
File.Delete(FileName);
myExcel.Save(FileName);
mySheet.Cells.Clear() ;
//
设置不出现保存提示框
myBook.Saved =
true;
myExcel.Application.Workbooks.Close();
我走啊走 走啊走......