EXCEL 데이터 조작

22457 단어 Excel
string filePath = @"F:\Tim\UpdatePIMData1\Staff.xls";

private DataSet SearchDataSource()
{
string strCon;
strCon
= "Provider=Microsoft.Jet.Oledb.4.0;Data Source=" + filePath + ";Extended Properties='Excel 8.0;HDR=Yes;IMEX=1;'";
OleDbConnection olecon
= new OleDbConnection(strCon);
OleDbDataAdapter myda
= new OleDbDataAdapter("SELECT StaffID,JoinDate FROM [Staff$]", olecon);

DataSet myds
= new DataSet();
myda.Fill(myds);
return myds;
}

  
/// <summary>
/// Excel
/// </summary>
/// <param name="Path"> </param>
public bool SaveFP2toExcel(string Path)
{
try
{
string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" +"Data Source="+ Path +";"+"Extended Properties=Excel 8.0;";
OleDbConnection conn
= new OleDbConnection(strConn);
conn.Open();
System.Data.OleDb.OleDbCommand cmd
=new OleDbCommand ();
cmd.Connection
=conn;
//cmd.CommandText ="UPDATE [sheet1$] SET ='2005-01-01' WHERE =' '";
//cmd.ExecuteNonQuery ();
for(int i=0;i<fp2.Sheets [0].RowCount -1;i++)
{
if(fp2.Sheets [0].Cells[i,0].Text!="")
{
cmd.CommandText
="INSERT INTO [sheet1$] ( , , , , , ) VALUES('"+fp2.Sheets [0].Cells[i,0].Text+ "','"+
fp2.Sheets [
0].Cells[i,1].Text+"','"+fp2.Sheets [0].Cells[i,2].Text+"','"+fp2.Sheets [0].Cells[i,3].Text+
"','"+fp2.Sheets [0].Cells[i,4].Text+"','"+fp2.Sheets [0].Cells[i,5].Text+"')";
cmd.ExecuteNonQuery ();
}
}
conn.Close ();
return true;
}
catch(System.Data.OleDb.OleDbException ex)
{
System.Diagnostics.Debug.WriteLine (
" Excel :"+ex.Message );
}
return false;
}

  
protected void DoOleSql(string sql, string database)
{
OleDbConnection conn
= new OleDbConnection();
conn.ConnectionString
= "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
+ Server.MapPath("\\") + database
+ "; Extended Properties='Excel 8.0;HDR=no;IMEX=0'";
try
{
//
conn.Open();
}
catch (Exception e)
{
Response.Write(e.ToString());
}
OleDbCommand olecommand
= new OleDbCommand(sql, conn);
try
{
//
olecommand.ExecuteNonQuery();
}
catch (Exception eee)
{
Response.Write(eee.ToString());

conn.Close();
}
finally
{
conn.Close();
//
}
conn.Close();
}

3, excel 파일에서 데이터 읽기
string
 sql 
=
 
"
select * from [sheet1$]
"
;DoOleSql(sql,
"
test.xls
"
);
4. excel 파일의 데이터 업데이트
 
string
 sql 
=
 
"
update [sheet1$] set FieldName1='333' where FieldName2='b3'
"
;DoOleSql(sql,
"
test.xls
"
);
 
5. excel 파일에 데이터 삽입
string
 sql 
=
 
"
insert into [sheet1$](FieldName1,FieldName2,…) values('a',’b’,…)
"
;DoOleSql(sql,
"
test.xls
"
);
6. excel 파일의 데이터 삭제: 이런 방법의 사용을 권장하지 않는다
7. 비표준 구조의 excel 표에 대해 excel 중sheet의 범위를 지정할 수 있습니다
1) 데이터 읽기:string sql = "select * from [sheet 1$A3: F20]"
2) 업데이트 데이터:string sql = "update [sheet1$A9:F15] set FieldName='333'where AnotherFieldName='b3'"
3) 데이터 삽입:string sql = "insert into [sheet1$A9:F15](FieldName1,FieldName2,...)values('a','b',...)"
4) 데이터 삭제: 권장되지 않음
주: 1) 코드는 수요에 따라 스스로 수정할 수 있다.2)'업데이트 가능한 조회를 사용해야 하는 작업'오류가 발생하면 ql문장에서 excel 파일의'필드'인용에 오류가 있거나 excel 파일에'수정'권한이 없을 수 있습니다.3) "선택된 범위를 확장할 수 없음"오류가 발생하면 excel 파일에서 인용한 "범위"에 오류가 있을 수 있습니다.
public static bool SaveDataTableToExcel(System.Data.DataTable excelTable, string filePath)  
{
Microsoft.Office.Interop.Excel.Application app
=
new Microsoft.Office.Interop.Excel.ApplicationClass();
try
{
app.Visible
= false;
Workbook wBook
= app.Workbooks.Add(true);
Worksheet wSheet
= wBook.Worksheets[1] as Worksheet;
if (excelTable.Rows.Count > 0)
{
int row = 0;
row
= excelTable.Rows.Count;
int col = excelTable.Columns.Count;
for (int i = 0; i < row; i++)
{
for (int j = 0; j < col; j++)
{
string str = excelTable.Rows[i][j].ToString();
wSheet.Cells[i
+ 2, j + 1] = str;
}
}
}

int size = excelTable.Columns.Count;
for (int i = 0; i < size; i++)
{
wSheet.Cells[
1, 1 + i] = excelTable.Columns[i].ColumnName;
}
//
app.DisplayAlerts = false;
app.AlertBeforeOverwriting
= false;
//
wBook.Save();
// excel
app.Save(filePath);
app.SaveWorkspace(filePath);
app.Quit();
app
= null;
return true;
}
catch (Exception err)
{
MessageBox.Show(
" Excel ! :" + err.Message, " ",
MessageBoxButtons.OK, MessageBoxIcon.Information);
return false;
}
finally
{
}
}

좋은 웹페이지 즐겨찾기