[C#] [C#] //CSVファイルのあるフォルダ string csvDir = @"C:\"; //CSVファイルの名前 string csvFileName = "test.csv"; //接続文字列 string conString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + csvDir + ";Extended Properties=\"text;HDR=No;FMT=Delimited\""; System.Data.OleDb.OleDbConnection con = new System.Data.OleDb.OleDbConnection(conString); string commText = "SELECT * FROM [" + csvFileName + "]"; System.Data.OleDb.OleDbDataAdapter da = new System.Data.OleDb.OleDbDataAdapter(commText, con); //DataTableに格納する DataTable dt = new DataTable(); da.Fill(dt); [C#] //CSVファイルのあるフォルダ string csvDir = @"C:\"; //CSVファイルの名前 string csvFileName = "test.csv"; //接続文字列 string conString = "Driver={Microsoft Text Driver (*.txt; *.csv)};Dbq=" + csvDir + ";Extensions=asc,csv,tab,txt;"; System.Data.Odbc.OdbcConnection con = new System.Data.Odbc.OdbcConnection(conString); string commText = "SELECT * FROM [" + csvFileName + "]"; System.Data.Odbc.OdbcDataAdapter da = new System.Data.Odbc.OdbcDataAdapter(commText, con); //DataTableに格納する DataTable dt = new DataTable(); da.Fill(dt); [C#] ///
/// CSVをArrayListに変換 /// ///
CSVの内容が入ったString ///
変換結果のArrayList public static System.Collections.ArrayList CsvToArrayList1(string csvText) { System.Collections.ArrayList csvRecords = new System.Collections.ArrayList(); //前後の改行を削除しておく csvText = csvText.Trim(new char[] {'\r', '\n'}); //一行取り出すための正規
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
現 System.Text.RegularExpressions.Regex regLine = new System.Text.RegularExpressions.Regex( "^.*(?:\\n|$)", System.Text.RegularExpressions.RegexOptions.Multiline); //1行のCSVから各フィールドを取得するための正規表現 System.Text.RegularExpressions.Regex regCsv = new System.Text.RegularExpressions.Regex( "\\s*(\"(?:[^\"]|\"\")*\"|[^,]*)\\s*,", System.Text.RegularExpressions.RegexOptions.None); System.Text.RegularExpressions.Match mLine = regLine.Match(csvText); while (mLine.Success) { //一行取り出す string line = mLine.Value; //改行記号が"で囲まれているか調べる while ((CountString(line, "\"") % 2) == 1) { mLine = mLine.NextMatch(); if (!mLine.Success) { throw new ApplicationException("不正なCSV"); } line += mLine.Value; } //行の最後の改行記号を削除 line = line.TrimEnd(new char[] {'\r', '\n'}); //最後に「,」をつける line += ","; //1つの行からフィールドを取り出す System.Collections.ArrayList csvFields = new System.Collections.ArrayList(); System.Text.RegularExpressions.Match m = regCsv.Match(line); while (m.Success) { string field = m.Groups[1].Value; //前後の空白を削除 field = field.Trim(); //"で囲まれている時 if (field.StartsWith("\"") && field.EndsWith("\"")) { //前後の"を取る field = field.Substring(1, field.Length - 2); //「""」を「"」にする field = field.Replace("\"\"", "\""); } csvFields.Add(field); m = m.NextMatch(); } csvFields.TrimToSize(); csvRecords.Add(csvFields); mLine = mLine.NextMatch(); } csvRecords.TrimToSize(); return csvRecords; } ///
/// 指定された文字列内にある文字列が幾つあるか数える /// ///
strFindが幾つあるか数える文字列 ///
数える文字列 ///
strInput内にstrFindが幾つあったか public static int CountString(string strInput, string strFind) { int foundCount = 0; int sPos = strInput.IndexOf(strFind); while (sPos > -1) { foundCount++; sPos = strInput.IndexOf(strFind, sPos + 1); } return foundCount; } [C#] ///
/// CSVをArrayListに変換 /// ///
CSVの内容が入ったString ///
変換結果のArrayList public static System.Collections.ArrayList CsvToArrayList2(string csvText) { //前後の改行を削除しておく csvText = csvText.Trim(new char[] {'\r', '\n'}); System.Collections.ArrayList csvRecords = new System.Collections.ArrayList(); System.Collections.ArrayList csvFields = new System.Collections.ArrayList(); int csvTextLength = csvText.Length; int startPos = 0, endPos = 0; string field = ""; while (true) { //空白を飛ばす while (startPos < csvTextLength && (csvText[startPos] == ' ' || csvText[startPos] == '\t')) { startPos++; } //データの最後の位置を取得 if (startPos < csvTextLength && csvText[startPos] == '"') { //"で囲まれているとき //最後の"を探す endPos = startPos; while (true) { endPos = csvText.IndexOf('"', endPos + 1); if (endPos < 0) { throw new ApplicationException("\"が不正"); } //"が2つ続かない時は終了 if (endPos + 1 == csvTextLength || csvText[endPos + 1] != '"') { break; } //"が2つ続く endPos++; } //一つのフィールドを取り出す field = csvText.Substring(startPos, endPos - startPos + 1); //""を"にする field = field.Substring(1, field.Length - 2).Replace("\"\"", "\""); endPos++; //空白を飛ばす while (endPos < csvTextLength && csvText[endPos] != ',' && csvText[endPos] != '\n') { endPos++; } } else { //"で囲まれていない //カンマか改行の位置 endPos = startPos; while (endPos < csvTextLength && csvText[endPos] != ',' && csvText[endPos] != '\n') { endPos++; } //一つのフィールドを取り出す field = csvText.Substring(startPos, endPos - startPos); //後の空白を削除 field = field.TrimEnd(); } //フィールドの追加 csvFields.Add(field); //行の終了か調べる if (endPos >= csvTextLength || csvText[endPos] == '\n') { //行の終了 //レコードの追加 csvFields.TrimToSize(); csvRecords.Add(csvFields); csvFields = new System.Collections.ArrayList( csvFields.Count); if (endPos >= csvTextLength) { //終了 break; } } //次のデータの開始位置 startPos = endPos + 1; } csvRecords.TrimToSize(); return csvRecords; } private DataTable GetCSVData(string strpath) { int intColCount = 0; DataTable mydt = new DataTable("myTableName"); DataColumn mydc; DataRow mydr; string strline; string[] aryline; System.IO.StreamReader mysr = new System.IO.StreamReader(strpath); while ((strline = mysr.ReadLine()) != null) { aryline = strline.Split(new char[] { ',' }); intColCount = aryline.Length; for (int i = 0; i < aryline.Length; i++) { mydc = new DataColumn(aryline[i]); mydt.Columns.Add(mydc); } } return mydt; }