C# Excel 파일 내보내기 Excel 파일 열기 형식이 확장자 지정 형식과 일치하지 않습니다.
4290 단어 .Net
이 문제의 원인:
내가 Excel에 쓴 것은 정상적인 Excel 형식이 아니다. 말하자면 내가 Response를 사용하는 것이다.WriteFile("k:\\StudentMarks.xls");생성된 Excel은 Excel이 아닙니다. 단지 확장자가 xls일 뿐입니다. 이것은 Excel의 보안 문제이기 때문에 열 때 "*.xls 파일 형식은 파일 확장자가 지정한 형식과 일치하지 않습니다."라고 알립니다.
본인의 컴퓨터는 Office 2010에 설치되어 있으며, 사용하는 운영체제는 64비트 WIN7 플래그십 버전입니다.
여기에서는 "레지스트리 수정 방법"을 사용하여 이 문제를 해결합니다. 이것은 근본적으로 문제를 해결하지 못했습니다.
1. 레지스트리 편집기 열기 방법: 시작 -> 실행 -> 레지스트리 입력 -> 확인
2, 레지스트리 하위 항목 찾기 HKEY_CURRENT_USER\Software\Microsoft\Office\12.0\Excel\Security
3. 오른쪽 공백을 마우스 오른쪽 버튼으로 클릭하고 새로 만들기 -> DWORD 값(D)을 선택하고 ExtensionHardening을 입력하여 확인을 클릭합니다.
4. ExtensionHardening을 마우스 오른쪽 버튼으로 클릭하고 수정(M)을 클릭하여 수치 데이터에 "0"을 입력하면 됩니다.
5. 등록표 편집기를 닫고 xls 파일을 다시 열어 알림이 보이지 않는지 확인하십시오.
팁: ExtensionHardening 설정된 값에 대한 데이터 설정:
* 0: 파일 확장자와 파일 형식을 확인하지 않고 함수의 경고 메시지를 우회합니다.
*1: 파일 확장자와 파일 형식을 확인합니다.일치하지 않으면 경고 메시지가 표시됩니다.
* 2: 파일 확장자와 파일 형식을 확인합니다.일치하지 않으면 파일을 열지 마십시오.
방법 2 (제창)
'파일 형식과 확장자 지정 형식이 일치하지 않습니다.'이 문제는 대부분의 사람들이 excel 파일을 내보낼 때 기본적으로 excel을 저장하기 때문입니다.
바로 워크북입니다.Save(path) 또는 워크북.SaveAs(path).더 나아가 SaveAs 방법의 매개 변수를 무시했습니다.excel 파일 형식 저장
두 번째 매개변수인 FileForMat을 닫습니다.
FileFormat
유형: 시스템.파일을 저장할 때 사용할 파일 형식을 지정하는 Object XlFileFormat 값 중 하나입니다.기존 파일의 경우 기본 형식은 마지막 형식입니다.
파일 형식을 지정합니다.새 파일에 대해 기본 형식은 excel 버전의 형식입니다.PS: 내보낸 excel 파일의 확장자와 사용한 excel 버전의 확장자
일치하지 않을 때'파일 형식과 확장자 지정 형식이 일치하지 않습니다.'오류가 발생합니다. 낮은 버전에서 excel 파일을 열 때 이러한 오류를 알릴 뿐만 아니라
지저분할 거야.
다른 매개 변수의 해석은 이 문장을 볼 수 있다http://blog.csdn.net/zyming0815/article/details/5939104.
해결 방법은 다음과 같습니다.
int FormatNum;//excel 파일 형식 저장
string Version;//excel 버전 번호
Excel.Application Application = new Excel.Application();
Excel.Workbook workbook = (Excel.Workbook)Application.Workbooks.Add(Missing.Value);//워크북 활성화
Excel.Worksheet worksheet =(Excel.Worksheet)workbook.Worksheets.Add(true);//워크북에 sheet 추가
Version = Application.Version;//사용한 excel 버전 번호 가져오기
if (Convert.ToDouble(Version) < 12)//You use Excel 97-2003
{
FormatNum = -4143;
}
else//you use excel 2007 or later
{
FormatNum = 56;
}
workbook.SaveAs(@"D:\MyExcel.xls", FormatNum);
excel 파일 저장 형식에 대한 지식을 더 알고 싶으면 이 글을 보십시오.
http://www.rondebruin.nl/saveas.htm
뒷말: 최근에 회사 동료에게 엑셀 리포트를 해주면서 이런 문제가 생겼어요. 동료가 쓴 것은 2003판(내 기계는 2007버전)이고 제가 썼어요.NET가 생성한 보고서를 그가 열면 난장판이다. 인터넷에서 검색하는 대부분의 해결 방법은 등록표를 수정하는 것이다. 이것은 너무 번거로우며 모든 동료에게 등록표를 수정할 수도 없다.나중에 SaveAs 방법에 그렇게 많은 파라미터가 있는데 하나는 저장 형식을 지정하는 파라미터가 있어야 한다.하하, 역시.그리고 File Format이라는 매개 변수에서 자료를 찾아서 위에서 추천한 그 글을 VBA로 썼습니다.그리고 여러분과 공유하겠습니다.하하
추가 정보
Excel SaveAs 메서드의 파일 형식 값을 결정하는 방법
* First get an object reference to the Excel application
oXL = CREATEOBJECT("Excel.Application") && starts excel
* Open the worksheet created in step 1 (be sure to include
* the full path and file name
oXL.WorkBooks.Add("myfile.xls")
* Retrieve the FileFormat
nFileFormat = oXL.WorkBooks(1).FileFormat
* Save the file under a new name with the same format
oXL.WorkBooks(1).SaveAs("new.xls",nFileFormat)
* Quit Excel
oXL.Quit
* Release the object reference
RELEASE oXL
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
NPOI Excel 여러 개를 하나의 Excel로 결합구현 코드 Nuget에서 NPOI 검색 및 설치 NPOI를 사용하여 참조를 추가합니다.HSSF.UserModel;...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.