블로그 이미지
Every unexpected event is a path to learning for you.

카테고리

분류 전체보기 (2128)
Unity3D (482)
Programming (455)
Unreal (2)
Gamebryo (56)
Tip & Tech (164)
협업 (28)
3DS Max (3)
Game (12)
Utility (101)
Etc (90)
Link (29)
Portfolio (19)
Subject (90)
iPhone (31)
Android (2)
Linux (5)
잉여 프로젝트 (2)
게임이야기 (1)
Memories (16)
Interest (36)
Thinking (34)
한글 (23)
PaperCraft (5)
Animation (408)
Wallpaper (2)
재테크 (16)
Exercise (3)
나만의 맛집 (2)
냥이 (7)
육아 (2)
Total1,119,887
Today33
Yesterday204
Statistics Graph

달력

« » 2017.12
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31            

공지사항

태그목록

Tistory Cumulus Flash tag cloud by BLUEnLIVE requires Flash Player 9 or better.

Link : http://ttend.tistory.com/249

저작자 표시 비영리 동일 조건 변경 허락
신고
Posted by blueasa

댓글을 달아 주세요

xls와 xlsx 둘 다 되도록 예제를 약간 수정해서 테스트 완료.


P.s. 무슨 이유인지 모르지만 VS2013에서는 Microsoft.Office.Interop.Excel 이 없어서, 부득이하게 VS2010으로 작업함.

       (VS2012는 있는지 확인은 안해봤지만.. 얼핏 인터넷에서 보기로는 VS2012도 없는 듯..)

        
        private void CreateExcelFile()
        {
            Excel.Application xlApp;
            Excel.Workbook xlWorkBook;
            Excel.Worksheet xlWorkSheet;
            object misValue = System.Reflection.Missing.Value;

            xlApp = new Excel.Application();
            // 생성할 때, 기본 Sheet 1개.
            xlWorkBook = xlApp.Workbooks.Add(misValue);

            // Sheet 추가.(필요한 Sheet 개수에 따라 루프 돌아야 될 듯)
            xlWorkBook.Worksheets.Add(misValue, misValue, misValue, misValue);

            xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);
            // Sheet Name 지정.
            xlWorkSheet.Name = "SheetName1";
            xlWorkSheet.Cells[1, 1] = "http://csharp.net-informations.com";

            xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(2);
            xlWorkSheet.Name = "SheetName2";
            xlWorkSheet.Cells[1, 1] = "http://csharp.net-informations.com";

            // 테스트용으로 파일명 직접 입력.
            string createFilePath = Directory.GetCurrentDirectory() + @"\" + "csharp-Excel.xlsx";

            // 파일 있으면 삭제.
            if (true == File.Exists(createFilePath))
            {
                File.Delete(createFilePath);
            }

            // 확장자만 검사하기 위해..
            string strExtension = Path.GetExtension(createFilePath);

            if (0 == strExtension.CompareTo(".xlsx"))
            {
                xlWorkBook.SaveAs(createFilePath, Excel.XlFileFormat.xlOpenXMLWorkbook, misValue, misValue, false, false, Excel.XlSaveAsAccessMode.xlNoChange, Excel.XlSaveConflictResolution.xlUserResolution, true, misValue, misValue, misValue);
            }
            else if (0 == strExtension.CompareTo(".xls"))
            {
                xlWorkBook.SaveAs(createFilePath, Excel.XlFileFormat.xlWorkbookNormal, misValue, misValue, misValue, misValue, Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue);
            }

            xlWorkBook.Close(true, misValue, misValue);
            xlApp.Quit();

            releaseObject(xlWorkSheet);
            releaseObject(xlWorkBook);
            releaseObject(xlApp);

            MessageBox.Show("Excel file created , you can find the file " + createFilePath);
        }

        private void releaseObject(object obj)
        {
            try
            {
                System.Runtime.InteropServices.Marshal.ReleaseComObject(obj);
                obj = null;
            }
            catch (Exception ex)
            {
                obj = null;
                MessageBox.Show("Exception Occured while releasing object " + ex.ToString());
            }
            finally
            {
                GC.Collect();
            }
        }



엑셀 생성 참조 : http://csharp.net-informations.com/excel/csharp-create-excel.htm

xlsx 참조 : http://stackoverflow.com/questions/9769703/exporting-to-xlsx-using-microsoft-office-interop-excel-saveas-error


저작자 표시 비영리 동일 조건 변경 허락
신고
Posted by blueasa
TAG Excel, xls, xlsx

댓글을 달아 주세요

C# Excel Tutorial

Programming/C# / 2014.03.26 15:02
 C# Excel Tutorial


저작자 표시 비영리 동일 조건 변경 허락
신고
Posted by blueasa
TAG Excel

댓글을 달아 주세요


[제작자 황현우님의 파일]

LiAsExcelDB.cs


[개인적으로 필요해서 소스 좀 수정된 파일]

LiAsExcelDB.cs




C# 에서 Excel 로 데이터 기록 및 읽기 [OleDB]

 

OleDB 를 이용한 Excel 로 데이터베이스 처럼이용하기 입니다만...

Excel 을 제어하는 방법으로 사용해도 무방합니다. 저장이.. 1만건 이상일 때부터는 좀 느려지지만

(제 PC 에서는 한 2초 정도 걸리는 군효..) 읽기는 순식간입니다.

대량으로 저장할 때는 다른 방식으로 해야될 듯..

 

[참고] 요기 본문에 나오는 모든 소스는 첨부된 파일에 있으니, 복사해서 쓰지 마시고..

그리고 퍼가시거나 소스를 사용하신다면 댓글이라도 남겨주시는 센스도.. 사실 퍼가면 코딩하는

시간 버는 거니.. 댓글 다시는데 약간의 시간의 사용하셔도 쿨럭..ㅡ.,ㅡ;;

 

흠,.. C# 에서는 좀 사기적인(?) 지원이 많은 관계로.. 엄청 편리하네요.. 속도는 좀 떨어지만서도..

여튼,.. 프로그램을 만들때.. 매번 DB 를 쓰기도 그렇고.. 그렇다고 Access 쓰기도 구차니즘에

손가락이 떨려오신다면.. Excel 파일을 DB 처럼 사용하는 방법을 이용하는 것도 나름 좋은

방법입니다. 일단 내용의 보안이나 등등의 기능까지 하긴 너무 양이 많아 질꺼 같고..

최대한 간단하게 Excel 파일을 제어해서 Database 처럼 사용하는 방법을 살펴보죠..

(검색해보시면 비슷자료가 많이 있으니 다른 사람들의 것도 참고 하시는 것도 좋은 공부방법이죠..)

 

먼저 Excel 의 구조와 C# 의 DataSet 을 간단하게 살펴보면... 왠지 느낌이 팍! 하고 오실껍니다.

 

DataSet : 테이블의 집합

Excel : Sheet 의 집합 -> 즉, 하나의 시트가 DataSet 에 하나의 Table 이라고 생각하면 됩니다.

 

DataTable : 하나의 테이블 객체.. 컬럼과 줄이 존재하지요..

Sheet : 열과 행이 존재하지요.. 테이블로 보자면 컬럼과 줄..

 

그렇습니다.. -_-;; 이넘들이 개념이 같은 넘들이였습니다. (원래도 같은 넘들이였죠.. DOS 시절에..)

 



 

위와 같이 되는 거죠.. sheet 명이 table 명,  첫번째 줄의 데이터가 Field 명이 됩니다.

음.. 개념 잡기는 여기까지만 하고.. 본격적인 내용으로 들어가면...

 

[ Excel 파일 버전 검사 ]

 

Excel 파일이 버전에 따라서.. OleDB Connection String 이 다릅니다.

즉, xls 인지.. xlsx 인지에 따라서 다르게 처리해야 되는데...

기본적으로 확장명으로 비교할 수도 있겠지만.. 프로그램 만드는데 내부에서 쓰는 데이터 떡하니

xls 하기도 머시기 하고.. xxx 면 xls 라고 소스에서 비교할 수도 있겠지만.. 좀 아닌것 같아서

일단 확장명 상관없이 xls 인지 xlsx 인지 알아내는 방법을 보면... 아래처럼 2개가 있습니다.

 

A. Excel 를 연동해서 파일을 로딩.. 파일 정보를 본다.

B. Excel 파일을 열어서 맨 앞의 file header 부분을 본다.

 

A 로 하자니.. 실제로 두번 읽게 되니 -_-;; 글고 좀 느리구요.. B 로 해보겠습니다.

 

        public static int ExcelFileType(string XlsFile)
        { 

            // 요거이 비교할 파일 데이터 입니다.
            byte[,] ExcelHeader = {
                { 0xD0, 0xCF, 0x11, 0xE0, 0xA1 }, // XLS  File Header
                { 0x50, 0x4B, 0x03, 0x04, 0x14 }  // XLSX File Header
            };

            // result -2=error, -1=not excel , 0=xls , 1=xlsx
            int result = -1;

            FileInfo FI = new FileInfo(XlsFile);
            FileStream FS = FI.Open(FileMode.Open);

            try
            {
                byte[] FH = new byte[5];

                FS.Read(FH, 0, 5);

                for (int i = 0; i < 2; i++)
                {
                    for (int j = 0; j < 5; j++)
                    {
                        if (FH[j] != ExcelHeader[i, j]) break;
                        else if (j == 4) result = i;
                    }
                    if (result >= 0) break;
                }
            }
            catch (Exception e)
            {
                result = (-2);
                //throw e;
            }
            finally
            {
                FS.Close();                
            }
            return result;
        }

 

와 같이 되겠습니다. 머.. 단순하죠.. 파일 열어서 5 byte 비교해서.. xls 인지 xlsx 인지..

excel 파일이 아닌지를 알아내는 것입니다.

 

[ OleDB Connection String ]

 

자.. 어느넘이 어느 넘인지 알았으니.. OleDB Connection String 을 만들어 봅시다요..

각 각 다음과 같습니다만.. 중요한 것만 내용에 넣었으니.. 필요한게 더 있으면 추가를...

아래의 형태는 string.Format 함수로 사용할 format 용 서식입니다.

 

        // 확장명 XLS (Excel 97~2003 용)
        private const string ConnectStrFrm_Excel97_2003 =
            "Provider=Microsoft.Jet.OLEDB.4.0;" +
            "Data Source=\"{0}\";" +
            "Mode=ReadWrite|Share Deny None;" +
            "Extended Properties='Excel 8.0; HDR={1}; IMEX={2}';" +
            "Persist Security Info=False";

 

        // 확장명 XLSX (Excel 2007 이상용)
        private const string ConnectStrFrm_Excel =
            "Provider=Microsoft.ACE.OLEDB.12.0;" +
            "Data Source=\"{0}\";" +
            "Mode=ReadWrite|Share Deny None;" +
            "Extended Properties='Excel 12.0; HDR={1}; IMEX={2}';" +
            "Persist Security Info=False";

 

중요한 건 Provider 가 무언지와 Extended Properties (<- 요게 Excel 파일에 대한 옵션) 입니다.

Extended 보면 HDR 과 IMEX 속성이 있는데 이것이 중요합니다.

HDR 은 Excel 의 첫번째 줄의 데이터를 Field 명으로 인식 할 것인지 여부 (YES , NO) 이고..

IMEX 는 데이터 형식을 어떻게 적용할 것인지 옵션인데, 만약 그 줄의 데이터의 표본이 정수라면

필드가 생성될 때 정수형으로 생성됩니다. 일단은 IMEX=1 로 해서 걍 무시하고 무조건 string 으로

하겠습니다. (다음 버전을 만든다면 속성까지 다 하는 방향으로..)

머.. 여기 까지 왔으면 사실 대부분 그냥 만드실 수 있겠지만.. 그래도 노가다를 줄이기 위해..

소스를 올려 놓겠습니다... (-o- ;)a

 

[ Excel 파일을 DataSet 으로.. ]

 

아.. 참고로.. Excel 파일을 DataSet 으로 바꾸는 순간만을 제외하면 Excel 파일을 사용하지

않습니다. 즉.. 메모리에 로딩한 다음 데이터가 바뀐다고 Excel 파일도 같이 수정되지는 않습니다.

읽을 때도.. 읽는 당시만, 저장할 때도 저장하는 당시만 파일에 lock 이 걸리고 그 전,후에는

엑셀 파일과 전혀~ 상관 안합니다.

 

    첨부된 소스의        

    private static DataSet OpenExcel(string FileName, bool UseHeader)

    를 참고해 주세요~

 

[ DataSet 을 Excel 파일로.. ]

 

    첨부된 소스의        

    private static bool SaveExcel(string FileName, DataSet DS, bool ExistDel, bool OldExcel)

    를 참고해 주세요~

 

첨부된 소스를 사용하실 꺼라면..

OpenExcelDB, SaveExcelDB 두개를 사용하세요..

 

나중에 소스 업데이트를 하면 OpenExcel 이랑 SaveExcel 는 내용이 변경될 것인지라..

업데이트된 소스로 엎어 쳤을 때 에러날 수 있습니다.

 

첨부된 Source 사용법은 다운 받은 소스를 Project 에 추가해 주시고...

사용할 소스의 using 절 부분에 아래줄 추가..

 

using LiAsExcelDatabase;

 

사용하는 것은 아래처럼 사용하시믄 됩니다..

 

                    DataSet DS = LiAsExcelDB.OpenExcelDB("C:\\Temp.xlsx");
                    LiAsExcelDB.SaveExcelDB("C:\\Temp_save.dat",DS);

 

질문이 있으시면.. 이 글의 답글로 남겨주시면 고맙겠습니다.



[출처] C# 에서 Excel 로 데이터 기록 및 읽기 [OleDB]|작성자 애쁠


저작자 표시 비영리 동일 조건 변경 허락
신고
Posted by blueasa

댓글을 달아 주세요

  1. 이전 댓글 더보기
  2. 2014.10.01 03:04 신고 blueasa  댓글주소  수정/삭제  댓글쓰기

    안녕하세요.
    우선 올려진 글만봐서는 파일에 대한 ConnectionString 셋팅이 잘못된건지 체크해봐야 될 것 같습니다.
    엑셀은 버전이 올라가면서 .xls와 .xlsx로 나눠졌는데요.
    두 포멧이 달라서 ConnectionString도 다릅니다.
    우선 저는 Win7 x64/VS2010에서 작업했습니다.
    소스는 대충 아래와 같이 했습니다.
    참조해 보셨으면 합니다.

    String connectionString = "";
    if (dialog.SafeFileName.Contains(".xlsx";))
    {
    connectionString = String.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=Excel 12.0", dialog.FileName);
    }
    else if (dialog.SafeFileName.Contains(".xls";))
    {
    connectionString = String.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties=Excel 8.0;", dialog.FileName);
    }

    using (OleDbConnection excelConnection = new OleDbConnection(connectionString))
    {
    DataTable dtSheets = new DataTable();

    try
    {
    excelConnection.Open();
    dtSheets = excelConnection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);

    // ToDo
    }

    dtSheets.Dispose();
    if (excelConnection != null)
    excelConnection.Close();
    }

    혹시나 싶어서 참조할만한 링크도 남깁니다.
    잘 해결 되셨으면 합니다. (_ _)
    링크1 : http://www.devpia.com/MAEUL/Contents/Detail.aspx?BoardID=17&MAEULNo=8&no=145967&ref=145964
    링크2 : http://deeplu.blogspot.kr/2012/11/microsoftjetoledb40.html

  3. 2014.12.22 00:01 신고 ronald03  댓글주소  수정/삭제  댓글쓰기

    계속 실패하고 있었는데 이 소스로 하니까 너무 잘되네요 ㅠㅠ 감사합니다~!!

  4. 2015.01.12 16:25 신고 초보  댓글주소  수정/삭제  댓글쓰기

    친절한 설명 감사드립니다 ^^ 잘 배우고 갑니다

  5. 2015.01.21 11:31 신고 구식  댓글주소  수정/삭제  댓글쓰기

    좋은내용과 친절한 설명 너무 감사드립니다
    자주 구독 하겠습니다^^ 꾸벅

  6. 2015.01.21 20:35 신고 supercrat  댓글주소  수정/삭제  댓글쓰기

    땡큐 감사합니다.
    오랜만에 엑셀파일 쓸려고하니 xlsx file에서 오류가..
    덕분에 쉽게 갑니다.

  7. 2015.01.29 00:33 신고 망고땡  댓글주소  수정/삭제  댓글쓰기

    엑셀 저장하고 불러오고..오랫만이라 잘 안되었는데...
    덕분에 잘 해결 되었습니다
    소스 오픈 감사합니다...

  8. 2015.02.09 12:43 신고 배고픈멍멍이  댓글주소  수정/삭제  댓글쓰기

    좋은 글 감사합니다 ㅎ
    막상 글들 많이 봤다고 생각했는데 여전히 못 본 좋은 글들이 많이 남아있네요!!ㅎ
    매번 좋은 글 감사합니다~ㅎ

  9. 2015.04.23 15:57 신고 서우르  댓글주소  수정/삭제  댓글쓰기

    좋은 글 감사합니다. MFC 하다가 C# 공부 중인데.. 블로그에 좋은 글들이 많아서 큰 도움 되고 있습니다.
    C#엔 참 편리하고 좋은 것들이 많네요 ㅎㅎ 자주 방문하며 도움 얻어가겠습니다.

    • 2015.04.23 19:48 신고 blueasa  댓글주소  수정/삭제

      C#이 코딩을 참 편하게 해주는 것 같아요.
      예전엔 느리다고 말이 많았었는데..
      요즘은 포팅엔진들이 잘나와서 알아서 처리해주니 좋은 세상이네요. :)
      아무튼..
      도움 되셨다니 좋네요.
      좋은 하루 되세요~

  10. 2015.08.06 12:43 신고 초보자2  댓글주소  수정/삭제  댓글쓰기

    안녕하세요 소중한 게시물 잘보고있습니다 다름이 아니라 위의 소스를 사용하지는 않았고 C#프로젝트에서 oledb를 사용하여 엑셀 테이블을 수정하고싶은데 ExecuteNonQuery() 를 할때 Operation must use an updateable query. 오류가 나서 진행이 되지 않습니다ㅠㅠ 혹시나 아시는 내용이면 조언 부탁드립니다ㅠㅠ
    string connection_str = String.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source='{0}';Mode=ReadWrite;Extended Properties='Excel 12.0;HDR=Yes;IMEX=1'", fileName);

    OleDbConnection MyConnection2 = new OleDbConnection(connection_str);
    MyConnection2.Open();
    myCommand.Connection = MyConnection2;
    sql = string.Format("INSERT INTO [{0}$] (RoomId, ItemId) VALUES(1,2);", tableName);
    myCommand.CommandText = sql;
    myCommand.ExecuteNonQuery();

    • 2015.08.07 09:40 신고 blueasa  댓글주소  수정/삭제

      안녕하세요.
      저도 오랜만에 봐서 정확히는 말씀드릴 수 없을 것 같습니다만..

      1) 우선 눈에 띄는건 connection_str이 다른데요.
      본문에 있는걸로 대체해 보시겠어요?
      // 확장명 XLS (Excel 97~2003 용)
      private const string ConnectStrFrm_Excel97_2003 =
      "Provider=Microsoft.Jet.OLEDB.4.0;" +
      "Data Source=\"{0}\";" +
      "Mode=ReadWrite|Share Deny None;" +
      "Extended Properties='Excel 8.0; HDR={1}; IMEX={2}';" +
      "Persist Security Info=False";

      // 확장명 XLSX (Excel 2007 이상용)
      private const string ConnectStrFrm_Excel =
      "Provider=Microsoft.ACE.OLEDB.12.0;" +
      "Data Source=\"{0}\";" +
      "Mode=ReadWrite|Share Deny None;" +
      "Extended Properties='Excel 12.0; HDR={1}; IMEX={2}';" +
      "Persist Security Info=False";


      2) 혹시 엑셀파일이 열려있는건 아닌가요?

      아무튼..가능하면 위 파일 소스를 한 번 보시는 걸 추천 드립니다.
      아래는 ExecuteNonQuery() 함수가 포함된 SaveExcel() 함수입니다.
      도움이 되실지 모르지만 이거라도..

      /// <summary>
      /// DataSet 을 Excel 파일로 저장한다.
      /// </summary>
      /// <param name="FileName">
      /// Excel File 명 PullPath
      /// </param>
      /// <param name="DS">
      /// Excel 로 저장할 대상 DataSet 객체.
      /// </param>
      /// <param name="ExistDel">
      /// 동일한 파일명이 있을 때 삭제 할 것인지 여부, 파일이 있고 false 면 저장안하고 그냥 false 를 리턴.
      /// </param>
      /// <param name="OldExcel">
      /// xls 형태로 저장할 것인지 여부, false 이면 xlsx 형태로 저장함.
      /// </param>
      private static bool SaveExcel(string FileName, DataSet DS, bool ExistDel, bool OldExcel)
      {
      bool result = true;

      if (File.Exists(FileName))
      if (ExistDel) File.Delete(FileName);
      else return result;

      string TempFile = FileName;
      // 파일 확장자가 xls 이나 xlsx 가 아니면 아예 파일을 안만들어서
      // 템프파일로 생성후 지정한 파일명으로 변경..

      OleDbConnection OleDBConn = null;

      try
      {
      OleDbCommand Cmd = null;
      string ConnStr = "";

      if (OldExcel)
      {
      TempFile = TempFile + ".xls";
      ConnStr = string.Format(ConnectStrFrm_Excel97_2003, TempFile, "YES", "0";);
      }
      else
      {
      TempFile = TempFile + ".xlsx";
      ConnStr = string.Format(ConnectStrFrm_Excel, TempFile, "YES", "0";);
      }

      OleDBConn = new OleDbConnection(ConnStr);
      OleDBConn.Open();

      // Create Table(s).. : 테이블 단위 처리
      foreach (DataTable DT in DS.Tables)
      {
      String TableName = DT.TableName;

      StringBuilder FldsInfo = new StringBuilder();
      StringBuilder Flds = new StringBuilder();

      // Create Field(s) String : 현재 테이블의 Field 명 생성
      foreach (DataColumn Column in DT.Columns)
      {
      if (FldsInfo.Length > 0) {
      FldsInfo.Append(",";);
      Flds.Append(",";);
      }

      FldsInfo.Append("[" + Column.ColumnName.Replace("'", "''";) + "] CHAR(255)";);
      Flds.Append( Column.ColumnName.Replace("'", "''";) );
      }

      // Table Create
      Cmd = new OleDbCommand("CREATE TABLE " + TableName + "(" + FldsInfo.ToString() + ";)", OleDBConn);
      Cmd.ExecuteNonQuery();

      // Insert Data
      foreach (DataRow DR in DT.Rows)
      {
      StringBuilder Values = new StringBuilder();
      foreach (DataColumn Column in DT.Columns)
      {
      if (Values.Length > 0) Values.Append(",";);
      Values.Append("'" + DR[Column.ColumnName].ToString().Replace("'", "''";) + "'";);
      }

      Cmd = new OleDbCommand(
      "INSERT INTO [" + TableName + "$]"+
      "(" + Flds.ToString() + ";) "+
      "VALUES (" + Values.ToString() + ";)",
      OleDBConn);
      Cmd.ExecuteNonQuery();
      }
      }
      }
      catch (Exception)
      {
      result = false;
      }
      finally
      {
      if (OleDBConn != null) OleDBConn.Close();
      try
      {
      if (File.Exists(TempFile))
      {
      File.Move(TempFile, FileName);
      }
      }
      catch { }
      }
      return result;
      }

  11. 2015.08.07 10:24 신고 초보자2  댓글주소  수정/삭제  댓글쓰기

    안녕하세요 참고만하고 가져다 쓰진않고 직접해보려 했는데 적어주신 소스로 작동시키니까 쿼리문이 잘 넘어가네요. 뭔가 빼먹은 부분이 있나봅니다ㅠㅠ잘 보고 다시해봐야겠네요 정말 감사드립니다!!ㅠㅠ

    • 2015.08.07 10:39 신고 blueasa  댓글주소  수정/삭제

      직접 해보는 건 좋은 습관이라고 생각합니다.
      그 습관 계속 지켜나가시길 바랄게요. :)
      아무튼 해결되었다니 다행이네요.
      해결후에 차근차근 비교하면서 다시 한 번 체크해 보세요~
      포스트모템 한다는 생각으로.. ^________^

  12. 2015.08.07 21:20 신고 초보자2  댓글주소  수정/삭제  댓글쓰기

    안녕하세요 민폐지만 질문 하나만 더해도 될까요 많은 힘을 얻고있습니다 감사합니다ㅠㅠ
    지금 SaveExcel을 사용하여 Excel파일을 만들어 내는데 성공하였는데,
    OldExcel = false로 주고 파일 확장자를 .xlsx로 생성하였는데도
    "파일 형식 또는 파일 확장명이 잘못되어 열수 없다"는 메세지박스가 뜹니다ㅠㅠ
    확장자를 xls로 변경하면 "파일 형식 및 확장명이 일치하지 않다"라고 나오지만 그래도 여시겠습니까?라는 선택지가 나와서 "예"를 누르면 데이터도 잘 들어가있고 열리긴합니다.

    xlsx확장명으로 잘 저장이 되셨는지 이런 문제가 있으셨는지 궁금해서 질문드렸습니다.
    긴 글 읽어주셔서 감사하고 주말 잘보내세요!!ㅋㅋ

    • 2015.08.10 10:11 신고 blueasa  댓글주소  수정/삭제

      음..
      저는 현재 잘쓰고 있습니다.
      두 확장자 다 되지만 현재는 xlsx만 쓰고 있는데요.
      예상으로는 xls로 만들어진 파일을 xlsx로 저장하려고 해서 생기는 문제는 아닌가..싶긴합니다.
      xlsx파일을 하나 새로 만들어서 테스트 해 보시겠어요?

  13. 2016.03.08 11:04 신고 초보자02  댓글주소  수정/삭제  댓글쓰기

    안녕하세요
    첨부파일 다운 받았습니다..
    좋은 소스 감사합니다.

  14. 2016.03.22 11:41 신고 학생1  댓글주소  수정/삭제  댓글쓰기

    안녕하세요..! 현재 공부하고 있는 부분에 대해서 많은 도움이 되었습니다..!
    몇 일 헤매다가 결국 해결하지 못해서 이곳에 질문을 남기는데요..!
    엑셀 첮 줄을 헤더로 사용하고 싶지 않아서 OpenExcelDB를 FALSE 값을 주면..
    EXPORT 되는 엑셀 맨 윗줄에 F1, F2,F3..해서 첫 줄이 생겨납니다...ㅜㅜ DELETE나 REMOVE를 사용하려고 해도 이 ROW에는 적용이
    안되더라구요..! 저 첫쩨줄을 업앨 수 있는 방법이 있을까요..?

    • 2016.03.22 15:07 신고 blueasa  댓글주소  수정/삭제

      안녕하세요.
      우선 어떻게 사용하려는지 모르겠습니다만, UseHeader 변수는 사용자가(자신)가 셋팅한 임의의 헤더명을 쓸거냐 엑셀 칼럼명(F1~...)을 쓸거냐일 뿐 헤더는 있어야 됩니다.
      헤더가 없으면 .db로 만들어졌을 때 찾을 방법이 없습니다.
      변수명이 있어야 해당 변수에 접근 가능하듯이요.
      헤더가 필요없다면 UseHeader를 false로 하시고, F1등이 나오는 Row는 무시하고 다음 Row부터 읽으시면 될거라 생각합니다.
      잘 해결되시길 바랄게요. :)

  15. 2016.03.23 18:26 신고 학생1  댓글주소  수정/삭제  댓글쓰기

    답변감사합니다...! 음..소스에선 create table을 하면서 excel에 쓰여지게 되있는것 같은데.. 어떤 부분에서 f1줄을 제외하고 읽을 수 있을까요..?ㅜㅜ 몇일째 안풀리네요ㅜㅜ...

    • 2016.03.25 09:30 신고 blueasa  댓글주소  수정/삭제

      안녕하세요.
      읽어들인 엑셀을 저장하시려는 건가요?
      SaveExcel을 하시는건데 첫 줄(Row)을 없애고 싶으신거라면
      소스 상
      private static bool SaveExcel(string FileName, DataSet DS, bool ExistDel, bool OldExcel)
      부분에 보시면
      foreach (DataRow DR in DT.Rows)
      하는 부분이 있습니다.
      여기에 중단점을 걸어서 디버깅 해보시면 아시겠지만 여기서 첫 줄(Row)만 건너띄는 소스를 넣으시면 될거라 생각합니다.
      확인해 보시겠어요?

  16. 2016.03.28 15:54 신고 학생1  댓글주소  수정/삭제  댓글쓰기

    안녕하세요..! 답변 감사드립니다..
    네..SaveExcel을 하는 건데..중단점을 걸어서 디버깅 했을 때 첫번재로 들어오는 row가 f1, f2 등이 나오는 row가 아니라 그 다음 데이터 row가 들어옵니다..ㅜㅜ 그래서 그쪽에서는 처리할 수가 없더라구요.. F1, F2는 CreaeTable을 했을 때의 컬럼으로 들어가는 것 같습니다..ㅜㅜ 해결할수없는 걸까요..흑흑 너무답답하네요ㅜㅜ

    • 2016.03.28 16:41 신고 blueasa  댓글주소  수정/삭제

      음..
      F1 등이 나오는 Row를 없애고 싶으셨던 것 아닌가요?
      SaveExcel 할 때 F1등의 Row를 제외하고 다음 Row부터 읽는다면 원하시는 상태가 아닌건가요?
      뭘 하고 싶으신건지 이해를 못하겠습니다. -ㅅ-;;

  17. 2016.06.27 16:25 신고 초심자  댓글주소  수정/삭제  댓글쓰기

    감사합니다. 참고하여 학습하겠습니다. 블러그 번창하시고 언제나 좋은 자료 감사합니다 ~*

  18. 2016.07.26 15:25 신고 초시자  댓글주소  수정/삭제  댓글쓰기

    좋은 정보를 공유해 주셔서 감사드립니다
    초심자로써 지푸라기라도 잡는 심정으로 인터넷 서핑중 만나게 되어서 기대와 희망을 갖고 열공해 보겠습니다

    • 2016.07.31 19:44 신고 blueasa  댓글주소  수정/삭제

      리플 감사합니다.
      모르는 걸 배우는 게 지겹고 힘들긴 하지만 해냈을 때 뿌듯함으로 살아가는 게 계속 하는 이유이지 않나 싶네요.
      힘들겠지만 즐겁게 개발하시길 바랄게요. :)

  19. 2017.03.02 17:09 신고 두둥  댓글주소  수정/삭제  댓글쓰기

    관련 프로젝트 진행중인데 좋은 정보 감사합니다.

    한가지 궁금한점이 있는데 엑셀파일 버전(2013, 2014, 등등)에 따라서 못 읽어 올 수 있는 경우가 생길수 있나요?

    • 2017.03.02 17:13 신고 blueasa  댓글주소  수정/삭제

      안녕하세요.
      본문에 보시면

      // 확장명 XLS (Excel 97~2003 용)
      // 확장명 XLSX (Excel 2007 이상용)

      위와 같은 주석이 있는데요.
      엑셀은 버전에 따라 xls/xlsx로 구분되는데요. 그에 맞게 만들어져 있다면 상위 호환도 되기때문에 알아서 처리 되는걸로 압니다.

      좋은 하루 되세요. :)

      P.s. 저는 엑셀 2013 버전 씁니다.

  20. 2017.03.16 15:07 신고 애증의 닷넷  댓글주소  수정/삭제  댓글쓰기

    윈폼 개발중 해당 자료를 보게되서 슬적 사용하려 합니다.
    감사합니다 ㅎㅎ

  21. 2017.04.14 18:19 신고 jazz  댓글주소  수정/삭제  댓글쓰기

    안녕하세요, 올려주신 소스를 이용해서 잘 사용하고 있습니다 . 이점에 너무 감사합니다. 문의항것이 있는데요 엑셀파링 Open중에 IE가 다운되더라구요 그래서 봤더니 용량이 적은 파일은 정상 적인데 용량이 큰 엑셀은 않되는같더라구요 해결할 방법이 없을까요?
    엑셀 파일의 용량이 5.1MB이고 엑셀행수는 1만 정도 되구요 컬럼은 'DH' 한 112 컬럼 됩니다. 꼭 좀 부탁 드립니다.

    • 2017.04.18 14:48 신고 blueasa  댓글주소  수정/삭제

      안녕하세요.
      요즘 바빠서 늦게 답변 드리게 되네요. 죄송합니다.
      말씀해주신 내용으로 예상되는 부분은 처리할 데이터 양이 많아서 for(or foreach)문에서 너무 오래 잡혀있어서 (응답없음) 등으로 빠지는 문제가 나오는 게 아닐까 싶은데요.
      이 문제라면 비동기 처리 방식으로 바꿔야 되지 않나 싶긴하네요.
      C#이니 BackgroundWorker를 써보는 게 어떨까 싶습니다. :)

      [BackgroundWorker 참조] http://blueasa.tistory.com/1260


링크 : http://istudy.tistory.com/75

저작자 표시 비영리 동일 조건 변경 허락
신고
Posted by blueasa

댓글을 달아 주세요




저작자 표시 비영리 동일 조건 변경 허락
신고

'Programming > JSON' 카테고리의 다른 글

[펌] Excel 데이터를 Json으로 변환하기  (0) 2016.08.08
[펌] Unity에서 Json 사용 시 고려할 라이브러리.  (0) 2016.08.08
[펌] SimpleJSON  (0) 2016.08.08
Convert Excel to JSON  (0) 2014.03.04
Posted by blueasa
TAG Excel, JSON

댓글을 달아 주세요

원본 : http://www.connectionstrings.com/excel



Connection strings for Excel

Developers Community

Find solutions and post questions regarding connection string related issues.

Forum for Excel

Microsoft Jet OLE DB 4.0

TYPE OLE DB Provider
USAGE Provider=Microsoft.Jet.OLEDB.4.0
MANUFACTURER Microsoft

Standard

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\MyExcel.xls;
Extended Properties="Excel 8.0;HDR=Yes;IMEX=1";
 

Standard alternative

Try this one if the one above is not working. Some reports that Excel 2003 need the exta OLEDB; section in the beginning of the string.

OLEDB;Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\MyExcel.xls;
Extended Properties="Excel 8.0;HDR=Yes;IMEX=1";

Important note!
The quota " in the string needs to be escaped using your language specific escape syntax.
c#, c++   \"
VB6, VBScript   ""
xml (web.config etc)   &quot;
or maybe use a single quota '.

"HDR=Yes;" indicates that the first row contains columnnames, not data. "HDR=No;" indicates the opposite.

"IMEX=1;" tells the driver to always read "intermixed" (numbers, dates, strings etc) data columns as text. Note that this option might affect excel sheet write access negative.

SQL syntax "SELECT [Column Name One], [Column Name Two] FROM [Sheet One$]". I.e. excel worksheet name followed by a "$" and wrapped in "[" "]" brackets.

Check out the [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Excel] located registry REG_DWORD "TypeGuessRows". That's the key to not letting Excel use only the first 8 rows to guess the columns data type. Set this value to 0 to scan all rows. This might hurt performance. Please also note that adding the IMEX=1 option might cause the IMEX feature to set in after just 8 rows. Use IMEX=0 instead to be sure to force the registry TypeGuessRows=0 (scan all rows) to work.

If the Excel workbook is protected by a password, you cannot open it for data access, even by supplying the correct password with your connection string. If you try, you receive the following error message: "Could not decrypt file."

A workaround for the "could not decrypt file" problem

 
 

ACE OLEDB 12.0

TYPE OLE DB Provider
USAGE Provider=Microsoft.ACE.OLEDB.12.0
MANUFACTURER Microsoft

Excel 97-2003 Xls files with ACE OLEDB 12.0

You can use this connection string to use the Office 2007 OLEDB driver (ACE 12.0) to connect to older 97-2003 Excel workbooks.

Provider=Microsoft.ACE.OLEDB.12.0;Data Source=c:\myFolder\myOldExcelFile.xls;
Extended Properties="Excel 8.0;HDR=YES";

"HDR=Yes;" indicates that the first row contains columnnames, not data. "HDR=No;" indicates the opposite.

 
 

.NET Framework Data Provider for OLE DB

TYPE .NET Framework Wrapper Class Library
USAGE System.Data.OleDb.OleDbConnection
MANUFACTURER Microsoft

Use an OLE DB provider from .NET

Provider=any oledb provider's name;OledbKey1=someValue;OledbKey2=someValue;

See the respective OLEDB provider's connection strings options. The .net OleDbConnection will just pass on the connection string to the specified OLEDB provider. Read more here.

 
 

Microsoft Excel ODBC Driver

TYPE ODBC Driver
USAGE Driver={Microsoft Excel Driver (*.xls)}
MANUFACTURER Microsoft

Standard

Driver={Microsoft Excel Driver (*.xls)};DriverId=790;Dbq=C:\MyExcel.xls;
DefaultDir=c:\mypath;

SQL syntax "SELECT [Column Name One], [Column Name Two] FROM [Sheet One$]". I.e. excel worksheet name followed by a "$" and wrapped in "[" "]" brackets.

 
 

Specify ReadOnly

[Microsoft][ODBC Excel Driver] Operation must use an updateable query. Use this connection string to avoid the error.

Driver={Microsoft Excel Driver (*.xls)};Dbq=C:\MyExcel.xls;ReadOnly=0;

ReadOnly = 0 specifies the connection to be updateable.

 
 

Microsoft Excel 2007 ODBC Driver

TYPE ODBC Driver
USAGE Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)
MANUFACTURER Microsoft

Standard

Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};DBQ=C:\MyExcel.xls;
 
 

.NET Framework Data Provider for ODBC

TYPE .NET Framework Wrapper Class Library
USAGE System.Data.Odbc.OdbcConnection
MANUFACTURER Microsoft

Use an ODBC driver from .NET

Driver={any odbc driver's name};OdbcKey1=someValue;OdbcKey2=someValue;

See the respective ODBC driver's connection strings options. The .net OdbcConnection will just pass on the connection string to the specified ODBC driver. Read more here.

 
 

.NET xlReader for Microsoft Excel

TYPE .NET Framework Class Library
USAGE VM.xPort.ExcelClient.ExcelConnection
MANUFACTURER xPortTools

Excel file with header row

Data Source =c:\myExcelFile.xls;HDR=yes;Format=xls;
 
 

Excel file without header row

Data Source =c:\myExcelFile.xls;HDR=no;Format=xls;
 
 


저작자 표시 비영리 동일 조건 변경 허락
신고
Posted by blueasa
TAG Excel, odbc, OLEDB

댓글을 달아 주세요



링크 : http://exceldatareader.codeplex.com/

저작자 표시 비영리 동일 조건 변경 허락
신고
Posted by blueasa

댓글을 달아 주세요

사업부 사람들이 엑셀 파일(xlsx)의 버전 관리를 힘들어 해서 관련 도구를 찾아보았다.

프리웨어로 괜찮아 보이는 xdocdiff 라는 툴이 있었고 이것은 TortoiseSVN과 연계해서 사용하도록 되어 있는 도구였다. 그리고, 이 툴을 WinMerge와 같이 사용할 수 있도록 하는 플러그인 xdocdiff WinMerge Plugin를 찾아서 설치하니 그럭저럭 쓸만했다.

플러그인을 설치하는 방법은 xdocdiff 를 실행경로(또는 WinMerge와 동일한 폴더)에 두고, xdocdiff winmerge plugin을 WinMerge 폴더에 설치한다. (MergePlugin 이 WinMerge 폴더 바로 아래에 위치하도록 해야한다.)
그리고, WinMerge를 실행시켜 플러그인을 활성화 시키면 된다.


출처 : http://rskr.cafe24.com/blog/?p=715



WinMerge에서는 xdocdiff WinMerge Plugin만 받아서 아래 설치 순서대로 진행하자.


Install

Before installing:

Install WinMerge

Select [Plugins]-[Automatic Unpacking].


1. Unzip file.

2. Copy xdoc2txt.exe and zlib.dll to WinMerge program folder. (Where WinMerge.exe is located)

3. Copy amb_xdocdiffPlugin.dll to sub folder "MergePlugins".



Musee d'Dimanche

http://freemind.s57.xrea.com/

저작자 표시 비영리 동일 조건 변경 허락
신고

'Tip & Tech > TortoiseSVN' 카테고리의 다른 글

excel, word, ppt 가 동일한지 판별하기  (0) 2013.04.26
TortoiseSVN tag/branch = copy  (0) 2012.04.18
TortoiseSVN - branch, tag, merge, switch  (0) 2012.04.18
TortoiseSVN Beginner Guide  (0) 2012.04.18
Posted by blueasa

댓글을 달아 주세요

[중요]

우선..창 분리하기 전에 복구하기 위해 원래 레지스트리 백업을 권장합니다.

(귀찮으시다면 엑셀을 재설치 하셔도 됩니다.)

복구 문제때문에 이래저래 알아보니 복구 reg를 뽑아도 그 안에 key까지 저장돼 있기 때문에 다른 컴퓨터에선 제대로 실행이 되지 않습니다.

아쉽지만 백업을 직접 해주셔야 할 것 같습니다. =_=;


레지스트리 백업 후, 아래 멀티창 레지스트리를 실행해서 창분리를 하시기 바랍니다.



[엑셀 레지스트리 백업 방법]

1. 시작-실행-regedit

2. 'HKEY_CLASSES_ROOT\Excel.Sheet.12\shell\Open' 을 찾아갑니다.

3. 아래 스샷과 같이 내보내기를 합니다.

4. 'HKEY_CLASSES_ROOT\Excel.Sheet.8\shell\Open' 을 찾아갑니다.

5. 아래 스샷과 같이 내보내기를 합니다.

6. 'HKEY_CLASSES_ROOT\Excel.SheetMacroEnabled.12\shell\Open' 을 찾아갑니다.

7. 아래 스샷과 같이 내보내기를 합니다.

8. 위의 순서대로 하시면 총 3개의 reg 파일이 생깁니다.

    이 파일은 원래대로(멀티창이 안되도록) 복원하는 파일이니 잘 보관해 두시기 바랍니다.





[창 분리 레지스트리]

Excel2007_MultiWindow_Patch(WinXP_Win7_32bit_64bit).zip




직접 만든 엑셀 창 여러개 띄우는 엑셀 파일 입니다.


XP, Win7 두가지 OS, 32bit/64bit 에서 테스트 했습니다.


압축 파일 안에서 필요한 레지스트리 파일을 더블클릭하셔서 등록해 주시면 됩니다.


저작자 표시 비영리 동일 조건 변경 허락
신고
Posted by blueasa

댓글을 달아 주세요

  1. 2013.07.03 14:23 신고  댓글주소  수정/삭제  댓글쓰기

    이거 해제하는 레지스트리는 없나요 ㅠㅠ
    이동복사가 안되요

    • 2013.07.03 23:32 신고 blueasa  댓글주소  수정/삭제

      안녕하세요.
      이동복사가 무엇을 뜻하는 지 잘 모르겠네요.
      전 불편함 없이 잘 쓰고 있어서..
      아무튼 저때문에 불편함을 드려서 죄송합니다.
      요청하신 원래대로 복원하는 레지스트리 파일을 추가 했습니다.
      문제가 잘 해결 되시길 바랍니다. :)

      P.s. 창 분리 레지는 약간 다를 뿐입니다. 직접 해보고 싶으시거나, 어떤 것이 다른지 알고 싶으시면 아래 링크로 가보세요.

      링크 : http://blueasa.tistory.com/690

  2. 2013.07.08 17:29 신고 피부만흑인  댓글주소  수정/삭제  댓글쓰기

    엑셀2010은 안먹히는 건가요?

    • 2013.07.08 21:07 신고 blueasa  댓글주소  수정/삭제

      아..
      죄송합니다 제가 엑셀2010은 안써서 거기까진 확인을 못해봤네요.
      아래 링크에 엑셀2010 창 분리하는 방법이 있으니 참고해보세요.
      좋은 하루 되시길 바랍니다. :)

      링크 : http://answers.microsoft.com/ko-kr/office/forum/office_2010-excel/%EC%97%91%EC%85%802010%EC%97%90%EC%84%9C/87d5d69b-d94d-e011-8dfc-68b599b31bf5

  3. 2013.11.05 15:20 신고 처로  댓글주소  수정/삭제  댓글쓰기

    좋은 자료 감사합니다~

  4. 2014.01.14 09:32 신고 으라차차  댓글주소  수정/삭제  댓글쓰기

    좋은 글 감사합니다.
    이걸로 복원할 경우 windows xp에서는 원활한 복구가 실행되지 않네요...
    xlsx 파일 열기 시 이미 열려 있다는 표시가 계속 뜨더라구요...
    그래서 일전에 창 분리 하시는 방법의 역순으로 시도를 해보니 맨 끝에 /e 만 붙어야 하는데 자동적으로 /e %1이 생성되더라구요...
    올려주신 레지스트리로 복원을 해도 마찬가지였구요...
    해결 방법이 있을까요??

    • 2014.01.14 11:24 신고 blueasa  댓글주소  수정/삭제

      안녕하세요.
      우선 죄송합니다.
      제가 Win7 64bit라서 win7에서는 복구 테스트가 됐습니다만, WinXP에선 테스트를 못해봤습니다.
      혹시 32/64bit 에 맞는 파일을 실행하신건지 한 번 확인해 보세요.
      자신의 OS와 Bit에 맞는 파일 3개를 모두 등록해야 합니다.
      그래도 제대로 안되신다면 죄송하지만 엑셀을 지우고 다시 까시면 복원됩니다..=_=;
      우선 위의방법대로도 안되시는데 급하시다면 재설치를 하셔야 할 것 같습니다. (_ _)

  5. 2014.01.14 15:26 신고 으라차차  댓글주소  수정/삭제  댓글쓰기

    레지스트리 OS와 bit에 맞게 실행을 하였습니다...
    그래도 여전하더라구요... 그래서 다시 설치했습니다~^^;;;

    아.. 그리고 창 분리를 한 후 수식을 입력할 때 다른 창에 있는 데이터는 참조가 안되더라구요.... 원래 그런건지 아니면 버전에 따라 틀린건지 아리송하네요...
    아무튼 좋은 자료 다시 한 번 감사 드립니다.^_^

    • 2014.01.14 16:23 신고 blueasa  댓글주소  수정/삭제

      죄송합니다.
      XP 추가는 잘되길래 같을 줄 알았는데..저도 테스트해봐야 알 것 같네요.
      조만간 XP도 테스트해서 올리겠습니다..;;
      올려진 파일은 Win7 전용으로 바꿔야 될 것 같네요.
      아무튼 좋은 하루 되세요. :)

  6. 2014.02.04 11:39 신고 DAE  댓글주소  수정/삭제  댓글쓰기

    윈도우7 64bit인데 멀티창 원래대로 복원하려고 하는데 안먹히네요...ㅠㅠ

    • 2014.02.04 23:35 신고 blueasa  댓글주소  수정/삭제

      죄송합니다.
      이래저래 알아보니 현재로선 레지로 복원시키기는 좀 힘들 것 같습니다. =_=;
      본문에서 복구 레지스트리 파일을 삭제하고, 레지 백업을 우선하는 방식으로 바꿨습니다.
      DAE님께는 죄송하지만 엑셀을 재설치를 부탁드립니다. (_ _);;
      다른 방법을 찾게되면 다시 수정하겠습니다. 죄송해요.. =_=;;;;

  7. 2014.04.02 17:39 신고 SER  댓글주소  수정/삭제  댓글쓰기

    어디로 내보내라는,,

    • 2014.04.03 00:03 신고 blueasa  댓글주소  수정/삭제

      안녕하세요.
      '내보내기' 메뉴를 말씀하시는 거라면, '내보내기'를 눌러보시면 .reg 파일을 저장할 수 있게 탐색기가 저장할 위치를 선택하라고 뜹니다.
      위의 순서대로 '내보내기'를 누르신 후, 원하시는 곳에 저장하시면 됩니다. :)

  8. 2014.07.14 14:48 신고 sd  댓글주소  수정/삭제  댓글쓰기

    감사합니다+_+/

    • 2014.07.14 16:40 신고 blueasa  댓글주소  수정/삭제

      리플 감사합니다.
      혹시나 되돌릴 생각이 있으시다면 백업은 꼭 하고 사용하시는 걸 추천드려요~
      아쉽게도 백업을 안하셨다면 지운 후 재설치 하시면 됩니다. =_=

  9. 2015.05.06 22:29 신고 최동훈  댓글주소  수정/삭제  댓글쓰기

    윈7 64비트인데 이것저것 검색해봐도 안되다가, 님 레지파일 등록하니깐 잘 되네요... 3가지 다 등록해야지 잘 되네요... 감사합니다~~

  10. 2015.05.21 09:25 신고 민병진  댓글주소  수정/삭제  댓글쓰기

    레지스트 뭘 수정한거죠 복원을 하고 싶은데
    어떤 부분이 수정된건질 몰라 복원을 못하고 있어요 ㅠ
    복사할때 클립보드에 있는게 붙여넣기가 불가합니다.....

    • 2015.05.21 14:54 신고 blueasa  댓글주소  수정/삭제

      안녕하세요.
      위에 등록된 레지스트리 파일을 열어보면 어디가 수정 됐는지는 확인할 수 있습니다만, 레지스트리쪽을 잘 모르신다면 위험하게 수정하지 마시고 깔끔하게 엑셀(MS 오피스)을 지웠다가 다시 설치하는 걸 추천합니다.
      잘 해결되시길 바랄게요. :)

  11. 2016.11.09 11:22 신고 최민정  댓글주소  수정/삭제  댓글쓰기

    두개로 잘 쓰고 있었는데, 어느순간부터 다른창으로 복사,붙여넣기가 안돼요ㅠㅠ 붙여넣기하면 그냥 공백으로만 와요..어떻게 해야할까요ㅠㅠ
    다시 복구하는 레지스트리 파일을 못 찾겠어용..

    • 2016.11.09 16:31 신고 blueasa  댓글주소  수정/삭제

      안녕하세요.
      위의 다른 분들 사례로 봐선 복구보단 엑셀을 지우고 새로 재설치 하는 게 깔끔 할 것 같습니다.
      재설치를 한 번 해보세요. :)