OLEDB 및 DataASET을 사용하여 Excel에서 단일 행을 업데이트하려면 명령을 업데이트하십시오. (씨#)

StackOverflow https://stackoverflow.com/questions/1422165

  •  07-07-2019
  •  | 
  •  

문제

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+를 지원할 계획이라면.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top