tijian_jichuang/Code/xiaoy.Excel/ExcelFile.cs

536 lines
18 KiB
C#
Raw Normal View History

2025-02-20 11:54:48 +08:00
// ================================================================================
// File: ExcelFile.cs
// Desc: Excel<65><6C><EFBFBD><EFBFBD><EFBFBD>
// <20><>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Excel<65><6C><EFBFBD>ݵĵ<DDB5><C4B5><EFBFBD><EBB5BC><EFBFBD><EFBFBD>
//
// Called by:
//
// Auth: <20><><EFBFBD><EFBFBD>
// Date: 2010<31><30>8<EFBFBD><38>20<32><30>
// ================================================================================
// Change History
// ================================================================================
// Date: Author: Description:
// -------- -------- -------------------
//
// ================================================================================
// Copyright (C) 2010-2012
// ================================================================================
using System;
using System.Data;
using System.Data.OleDb;
using System.IO;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.Text;
namespace xiaoy.Excel
{
/// <summary>
/// Excel<65>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/// </summary>
public class ExcelFile
{
#region ˽<EFBFBD>б<EFBFBD><EFBFBD><EFBFBD>
//excel<65><EFBFBD><E6B1BE>Ĭ<EFBFBD><C4AC>Ϊ98-2003<30><33>Excel<65><6C>
string m_version=string.Empty;
//<2F><><EFBFBD>Ӵ<EFBFBD><D3B4>е<EFBFBD>HDR<44><52><EFBFBD>ԣ<EFBFBD><D4A3><EFBFBD><EFBFBD>ڱ<EFBFBD>ʶ<EFBFBD><CAB6>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĭ<EFBFBD><C4AC><EFBFBD>ǡ<EFBFBD>
string m_hdr = string.Empty;
//excel<65>ļ<EFBFBD>·<EFBFBD><C2B7>
string m_filePath = string.Empty;
DataTable m_dataSource = null;
//<2F><><EFBFBD>澲̬<E6BEB2><CCAC><EFBFBD><EFBFBD>
static NameValueCollection m_excelVersion = null;
static NameValueCollection m_excelTypeMap = null;
static int m_maxSheelSize = 0;
#endregion
#region <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/// <summary>
/// <20><>̬<EFBFBD><CCAC><EFBFBD><EFBFBD><ECBAAF>
/// </summary>
static ExcelFile()
{
m_excelVersion = AppConfig.GetConfig(AppConfigKey.ExcelVersionKey);
m_excelTypeMap = AppConfig.GetConfig(AppConfigKey.ExcelTypeKey);
m_maxSheelSize = int.Parse(AppConfig.AppSettings[AppConfigKey.MaxSheelSize]);
////<2F><>m_excelVersionֵ<6E>е<EFBFBD>'<27><EFBFBD><E6BBBB>"
//foreach (string key in m_excelVersion.Keys)
//{
// m_excelVersion[key] = m_excelVersion[key].Replace("'","\"");
//}
}
/// <summary>
/// <20>޲ι<DEB2><CEB9><EFBFBD><ECBAAF>
/// </summary>
public ExcelFile():this(null)
{ }
/// <summary>
/// <20><><EFBFBD><EFBFBD><ECBAAF>
/// </summary>
/// <param name="excelVersion">Excel<65>ĵ<EFBFBD><C4B5><EFBFBD><E6B1BE>ʹ<EFBFBD><CAB9>ExcelVersion<6F><6E><EFBFBD>͡<EFBFBD></param>
public ExcelFile(string excelVersion)
{
//<2F><><EFBFBD><EFBFBD>Ĭ<EFBFBD><C4AC>ֵ
m_version = ExcelVersion.Excel8;
m_hdr = HDRType.Yes;
//<2F><><EFBFBD><EFBFBD>Ĭ<EFBFBD><C4AC>ֵ
if (!string.IsNullOrEmpty(excelVersion))
{
m_version = excelVersion;
}
}
#endregion
#region <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/// <summary>
/// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Excel<65>ĵ<EFBFBD><C4B5><EFBFBD>š<EFBFBD>
/// ΪExcelVersion<6F><6E><EFBFBD>͵<EFBFBD>ֵ<EFBFBD><D6B5>
/// </summary>
public string Version
{
get
{
return m_version;
}
set
{
m_version = value;
}
}
/// <summary>
/// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>HDR<44><52><EFBFBD>͡<EFBFBD>
/// </summary>
public string HDR
{
get
{
return HDR;
}
set
{
HDR = value;
}
}
/// <summary>
/// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Excel<65>ļ<EFBFBD>·<EFBFBD><C2B7><EFBFBD><EFBFBD>
/// </summary>
public string FilePath
{
get
{
return m_filePath;
}
set
{
m_filePath = value;
}
}
/// <summary>
/// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4>
/// </summary>
public DataTable DataSource
{
get
{
return m_dataSource;
}
set
{
m_dataSource = value;
}
}
#endregion
#region <EFBFBD><EFBFBD><EFBFBD>÷<EFBFBD><EFBFBD><EFBFBD>
/// <summary>
/// <20><><EFBFBD><EFBFBD>DataSource<63><65>Excel<65><6C>
/// </summary>
public void Import()
{
SetData(DataSource, FilePath, Version, HDR);
}
/// <summary>
/// <20><>ȡExcel<65>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD>
/// </summary>
/// <param name="bMerge"><3E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7>ϲ<EFBFBD></param>
/// <returns>DataTable<6C><65><EFBFBD><EFBFBD></returns>
public DataTable[] GetData(bool bMerge)
{
return GetData(FilePath, Version, HDR, bMerge);
}
#endregion
#region <EFBFBD><EFBFBD><EFBFBD>þ<EFBFBD>̬<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/// <summary>
/// д<><D0B4><EFBFBD>ݵ<EFBFBD>Excel<65><6C>
/// </summary>
/// <param name="dtSource"><3E><><EFBFBD><EFBFBD>Դ</param>
/// <param name="filePath">Excel<65><6C><EFBFBD><EFBFBD>·<EFBFBD><C2B7></param>
/// <param name="excelVersion">excel<65><EFBFBD><E6B1BE>ΪExcelVersion<6F><6E><EFBFBD><EFBFBD></param>
/// <param name="pHDR"><3E><>һ<EFBFBD><D2BB><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD>⣬ΪHDRType<70><65><EFBFBD><EFBFBD></param>
public static void SetData(DataTable dtSource, string filePath, string excelVersion, string pHDR)
{
//<2F><><EFBFBD><EFBFBD>ԴΪ<D4B4><CEAA>
if (dtSource == null)
{
throw new Exception("<22><><EFBFBD><EFBFBD><EFBFBD>ݿɵ<DDBF>");
}
//<2F><><EFBFBD><EFBFBD>·<EFBFBD><C2B7>Ϊ<EFBFBD><CEAA>
if(string.IsNullOrEmpty(filePath))
{
throw new Exception(<><CEB4><EFBFBD><EFBFBD>Excel<65><6C><EFBFBD><EFBFBD>·<EFBFBD><C2B7>");
}
//ɾ<><C9BE><EFBFBD>ļ<EFBFBD>
if (File.Exists(filePath))
{
File.Delete(filePath);
}
string connectionString = string.Format(m_excelVersion[excelVersion],
filePath,pHDR);
// <20><><EFBFBD><EFBFBD>Excel
using(OleDbConnection Connection = new OleDbConnection(connectionString))
{
Connection.Open();
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
using(OleDbCommand command = new OleDbCommand())
{
command.Connection = Connection;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ʽ<EFBFBD>磺Name VarChar<61><72>CreateDate Date
string colList = CreateExcelColums(dtSource);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>SQL<51><4C><EFBFBD><EFBFBD>
//<2F><>ʽ<EFBFBD><CABD> "INSERT INTO TABLE [tablename](col1,col2,col3) VALUES(@col1,@col2,@col3)";
StringBuilder sbColumNames = new StringBuilder();
StringBuilder sbColumValues = new StringBuilder();
int c = 0;
foreach (DataColumn dc in dtSource.Columns)
{
sbColumNames.AppendFormat(",[{0}]", dc.ColumnName);
sbColumValues.AppendFormat(",@{0}", "c_"+c.ToString());
c++;
}
//ȥ<><C8A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ķ<EFBFBD><C4B6><EFBFBD>
sbColumNames.Remove(0, 1);
sbColumValues.Remove(0, 1);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ÿҳ<C3BF><D2B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD>ҳ
int totalRows = dtSource.Rows.Count;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int pageIndex = 0;
//<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> do...whileѭ<65><D1AD><EFBFBD><EFBFBD>Ϊ<EFBFBD>˴<EFBFBD><CBB4><EFBFBD><EFBFBD><EFBFBD>ҳ<EFBFBD>߼<EFBFBD>
do
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֲ<EFBFBD><D6B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int insertRows = m_maxSheelSize - 1;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>дﵽ<D0B4><EFB5BD><EFBFBD><EFBFBD>
if (totalRows < insertRows)
{
insertRows = totalRows;
}
string tableName = dtSource.TableName + pageIndex;
if (pageIndex == 0)
{
tableName = "Sheet1";
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
StringBuilder sbCom = new StringBuilder();
sbCom.Append("CREATE TABLE [");
sbCom.Append(tableName);
sbCom.Append("](");
sbCom.Append(colList);
sbCom.Append(")");
command.CommandText = sbCom.ToString();
try
{
command.ExecuteNonQuery();
}
catch(Exception ex)
{
//<2F><><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>Create<74><65><EFBFBD><EFBFBD><E4B4B4>ʧ<EFBFBD><CAA7><EFBFBD><EFBFBD>ֱ<EFBFBD>Ӵ<EFBFBD><D3B4><EFBFBD>Excel<65>ļ<EFBFBD>
CreateExcelFile(filePath, excelVersion, command.CommandText);
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
sbCom = new StringBuilder();
sbCom.AppendFormat("INSERT INTO [{0}]({1}) VALUES({2})",
tableName, sbColumNames.ToString(), sbColumValues.ToString());
int startIndex = pageIndex * (m_maxSheelSize-1);
int endIndex = pageIndex * (m_maxSheelSize-1) + insertRows;
for (int i = startIndex; i < endIndex; i++)
{
DataRow drData = dtSource.Rows[i];
OleDbParameterCollection dbParam = command.Parameters;
dbParam.Clear();
c = 0;
foreach (DataColumn dc in dtSource.Columns)
{
dbParam.Add(new OleDbParameter("@" + "c_"+c.ToString(), GetOleDbTypeByDataColumn(dc)));
dbParam["@" + "c_" + c.ToString()].Value = drData[dc.ColumnName];
c++;
}
command.CommandText = sbCom.ToString();
command.ExecuteNonQuery();
}
//<2F><><EFBFBD><EFBFBD>ʣ<EFBFBD><CAA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
totalRows = totalRows - insertRows;
pageIndex++;
}while(totalRows > 0);
}//end of using OleDbCommand
}// end of using OleDbConnection
}
/// <summary>
/// <20><>Excel<65><6C><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/// </summary>
/// <param name="filePath">excel<65>ĵ<EFBFBD>·<EFBFBD><C2B7></param>
/// <param name="excelVersion"><3E>ĵ<EFBFBD><C4B5>汾</param>
/// <param name="pHDR"><3E><>һ<EFBFBD><D2BB><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD></param>
/// <param name="bMerge">
/// <20><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>ҳ<EFBFBD><D2B3><EFBFBD>Ƿ<EFBFBD><C7B7>ϲ<EFBFBD><CFB2><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3>ϲ<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>뱣֤<EBB1A3><D6A4>ҳ<EFBFBD>ı<EFBFBD><C4B1>һ<E1B9B9><D2BB>
/// </param>
/// <returns>DataTable<6C><65></returns>
public static DataTable[] GetData(string filePath, string excelVersion, string pHDR,bool bMerge)
{
List<DataTable> dtResult = new List<DataTable>();
string connectionString = string.Format(m_excelVersion[excelVersion],
filePath,pHDR);
using (OleDbConnection con = new OleDbConnection(connectionString))
{
con.Open();
string[] sheels = GetExcelWorkSheets(filePath, excelVersion);
foreach (string sheelName in sheels)
{
try
{
DataTable dtExcel = new DataTable();
OleDbDataAdapter adapter = new OleDbDataAdapter("Select * from [" + sheelName + "$]", con);
adapter.FillSchema(dtExcel, SchemaType.Mapped);
adapter.Fill(dtExcel);
dtExcel.TableName = sheelName;
dtResult.Add(dtExcel);
}
catch
{
//<2F>ݴ<EFBFBD><DDB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>ռ<EFBFBD><D5BC>ɡ<EFBFBD>
}
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD>ϲ<EFBFBD><CFB2><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD>ϲ<EFBFBD><CFB2><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD>ű<EFBFBD>
if (bMerge)
{
for (int i = 1; i < dtResult.Count; i++)
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>ղźϲ<C5BA>
if (dtResult[0].Columns.Count==dtResult[i].Columns.Count &&
dtResult[i].Rows.Count > 0)
{
dtResult[0].Load(dtResult[i].CreateDataReader());
}
}
}
}
return dtResult.ToArray();
}
#endregion
#region ˽<EFBFBD>о<EFBFBD>̬<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/// <summary>
/// <20><><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĺ<EFBFBD><C4B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>WorkSheet<65><74><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>Թ<EFBFBD><D4B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ArrayList<73><74><EFBFBD><EFBFBD><EFBFBD>򷵻ؿ<F2B7B5BB>
/// </summary>
/// <param name="filePath">Ҫ<><D2AA>ȡ<EFBFBD><C8A1>Excel</param>
/// <param name="excelVersion"><3E>ĵ<EFBFBD><C4B5>汾</param>
/// <returns><3E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>WorkSheet<65><74><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>Թ<EFBFBD><D4B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>string[]<5D><><EFBFBD><EFBFBD><EFBFBD>򷵻ؿ<F2B7B5BB></returns>
private static string[] GetExcelWorkSheets(string filePath, string excelVersion)
{
List<string> alTables = new List<string>();
string connectionString = string.Format(m_excelVersion[excelVersion],
filePath, "Yes");
using (OleDbConnection connection = new OleDbConnection(connectionString))
{
connection.Open();
DataTable dt = new DataTable();
dt = connection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
if (dt == null)
{
throw new Exception("<22>޷<EFBFBD><DEB7><EFBFBD>ȡָ<C8A1><D6B8>Excel<65>ļܹ<C4BC><DCB9><EFBFBD>");
}
foreach (DataRow dr in dt.Rows)
{
string tempName = dr["Table_Name"].ToString();
int iDolarIndex = tempName.IndexOf('$');
if (iDolarIndex > 0)
{
tempName = tempName.Substring(0, iDolarIndex);
}
//<2F><><EFBFBD><EFBFBD>Excel2003<30><33>ijЩ<C4B3><D0A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD>ֵı<D6B5><C4B1>޷<EFBFBD><DEB7><EFBFBD>ȷʶ<C8B7><CAB6><EFBFBD><EFBFBD>BUG<55><47>
if (tempName[0] == '\'')
{
if (tempName[tempName.Length - 1] == '\'')
{
tempName = tempName.Substring(1, tempName.Length - 2);
}
else
{
tempName = tempName.Substring(1, tempName.Length - 1);
}
}
if (!alTables.Contains(tempName))
{
alTables.Add(tempName);
}
}
}
if (alTables.Count == 0)
{
return null;
}
return alTables.ToArray();
}
/// <summary>
/// <20><><EFBFBD><EFBFBD>Excel<65>ļ<EFBFBD>
/// </summary>
/// <param name="filePath"><3E>ļ<EFBFBD>·<EFBFBD><C2B7></param>
/// <param name="excelVersion">excel<65>汾</param>
/// <param name="excelVersion"><3E><><EFBFBD><EFBFBD>sheet<65>Ľű<C4BD></param>
private static void CreateExcelFile(string filePath, string excelVersion,string createSql)
{
string outputDir = Path.GetDirectoryName(filePath);
//<2F><><EFBFBD><EFBFBD>·<EFBFBD><C2B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>򴴽<EFBFBD>
if (!Directory.Exists(outputDir))
{
Directory.CreateDirectory(outputDir);
}
//<2F><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>򴴽<EFBFBD><F2B4B4BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д
using (FileStream fs = new FileStream(filePath, FileMode.Create, FileAccess.Write))
{
if (excelVersion == ExcelVersion.Excel12)
{
//<2F><><EFBFBD><EFBFBD>2007Excel
fs.Write(Properties.Resources._2007, 0, Properties.Resources._2007.Length);
}
else
{
//<2F><><EFBFBD><EFBFBD>Ĭ<EFBFBD>ϴ<EFBFBD><CFB4><EFBFBD>2003Excel
fs.Write(Properties.Resources._2003, 0, Properties.Resources._2003.Length);
}
//<2F><><EFBFBD><EFBFBD>Sheet<65><74><EFBFBD><EFBFBD>
string connectionString = string.Format(m_excelVersion[excelVersion],
filePath, "Yes");
using (OleDbConnection connection = new OleDbConnection(connectionString))
{
connection.Open();
using (OleDbCommand command = new OleDbCommand())
{
command.CommandText = createSql;
command.ExecuteNonQuery();
}
}
}
}
/// <summary>
/// <20><><EFBFBD><EFBFBD>Excel<65>нű<D0BD><C5B1><EFBFBD>
/// <20><>ʽ<EFBFBD>磺Name VarChar<61><72>CreateDate Date
/// </summary>
/// <param name="dtSource"></param>
/// <returns></returns>
private static string CreateExcelColums(DataTable dtSource)
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (dtSource.Columns.Count == 0)
{
throw new Exception("<22><><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>Ϊ0");
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
StringBuilder sbColums = new StringBuilder();
foreach (DataColumn dc in dtSource.Columns)
{
sbColums.AppendFormat(",[{0}] {1}", dc.ColumnName, GetExcelTypeByDataColumn(dc));
}
//ȥ<><C8A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ķ<EFBFBD><C4B6><EFBFBD>
sbColums.Remove(0, 1);
return sbColums.ToString();
}
/// <summary>
/// <20><>ȡDataColumn<6D><6E>Ӧ<EFBFBD><D3A6>Excel<65><6C><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/// </summary>
/// <param name="dc">Դ<><D4B4><EFBFBD>ݵ<EFBFBD><DDB5><EFBFBD></param>
/// <returns>Excel<65><6C><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></returns>
private static string GetExcelTypeByDataColumn(DataColumn dc)
{
foreach (string key in m_excelTypeMap.Keys)
{
if (key == dc.DataType.Name)
{
return m_excelTypeMap[dc.DataType.Name];
}
}
return m_excelTypeMap[AppConfigKey.DefaultTypeKey];
}
/// <summary>
/// <20><>ȡDataColumn<6D><6E>Ӧ<EFBFBD><D3A6>Excel<65><6C><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/// </summary>
/// <param name="dc">Դ<><D4B4><EFBFBD>ݵ<EFBFBD><DDB5><EFBFBD></param>
/// <returns>Excel<65><6C><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></returns>
private static OleDbType GetOleDbTypeByDataColumn(DataColumn dc)
{
switch (dc.DataType.Name)
{
case "String"://<2F>ַ<EFBFBD><D6B7><EFBFBD>
return OleDbType.VarChar;
case "Double"://<2F><><EFBFBD><EFBFBD>
return OleDbType.Double;
case "Decimal"://<2F><><EFBFBD><EFBFBD>
return OleDbType.Decimal;
case "DateTime"://ʱ<><CAB1>
return OleDbType.Date;
default:
return OleDbType.VarChar;
}
}
#endregion
}
}