第一步引用命名空间
关于这个命名空间晚上的资料多大直接都写的是
using Excel
private void doExport(DataTable dt, string strSheetName)
{
Excel.Application excel = new Excel.Application() //Execl的 *** 作类
//读取保存目标的对象
Excel.Workbook bookDest = (Excel.WorkbookClass)excel.Workbooks.Add(Missing.Value)
Excel.Worksheet sheetDest = bookDest.Worksheets.Add(Missing.Value, Missing.Value, Missing.Value, Missing.Value) as Excel.Worksheet//给工作薄添加一个Sheet
sheetDest.Name = strSheetName//自己定义名字O(∩_∩)O哈哈~
int rowIndex = 1
int colIndex = 0
excel.Application.Workbooks.Add(true)//这句不写不知道会不会报错
foreach (DataColumn col in dt.Columns)
{
colIndex++
sheetDest.Cells[1, colIndex] = col.ColumnName//Execl中的第一列,把DataTable的列名先导进去
}
//导入数据行
foreach (DataRow row in dt.Rows)
{
rowIndex++
colIndex = 0
foreach (DataColumn col in dt.Columns)
{
colIndex++
sheetDest.Cells[rowIndex, colIndex] = row[col.ColumnName].ToString()
}
}
bookDest.Saved = true
bookDest.SaveCopyAs("要保存的文件路径+文件名.xls")//方式一
excel.Quit()
excel = null
GC.Collect()//垃圾回收
}
这是过去曾参考应用过的方法摘一段给你应急:一、首先处理好数据库连接字串
Excel2000-2003:
string
connStr
=
"Microsoft.Jet.Oledb.4.0Data
Source='c:\test.xls'Extended
Properties=\"Excel
8.0HDR=YesIMEX=1\""
Excel2007:
string
connStr
=
"Microsoft.Ace.OleDb.12.0Data
Source='c:\test.xlsx'Extended
Properties=\"Excel
12.0HDR=YesIMEX=1\""
其中:
HDR
(
Header
Row
)设置:
若指定值为Yes,代表
Excel
档中的工作表第一行是栏位名称
若指定值为
No,代表
Excel
档中的工作表第一行就是资料了,没有栏位名称
IMEX
(
IMport
EXport
mode
)设置
当
IMEX=0
时为"汇出模式",这个模式开启的
Excel
档案只能用来做"写入"用途。
当
IMEX=1
时为"汇入模式",这个模式开启的
Excel
档案只能用来做"读取"用途。
当
IMEX=2
时为"连结模式",这个模式开启的
Excel
档案可同时支援"读取"与"写入"用途。
二、进行表格数据的查询、插入和更新:
(假设Excel文件text.xls中存在Excel表单tree,有2列分别为id,name)
1、查询
String
sql
=
"select
id,
name
from
[tree$]"
或
String
sql
=
"select
id,
name
from
`tree$`
2、插入
String
sql
=
"insert
into
[tree$]
(id,name)
values(1,'testname')
3、更新
String
sql
=
"update
[tree$]
set
name='name2'
where
id=1
4、数据的删除
在OleDB的连接方式下,不可以使用delete
from
语句来删除某表中的某一条记录。确切的说,在此模式下,将无法删除表中的记录。即使用update语句将所有的字段写成null,打开excel文件后依然会发现保留了该空行,而且在使用oleDB连接进行查询时,依然会查询到这条空数据。
由于目前,C#和VB.net都不支持OLE技术(参见微软支持中心Info:304562),,所以只有使用WebBrowser控件来完成此功能。(以下方法参见微软支持中心Howto:304662)1、右击工具箱,选择自定义工具箱,添加COM组件,选择“Microsoft Web 浏览器”(对应文件是\winnt\system32\shdocvw.dll),确定。在工具箱中将会出现文本为Explorer的WebBroser控件图标。
2、在Form1中添加WebBrowser控件。(对象名却省是axWebBrowser1)
3、假定要打开的excel文件是: c:\a.xls。
string strFileName = @"c:\a.xls"
Object refmissing = System.Reflection.Missing.Value
axWebBrowser1.Navigate(strFileName, ref refmissing , ref refmissing , ref refmissing , ref refmissing)
值得注意的是用WebBrowser控件不支持菜单合并,也就是说无法把Excel表的菜单带入到我们的程序中。这是相对于OLE实现方法的一大缺点。幸好提供了可以把工具栏添加进来的功能,通过工具栏可以进行许多Excel专有的 *** 作。
//下面这句可以将excel本身的工具调添加进来
axWebBrowser1.ExecWB(SHDocVw.OLECMDID.OLECMDID_HIDETOOLBARS, SHDocVw.OLECMDEXECOPT.OLECMDEXECOPT_DONTPROMPTUSER,ref refmissing , ref refmissing)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)