2015-01-05 3 views
0

제출시 Excel 파일을 만들거나 (아직 만들지 않은 경우) Excel 파일에 추가하는 Windows 응용 프로그램이 있습니다. 파일은 매번 생성되지만 파일을 복사 할 것인지 묻는 메시지가 나타납니다. 파일을 다시 쓰지 않고 파일에 추가하고 싶습니다. 누군가 내가 뭘 잘못하고 있다고 말할 수 있습니까?Excel에 데이터 저장

다음은 내 제출 기능에 내 코드입니다 :

string filePath = "C:\\Temp\\test.xlsx"; 

Excel.Application oApp; 
Excel.Worksheet oSheet; 
Excel.Workbook oBook; 

oApp = new Excel.Application(); 
oBook = oApp.Workbooks.Add(); 
oSheet = (Excel.Worksheet)oBook.Worksheets.get_Item(1); 

if (!File.Exists(filePath)) 
{ 
    using (File.CreateText(filePath)) 
    { 
     oSheet.Cells[1, 2] = "First Name"; oSheet.Cells[1, 3] = "Last Name"; oSheet.Cells[1, 4] = "Street Address"; oSheet.Cells[1, 5] = "City"; oSheet.Cells[1, 6] = "State"; 
     oSheet.Cells[1, 7] = "Zip Code"; oSheet.Cells[1, 8] = "Phone"; oSheet.Cells[1, 9] = "Email"; oSheet.Cells[1, 10] = "DOB"; oSheet.Cells[1, 11] = "Gender"; oSheet.Cells[1, 12] = "High School"; 
     oSheet.Cells[1, 13] = "Graduation Year"; oSheet.Cells[1, 14] = "Planned Term"; oSheet.Cells[1, 15] = "Intended Major"; 

     oSheet.Cells[2, 2] = txtFirstName.Text; oSheet.Cells[2, 3] = txtLastName.Text; oSheet.Cells[2, 4] = txtAddress.Text; oSheet.Cells[2, 5] = txtCity.Text; oSheet.Cells[2, 6] = txtState.Text; 
     oSheet.Cells[2, 7] = txtZipCode.Text; oSheet.Cells[2, 8] = txtPhone.Text; oSheet.Cells[2, 9] = txtEmail.Text; oSheet.Cells[2, 10] = dtpDOB.Value; oSheet.Cells[2, 11] = genderSet.ToString(); 
     oSheet.Cells[2, 12] = txtHighSchool.Text; oSheet.Cells[2, 13] = txtGraduationYear.Text; oSheet.Cells[2, 14] = txtTermofEnrollment.Text; oSheet.Cells[2, 15] = outText.ToString(); 
    } 
} 
else 
{ 
    using (File.AppendText(filePath)) 
    { 
     oSheet.Cells[2, 2] = txtFirstName.Text; oSheet.Cells[2, 3] = txtLastName.Text; oSheet.Cells[2, 4] = txtAddress.Text; oSheet.Cells[2, 5] = txtCity.Text; oSheet.Cells[2, 6] = txtState.Text; 
     oSheet.Cells[2, 7] = txtZipCode.Text; oSheet.Cells[2, 8] = txtPhone.Text; oSheet.Cells[2, 9] = txtEmail.Text; oSheet.Cells[2, 10] = dtpDOB.Value; oSheet.Cells[2, 11] = genderSet.ToString(); 
     oSheet.Cells[2, 12] = txtHighSchool.Text; oSheet.Cells[2, 13] = txtGraduationYear.Text; oSheet.Cells[2, 14] = txtTermofEnrollment.Text; oSheet.Cells[2, 15] = outText.ToString(); 

    } 
} 
+0

'SaveAs' 메소드는 ** 다른 파일 **에서 통합 문서의 변경 사항을 저장합니다. – luke2012

답변

0

File.CreateText() 방법은 UTF-8 인코딩 된 텍스트를 기록하기위한 파일을 열고 File.AppendText() 방법은 기존 파일 UTF-8 인코딩 된 파일을 추가하는 StreamWriter를 생성한다. Excel 파일은 텍스트 파일과 다릅니다. 이미 수행중인 것처럼 Excel Interop을 사용하거나 Open XML과 같은 것을 사용해야합니다. 수정 한 후

코드는 다음과 같습니다

string filePath = "C:\\Temp\\test.xlsx"; 

Excel.Application oApp; 
Excel.Worksheet oSheet; 
Excel.Workbook oBook; 

oApp = new Excel.Application(); 

if (!File.Exists(filePath)) 
{ 
    oBook = oApp.Workbooks.Add(); 
    oSheet = (Excel.Worksheet)oBook.Worksheets.get_Item(1); 

    oSheet.Cells[1, 2] = "First Name"; oSheet.Cells[1, 3] = "Last Name"; oSheet.Cells[1, 4] = "Street Address"; oSheet.Cells[1, 5] = "City"; oSheet.Cells[1, 6] = "State"; 
    oSheet.Cells[1, 7] = "Zip Code"; oSheet.Cells[1, 8] = "Phone"; oSheet.Cells[1, 9] = "Email"; oSheet.Cells[1, 10] = "DOB"; oSheet.Cells[1, 11] = "Gender"; oSheet.Cells[1, 12] = "High School"; 
    oSheet.Cells[1, 13] = "Graduation Year"; oSheet.Cells[1, 14] = "Planned Term"; oSheet.Cells[1, 15] = "Intended Major"; 

    oSheet.Cells[2, 2] = txtFirstName.Text; oSheet.Cells[2, 3] = txtLastName.Text; oSheet.Cells[2, 4] = txtAddress.Text; oSheet.Cells[2, 5] = txtCity.Text; oSheet.Cells[2, 6] = txtState.Text; 
    oSheet.Cells[2, 7] = txtZipCode.Text; oSheet.Cells[2, 8] = txtPhone.Text; oSheet.Cells[2, 9] = txtEmail.Text; oSheet.Cells[2, 10] = dtpDOB.Value; oSheet.Cells[2, 11] = genderSet.ToString(); 
    oSheet.Cells[2, 12] = txtHighSchool.Text; oSheet.Cells[2, 13] = txtGraduationYear.Text; oSheet.Cells[2, 14] = txtTermofEnrollment.Text; oSheet.Cells[2, 15] = outText.ToString(); 
    oBook.SaveAs(filePath); 
} 
else 
{ 
    oBook = oApp.Workbooks.Open(@"C:\Test\YourWorkbook.xlsx"); 

    oSheet = (Excel.Worksheet)oBook.Worksheets.get_Item(1); 
    oSheet.Cells[2, 2] = txtFirstName.Text; oSheet.Cells[2, 3] = txtLastName.Text; oSheet.Cells[2, 4] = txtAddress.Text; oSheet.Cells[2, 5] = txtCity.Text; oSheet.Cells[2, 6] = txtState.Text; 
    oSheet.Cells[2, 7] = txtZipCode.Text; oSheet.Cells[2, 8] = txtPhone.Text; oSheet.Cells[2, 9] = txtEmail.Text; oSheet.Cells[2, 10] = dtpDOB.Value; oSheet.Cells[2, 11] = genderSet.ToString(); 
    oSheet.Cells[2, 12] = txtHighSchool.Text; oSheet.Cells[2, 13] = txtGraduationYear.Text; oSheet.Cells[2, 14] = txtTermofEnrollment.Text; oSheet.Cells[2, 15] = outText.ToString(); 
    oBook.Save(); 
} 

oBook.Close(); 
oApp.Quit(); 
oSheet = null; 
oBook = null; 
oApp = null;  
+0

고맙습니다. 위의 수정을했고 파일을 다시 만들지는 않지만 새 데이터를 추가하지 않았습니다. 현재 Excel 파일에있는 모든 데이터를 덮어 쓰고 있습니다. 단계가 빠졌습니까? – user1863593

+0

제가 누락 된 단계를 알았습니다. rowCount를 증가시키고 셀을 수정해야했습니다. – user1863593

0

당신은 새 Excel 워크 시트 당신이 함수를 호출 할 때마다 만들고 있습니다. 기존 Excel 파일에 데이터를 추가하려면 먼저 파일을 열고 필요한 데이터를 추가 한 다음 save 함수를 호출해야합니다.

는이

var xlApp = new Excel.Application(); 
xlApp.Workbooks.Open(path); 

같은 기존 지금 당신이 데이터를 수정할 수 있습니다 열고 작업이 완료되면 저장하고 닫을 수 있습니다.

0

은 내가 실종됐다 단계를 알아 냈어. rowCount를 증가시키고 셀을 수정해야했습니다. 필요에 따라 작동하는 것으로 보입니다.

else 
      { 
       oBook = oApp.Workbooks.Open(@"C:\\Temp\\test.xlsx"); 
       oSheet = (Excel.Worksheet)oBook.Worksheets.get_Item(1); 

       Microsoft.Office.Interop.Excel.Range range = oSheet.UsedRange; 

       int rowCount = range.Rows.Count + 1; 



       oSheet.Cells[rowCount, 2] = txtFirstName.Text; 
       oSheet.Cells[rowCount, 3] = txtLastName.Text; 
       oSheet.Cells[rowCount, 4] = txtAddress.Text; 
       oSheet.Cells[rowCount, 5] = txtCity.Text; 
       oSheet.Cells[rowCount, 6] = txtState.Text; 
       oSheet.Cells[rowCount, 7] = txtZipCode.Text; 
       oSheet.Cells[rowCount, 8] = txtPhone.Text; 
       oSheet.Cells[rowCount, 9] = txtEmail.Text; 
       oSheet.Cells[rowCount, 10] = dtpDOB.Value; 
       oSheet.Cells[rowCount, 11] = genderSet.ToString(); 
       oSheet.Cells[rowCount, 12] = txtHighSchool.Text; 
       oSheet.Cells[rowCount, 13] = txtGraduationYear.Text; 
       oSheet.Cells[rowCount, 14] = txtTermofEnrollment.Text; 
       oSheet.Cells[rowCount, 15] = outText.ToString(); 
       oBook.Save(); 
      } 
관련 문제