ASP.NET(C#)Excelのファイル内容を読み込む
4118 ワード
.xls形式Office 2003および以下のバージョン.xlsxフォーマットOffice 2007以降.csv形式でカンマで区切られた文字列テキスト(上記の2つのファイルタイプをこの形式に保存できます)は、前の2つの形式と後の1つの形式を読み取るには2つの異なる方法があります.
プログラムを見てみましょう:ページフロント:
バックグラウンドコード:
次に、ボタンクリックイベントの3つの方法を示します.
プログラムを見てみましょう:ページフロント:
バックグラウンドコード:
// ( )
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;
}