通过OleDbDataAdapter将excel数据导入到数据表中将方括号replace为圆括号

我使用这段代码来导入Excel(.xls)数据,但列中的所有方括号都被replace为圆。 例如列dm [kg]:

import前:dm [kg]

import后:dm(kg)

我会感谢任何帮助。

public static DataTable ImportWorkSheet(string excelFile, bool hasHeaderRow, bool allText, string tabName) { string connectionString = GetExcelConnectionString(excelFile, hasHeaderRow, allText); using (OleDbConnection connection = new OleDbConnection(connectionString)) { connection.Open(); if (Path.GetExtension(excelFile).Equals(".csv", StringComparison.OrdinalIgnoreCase)) tabName = Path.GetFileName(excelFile); else tabName = EnsureTableName(connection, tabName); string selectString = string.Format("SELECT * FROM [{0}]", tabName); DataTable table = new DataTable(tabName); using (OleDbDataAdapter adapter = new OleDbDataAdapter(selectString, connection)) { adapter.Fill(table); } return table; } } private static string EnsureTableName(DbConnection connection, string tabName) { if (string.IsNullOrEmpty(tabName)) { //use GetSchema to find the first sheet == table name DataTable worksheets = connection.GetSchema("Tables"); foreach (DataRow row in worksheets.Rows) { //this can also return Excel named ranges tabName = (string)row["TABLE_NAME"]; //so look for sheets (excel puts $ after the name and may single-quote the name) if (tabName.EndsWith("$") || tabName.EndsWith("$'")) return tabName; //otherwise we'll fall through with whatever we find } } //they supplied a worksheet name; ensure always has $ suffix else if (!tabName.EndsWith("$")) tabName += "$"; return tabName; } private static string GetExcelConnectionString(string filePath, bool hasHeaderRow, bool allText) { //http://www.connectionstrings.com/?carrier=excel string connectionString; string ext = Path.GetExtension(filePath); if (ext.Equals(".csv", StringComparison.OrdinalIgnoreCase)) { //uses directory path, not file path //for format definition, write a schema.ini in the folder: http://msdn.microsoft.com/en-us/library/ms709353.aspx connectionString = string.Format( @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0}; Extended Properties=""text;FMT=Delimited;{1}{2}""", filePath.Remove(filePath.IndexOf(Path.GetFileName(filePath))), hasHeaderRow ? "HDR=YES;" : "HDR=NO;", allText ? "IMEX=1" : string.Empty); } else if (ext.Equals(".xlsx", StringComparison.OrdinalIgnoreCase)) { //if this fails, install 2007 providers from http://www.microsoft.com/downloads/details.aspx?FamilyID=7554F536-8C28-4598-9B72-EF94E038C891&displaylang=en connectionString = string.Format( @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0}; Extended Properties=""Excel 12.0 Xml;{1}{2}""", filePath, hasHeaderRow ? "HDR=YES;" : "HDR=NO;", allText ? "IMEX=1" : string.Empty); } else //assume normal excel { connectionString = string.Format( @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0}; Extended Properties=""Excel 8.0;{1}{2}""", filePath, hasHeaderRow ? "HDR=YES;" : "HDR=NO;", allText ? "IMEX=1" : string.Empty); } return connectionString; } 

Interesting Posts