header-img
Info :
728x90

폼 λ””μžμΈ

ⓐ Textbox : (Name) txtInput Readonly true
β“‘ Button : (Name) btnUpload Text file 선택
β“’ Checkbox : (Name) chkSheetYn Checked True
β““ Textbox : (Name) txtSheetS Readonly True
β“” Button : (Name) btnConvert Text Excel to PDF λ³€ν™˜

μ†ŒμŠ€ μ½”λ“œ

using System;
using System.Windows.Forms;
using Excel = Microsoft.Office.Interop.Excel;

/* 1. excel νŒŒμΌμ„ λΆˆλŸ¬μ™€ 
 * 2. ν•΄λ‹Ή 경둜+ 이름에 pdf λ₯Ό 뢙인 μ΄λ¦„μœΌλ‘œ 
 * 3. μ €μž₯ν•œλ‹€.
 */
namespace exceltopdf
{
    public partial class Form1 : Form
    {

        // input 파일의 경둜λ₯Ό μ €μž₯ν•΄λ‘˜ λ³€μˆ˜ 생성 ν›„ μ΄ˆκΈ°ν™”
        string file_path = null;

        public Form1()
        {
            InitializeComponent();
        }

        private void btnUpload_Click(object sender, EventArgs e)
        {
            txtInput.Clear();
            file_path = null;
            // openFileDialog의 μ‹œμž‘ μœ„μΉ˜λ₯Ό C:\\ 으둜 μ„€μ •
            openFileDialog1.InitialDirectory = "C:\\";
            // openFileDialog 검색 μ‹œ μ—‘μ…€ 파일만 κ²€μƒ‰ν•˜λ„λ‘ 지정해둔닀. 
            openFileDialog1.Filter = "μ—‘μ…€ 파일 (*.xlsx)|*.xlsx|μ—‘μ…€ 파일 (*.xls)|*.xls";

            // 파일 μ—° 것 확인 μ§„ν–‰ν•˜μ—¬ κ²°κ³Ό 값이 맞으면 μ‹œν–‰ν•œλ‹€.
            if (openFileDialog1.ShowDialog() == DialogResult.OK)
            {
                // νŒŒμΌμ„ νƒκΈ°μ—μ„œ κ°€μ Έμ˜¨ 파일 경둜λ₯Ό file_path λ³€μˆ˜μ— μ €μž₯ν•΄λ‘”λ‹€.
                file_path = openFileDialog1.FileName;
                // txtinput 에 파일 이름 보여주기 μœ„ν•œ μ½”λ“œ
                txtInput.Text = file_path.Split('\\')[file_path.Split('\\').Length - 1];
            }
        }

        private void btnConvert_Click(object sender, EventArgs e)
        {
            if (file_path != null)
            {
                // pdf νŒŒμΌμ„ μ €μž₯ν•  경둜λ₯Ό 지정해쀀닀.
                // ν˜„μž¬λŠ” 같은 κ²½λ‘œμ— 같은 파일λͺ… μ΄λ¦„μ˜ ν˜•νƒœλ‘œ ν™•μž₯자만 λ³€κ²½λ˜μ–΄ μ €μž₯λœλ‹€.
                string export_path = file_path.Split('.')[0] + ".pdf";

                Console.WriteLine(txtSheetS.Text);
                Console.WriteLine(txtSheetE.Text);

                // μ—‘μ…€ 뢈러옴
                Excel.Application excel = new Excel.Application();
                // μ—‘μ…€ ν™”λ©΄ λ„μš°λŠ” μ˜΅μ…˜. false둜 λ„μš°μ§€ μ•ŠλŠ”λ‹€.
                excel.Visible = false;
                // μœ„μ—μ„œ 뢈러온 엑셀을 μ—°λ‹€. open(μ—΄κ³  싢은 파일 경둜, 파일 μ˜€ν”ˆ μ‹œ ReadOnly μ—¬λΆ€, Password κ±Έλ €μžˆμ„ μ‹œ 확인 메세지창 λ„μšΈκ±΄μ§€)
                Excel.Workbook workbook = excel.Workbooks.Open(file_path, true, true);

                Console.WriteLine("Number of sheets: " +workbook.Worksheets.Count);

                // μ²΄ν¬λ°•μŠ€ 체크 μ—¬λΆ€ 확인 (true) -- 전체 λ³€ν™˜ μ‹œ μ „μ²΄μ‹œνŠΈ excel to pdf μ‹€ν–‰
                if (chkSheetYN.Checked)
                {
                    // μœ„μ—μ„œ μ—° 엑셀을 pdf둜 λ³€ν™˜ν•˜μ—¬ μ €μž₯ν•œλ‹€.
                    workbook.ExportAsFixedFormat(Microsoft.Office.Interop.Excel.XlFixedFormatType.xlTypePDF, export_path, Microsoft.Office.Interop.Excel.XlFixedFormatQuality.xlQualityStandard, true, true, Type.Missing, Type.Missing, true, Type.Missing);
                    // μ‹€ν–‰ν–ˆλ˜ λͺ¨λ“  νŒŒμΌλ“€μ„ λ‹«λŠ”λ‹€.
                    workbook.Close(false);
                    excel.Quit();

                    // μ™„λ£Œ μ‹œ νŒλ³„μ„ μœ„ν•΄ μ™„λ£Œ 메세지λ₯Ό λ„μ›Œμ€€λ‹€.
                    MessageBox.Show(file_path.Split('\\')[file_path.Split('\\').Length - 1].Split('.')[0] + " λ³€ν™˜ μ™„λ£Œ");
                }
                // μ²΄ν¬λ°•μŠ€ 체크 μ—¬λΆ€ 확인 (false) -- ν…μŠ€νŠΈλ°•μŠ€ 숫자 ν™•μΈν•΄μ„œ ν•΄λ‹Ή μ‹œνŠΈλ§Œ excel to Pdf μ‹€ν–‰
                else {
                    // μ‹œνŠΈκ°œμˆ˜λ³΄λ‹€ 큰 μ‹œνŠΈ 번호λ₯Ό μž…λ ₯ν–ˆμ„ λ•Œ κ·Έλƒ₯ 뱉어버림
                    if (Int32.Parse(txtSheetS.Text) > workbook.Worksheets.Count)
                    {
                        MessageBox.Show("1)μ‹œνŠΈ 개수 2)λ³€ν™˜ν•˜κΈ°λ₯Ό μ›ν•˜λŠ” μ‹œνŠΈμ˜ 번호 확인.");
                    }
                    else
                    {
                        // μž…λ ₯ 받은 숫자 μ΄μš©ν•˜μ—¬ excel to pdf μ‹€ν–‰
                        Excel.Worksheet worksheet1 = workbook.Worksheets.Item[Int32.Parse(txtSheetS.Text)];
                        worksheet1.ExportAsFixedFormat(Microsoft.Office.Interop.Excel.XlFixedFormatType.xlTypePDF, export_path, Microsoft.Office.Interop.Excel.XlFixedFormatQuality.xlQualityStandard, true, true, Type.Missing, Type.Missing, true, Type.Missing);
                        workbook.Close(false);
                        excel.Quit();

                        // μ™„λ£Œ μ‹œ νŒλ³„μ„ μœ„ν•΄ μ™„λ£Œ 메세지λ₯Ό λ„μ›Œμ€€λ‹€.
                        MessageBox.Show(file_path.Split('\\')[file_path.Split('\\').Length - 1].Split('.')[0] +" " + " λ³€ν™˜ μ™„λ£Œ");
                    }
                }
            }
            else
            {            
                // file이 없을 λ•Œ λ²„νŠΌ ν΄λ¦­ν•˜λ©΄ λ™μž‘x : μ—λŸ¬ 메세지 ν˜•νƒœλ‘œ μ œκ³΅ν•œλ‹€.
                MessageBox.Show("λ¨Όμ € Input file을 μ§€μ •ν•΄μ£Όμ„Έμš”.");
            }
        }

        private void chkSheetYN_CheckedChanged(object sender, EventArgs e)
        {
            if (chkSheetYN.Checked)
            {
                // 체크가 λ˜μ–΄μžˆμœΌλ©΄ μ‹œνŠΈ μ μ–΄μ£ΌλŠ” textbox μ΄ˆκΈ°ν™” + readonly
                txtSheetS.Text = null;
                txtSheetS.ReadOnly = true;
            }
            else
            {
                // 체크가 μ•ˆλ˜μ–΄ 있으면 textbox μž‘μ„± κ°€λŠ₯ν•˜λ„λ‘ 
                txtSheetS.ReadOnly = false;
            }
        }
    }
}

기타 κΈ°λŠ₯ 섀정이 ν•„μš”ν•˜λ‹€λ©΄
Worksheet.ExportAsFixedFormat λ©”μ„œλ“œ 곡식 docs
λ₯Ό 보고 λ³€ν˜• μ‹œμΌœλ³΄λ„λ‘ ν•˜μž.

κ²°κ³Όλ¬Ό

νŠΉμ§• 및 μ‹œμ‚¬μ 

  1. (아직은) 1개의 input 만 κ°€λŠ₯ν•˜λ‹€. - 배열을 μ‚¬μš©ν•˜μ—¬ μ—¬λŸ¬κ°œ input μ—¬λŸ¬κ°œ output 을 ν•˜λ„λ‘ ν•΄μ•Όκ² λ‹€
  2. 같은 μ΄λ¦„μœΌλ‘œ μ €μž₯λœλ‹€. μ €μž₯경둜λ₯Ό 지정할 수 μžˆλ„λ‘ ν•˜λŠ” 것은 μ–΄λ–¨κΉŒ?
  3. κ·Έλƒ₯ λͺ¨λ“  μ‹œνŠΈλ₯Ό ν•œλ²ˆμ— pdfν™” μ‹œν‚€κ±°λ‚˜ μ§€μ •λœ μ‹œνŠΈ ν•œκ°œλ§Œ 보낸닀.. λ²”μœ„ μ§€μ •ν•˜μ—¬ pdf ν™” ν•˜λŠ” 방법 ? 

인터넷 κ²€μƒ‰ν•΄λ³΄λ‹ˆ μ‰¬μ›Œλ³΄μ΄λŠ” 방법듀은 κ°€μ Έλ‹€μ“°λ©΄ λ°”λ‘œ 될 것 처럼 λͺ¨μ–‘μƒˆλ₯Ό ν•΄λ‘κ³ λŠ”
λ‹€ 유료결제λ₯Ό ν•˜λΌκ³  ν•˜λ”λΌ πŸ’ΈπŸ’ΈπŸ’ΈπŸ’ΈπŸ’Έ

μœ„μ˜ μ‹œμ‚¬μ λ“€μ„ μˆ˜μ •ν•˜κ²Œ 되면 κ²Œμ‹œκΈ€μ„ μˆ˜μ •ν•˜μ—¬ λ³΄μ™„ν•˜λ„λ‘ 해보겠닀. 

 
728x90
더보기
FRONTEND/C#