Previous topicNext topic
Help > 开发指南 > SanMuGrid平台编程 > 主要对象 > DataTableHelp > 格式转换 >
ToExcel
名称 说明
FromExcel 将Excel文件导出至DataTable(第一行作为表头)
FromExcel32 将Excel文件导出至DataTable(第一行作为表头)此方法只有在32位操作系统中可以使用。
ToExcel 将数据导出至Excel文件
ToExcel32 将数据导出至Excel文件。此方法只有在32位操作系统中可以使用。

这几个扩展方法主要是为了实现将DataTableHelp转换成Excel或者从Excel加载DataTableHelp数据。下面我们就直接以示例来说明如何使用。

语法:

ToExcel(excelFilePath,overWriteFile,listOfOutColName)

ToExcel32(excelFilePath,overWriteFile,listOfOutColName)

参数说明

名称 说明
excelFilePath 必填项,字符串类型,导出Excel文件保存路径。
overWriteFile 可选项,逻辑类型,是否覆盖之前存在的文件。默认值为False。
listOfOutColName 可选项,字符集合类型,要导出的列名称集合。如果想导出指定的部分列,可以将列名做成一个集合然后传递。默认为空,则会导出所有字段。

语法:

FromExcel(excelFilePath,tableName,includeHeader)

FromExcel32(excelFilePath,tableName)

名称 说明
excelFilePath 必填项,字符串类型,导入Excel文件路径。
tableName 可选项,字符串类型,Excel表名,如果表名错误,默认为第一个表名。默认值为空字符串,会直接取第一个表名。
includeHeader 可选项,逻辑类型,Excel数据是否包含表标题。如果设置为True,则认为第一行为标题行,如果设置为False,则认为Excel表中所有数据都为数据,会从第一行开始读取数据。默认为True。

Vb.Net
Dim db As Database=Proj.SysDataFactory("UserDB")
Dim strSQL As String="select * from 订单信息 Where 产品='产品01' and 客户='客户02'"
Dim dt As DataTableHelp=db.ExecuteDataTableHelp(strSQL)
Proj.MsgDebug.Add("从数据库获取的数据共{0}条。",dt.DataRows.Count)
'用通用的方式直接导出到Excel
dt.ToExcel("D:\test.xls",True,Nothing)

Dim lstCol As New List(Of String)
lstCol.Add("产品")
lstCol.Add("客户")
lstCol.Add("业务员")
lstCol.Add("单价")
lstCol.Add("数量")
lstCol.Add("金额")
lstCol.Add("日期")
'用通用的方式导出指定的部分列到Excel
dt.ToExcel("D:\testSomeCols.xls",True,lstCol)

'以下的方法仅适合32位操作系统
If Environment.Is64BitProcess=False Then
    '用安装的Excel直接导出到Excel
    dt.ToExcel32("D:\test32.xls",True,Nothing)
    '用安装的Excel导出指定的部分列到Excel
    dt.ToExcel32("D:\testSomeCols32.xls",True,lstCol)
End If


Dim dtNew As New DataTableHelp '=db.ExecuteDataTableHelp(strSQL,False,False)
dtNew.FromExcel("D:\test.xls","",True)
Proj.MsgDebug.Add("从Excel获取的数据共{0}条。",dtNew.DataRows.Count)

'以下的方法仅适合32位操作系统
If Environment.Is64BitProcess=False Then
    '防止之前的数据对结果产生影响,先清空之间的数据
    dtNew.DataRows.Clear()
    dtNew.FromExcel32("D:\test.xls","")
    Proj.MsgDebug.Add("从Excel获取的数据共{0}条。",dtNew.DataRows.Count)
End If

C#
Database db = Proj.SysDataFactory["UserDB"];
string strSQL = "select * from 订单信息 Where 产品='产品01' and 客户='客户02'";
DataTableHelp dt = db.ExecuteDataTableHelp(strSQL);
Proj.MsgDebug.Add("从数据库获取的数据共{0}条。", dt.DataRows.Count);
// 用通用的方式直接导出到Excel
dt.ToExcel(@"D:\test.xls", true, null/* TODO Change to default(_) if this is not a reference type */);

List<string> lstCol = new List<string>();
lstCol.Add("产品");
lstCol.Add("客户");
lstCol.Add("业务员");
lstCol.Add("单价");
lstCol.Add("数量");
lstCol.Add("金额");
lstCol.Add("日期");
// 用通用的方式导出指定的部分列到Excel
dt.ToExcel(@"D:\testSomeCols.xls", true, lstCol);

// 以下的方法仅适合32位操作系统
if (Environment.Is64BitProcess == false)
{
    // 用安装的Excel直接导出到Excel
    dt.ToExcel32(@"D:\test32.xls", true, null/* TODO Change to default(_) if this is not a reference type */);
    // 用安装的Excel导出指定的部分列到Excel
    dt.ToExcel32(@"D:\testSomeCols32.xls", true, lstCol);
}


DataTableHelp dtNew = new DataTableHelp(); // =db.ExecuteDataTableHelp(strSQL,False,False)
dtNew.FromExcel(@"D:\test.xls", "", true);
Proj.MsgDebug.Add("从Excel获取的数据共{0}条。", dtNew.DataRows.Count);

// 以下的方法仅适合32位操作系统
if (Environment.Is64BitProcess == false)
{
    // 防止之前的数据对结果产生影响,先清空之间的数据
    dtNew.DataRows.Clear();
    dtNew.FromExcel32(@"D:\test.xls", "");
    Proj.MsgDebug.Add("从Excel获取的数据共{0}条。", dtNew.DataRows.Count);
}