ASP.NET(C#)Excelのファイル内容を読み込む

4118 ワード

.xls形式Office 2003および以下のバージョン.xlsxフォーマットOffice 2007以降.csv形式でカンマで区切られた文字列テキスト(上記の2つのファイルタイプをこの形式に保存できます)は、前の2つの形式と後の1つの形式を読み取るには2つの異なる方法があります.
プログラムを見てみましょう:ページフロント:
 
  
            
         
      
  

バックグラウンドコード:
 
  
 // ( )
 string currFilePath = string.Empty; //
 string currFileExtension = string.Empty;  //

 //Page_Load
 protected void Page_Load(object sender,EventArgs e)
 {
     this.btnRead.Click += new EventHandler(btnRead_Click);
 }

 
 //    // 3
 protected void btnRead_Click(object sender,EventArgs e)
 {
     Upload();  //
     if(this.currFileExtension ==".xlsx" || this.currFileExtension ==".xls")
       {
            DataTable dt = ReadExcelToTable(currFilePath);  // Excel (.xls .xlsx )
       }
       else if(this.currFileExtension == ".csv")
         {
               DataTable dt = ReadExcelWidthStream(currFilePath);  // .csv
         }
 }

次に、ボタンクリックイベントの3つの方法を示します.
 
  
///
///
///
private void Upload()
{
HttpPostedFile file = this.fileSelect.PostedFile;
string fileName = file.FileName;
string tempPath = System.IO.Path.GetTempPath(); //
fileName = System.IO.Path.GetFileName(fileName); // ( )
this.currFileExtension = System.IO.Path.GetExtension(fileName); //
this.currFilePath = tempPath + fileName; //
file.SaveAs(this.currFilePath); //
}


///


/// xls\xlsx Excel
///
/// Excel
///
private DataTable ReadExcelToTable(string path)
{
//
string connstring = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path + ";Extended Properties='Excel 8.0;HDR=NO;IMEX=1';"; // Office 07
//string connstring = Provider=Microsoft.JET.OLEDB.4.0;Data Source=" + path + ";Extended Properties='Excel 8.0;HDR=NO;IMEX=1';"; //Office 07 Office2010
using(OleDbConnection conn = new OleDbConnection(connstring))
{
conn.Open();
DataTable sheetsName = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables,new object[]{null,null,null,"Table"}); // sheet
string firstSheetName = sheetsName.Rows[0][2].ToString(); // sheet
string sql = string.Format("SELECT * FROM [{0}],firstSheetName); //
OleDbDataAdapter ada =new OleDbDataAdapter(sql,connstring);
DataSet set = new DataSet();
ada.Fill(set);
return set.Tables[0];

}
}


///


/// csv Excel
///
/// Excel
///
private DataTable ReadExcelWithStream(string path)
{
DataTable dt = new DataTable();
bool isDtHasColumn = false; // DataTable
StreamReader reader = new StreamReader(path,System.Text.Encoding.Default); //
while(!reader.EndOfStream)
{
string meaage = reader.ReadLine();
string[] splitResult = message.Split(new char[]{','},StringSplitOption.None); //
DataRow row = dt.NewRow();
for(int i = 0;i{
if(!isDtHasColumn) //
{
dt.Columns.Add("column" + i,typeof(string));
}
row[i] = splitResult[i];
}
dt.Rows.Add(row); //
isDtHasColumn = true; // ,
}
return dt;
}