OLEDB 및 DataASET을 사용하여 Excel에서 단일 행을 업데이트하려면 명령을 업데이트하십시오. (씨#)
문제
Excel에서 스프레드 시트에서 데이터를 가져오고 있습니다. 나는 OLEDB를 사용하여 읽고 있습니다. 그러나 결과를 원본 파일로 다시 저장하는 데 어려움이 있습니다. 아래는 지금까지 내 코드입니다.
string ExcelConnectionString = string.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Mode=ReadWrite;" +
"Extended Properties=\"Excel 8.0;HDR=No;IMEX=1\";",
Server.MapPath("./Uploads/" + excelName));
try
{
OleDbDataAdapter ExcelDataAdapter = new OleDbDataAdapter("SELECT * FROM [Sheet1$A8:AZ67]", ExcelConnectionString);
DataSet objDataSet = new DataSet();
ExcelDataAdapter.Fill(objDataSet, "ExcelTable");
for (int i = 0; i < objDataSet.Tables[0].Rows.Count; i++ )
{
Slab slb = new Slab();
slb.ReceiveDate = objDataSet.Tables[0].Rows[i].Field<DateTime>(0);
slb.VesselName = objDataSet.Tables[0].Rows[i].Field<string>(1);
slb.Lot = Convert.ToInt16(objDataSet.Tables[0].Rows[i].Field<double>(2));
slb.SlabSource = objDataSet.Tables[0].Rows[i].Field<string>(3);
slb.CertificateNumber = objDataSet.Tables[0].Rows[i].Field<string>(4);
//I think the next two lines do the same thing.
objDataSet.Tables[0].Rows[i][4] = "message here";
objDataSet.Tables[0].Rows[i].SetField<string>(51, "message here");
ExcelDataAdapter.Update(objDataSet, "ExcelTable");
.............
}
다음 오류가 발생합니다.
업데이트는 수정 된 행이있는 Datarow 컬렉션을 통과 할 때 유효한 UpdateCommand가 필요합니다.
문서는 다음과 유사한 업데이트 명령 구문을 보여줍니다.
업데이트 테이블 세트 fieldid = 1, description = 'nice'여기서 regionID = 1이지만 작동하지 않으므로 For Loop에서 현재 행을 업데이트해야합니다.
감사합니다. 감사합니다
해결책
우와.
내 말은 ... 와우.
나는 특정한 자기 변형 방법이 XP를 지나서 뒷받침된다고 생각하지 않습니다.
Excel 파일을 다루기 위해 OLEDB를 떨어 뜨리고 많은 API 중 하나를 선택하는 것이 좋습니다. 여기에서 많은 것을 찾을 수 있습니다. http://www.codeplex.com/site/search?projectsearchtext=excel
나는 부부를 사용했고 그들은 꽤 잘 작동했습니다. 놀랍게도 확인하십시오 OpenXml SDK Office 2007+를 지원할 계획이라면.
제휴하지 않습니다 StackOverflow