Exemplo n.º 1
0
        private void ReadCSV()
        {
            //CSVファイル選択し、選択されなければ終了。
            if (this.openFileCSV.ShowDialog() != DialogResult.OK)
            {
                return;
            }

            Address_DS ads     = new Address_DS();
            Address_DS errords = new Address_DS();

            //CSVファイルの読み込み
            using (TextFieldParser parser = new TextFieldParser(this.openFileCSV.FileName, System.Text.Encoding.GetEncoding("Shift-Jis")))
            {
                //CSVの区切り文字をセット
                parser.SetDelimiters(",");

                //1行目が存在するかチェック
                if (parser.EndOfData == true)
                {
                    //存在しない場合はメッセージボックスを表示して終了
                    MessageBox.Show(this, "読み込み可能な行がありません。");
                    return;
                }

                //1行目の読み込み
                ArrayList columnList = null;
                string[]  firstRows  = null;
                try
                {
                    firstRows  = parser.ReadFields();
                    columnList = new ArrayList(firstRows);
                }
                catch (MalformedLineException)
                {
                    //読み込み不可能な行であれば、終了する。
                    //存在しない場合はメッセージボックスを表示して終了
                    MessageBox.Show(this,
                                    "1行目のフォーマットがおかしいため、処理を続行できません。" + Environment.NewLine +
                                    "Excelでファイルを正しく開けるか確認してください。");
                    return;
                }

                using (ColumnSelectForm f = new ColumnSelectForm(columnList))
                {
                    //行選択画面を表示し、ユーザに読み込む行を指定してもらう
                    if (f.ShowDialog() != DialogResult.OK)
                    {
                        //選択されなければ、空のデータセットを返す。
                        return;
                    }

                    //1行目を読み込むならば、その行をデータセットに格納。
                    if (f.ReadFirstRow == true)
                    {
                        Address_DS.AddressRow aRow = ads.Address.NewAddressRow();
                        aRow.MailAddress = firstRows[f.SelectColumnIndex];
                        ads.Address.AddAddressRow(aRow);
                    }

                    //ユーザが指定した列を読み込む
                    while (parser.EndOfData == false)
                    {
                        try
                        {
                            //NULLや空文字列・すでに取り込まれた行を取り込まない。
                            string mailAddr = parser.ReadFields()[f.SelectColumnIndex];
                            if ((string.IsNullOrEmpty(mailAddr) == false) && (ads.Address.FindByMailAddress(mailAddr) == null))
                            {
                                if (TKMP.Writer.MailAddressCollection.IsAddressPattern(mailAddr) == true)
                                {
                                    Address_DS.AddressRow aRow = ads.Address.NewAddressRow();
                                    aRow.MailAddress = mailAddr;
                                    ads.Address.AddAddressRow(aRow);
                                }
                                else
                                {
                                    //メールアドレス形式でないものは、エラーリストに保存
                                    Address_DS.AddressRow aeRow = errords.Address.NewAddressRow();
                                    aeRow.MailAddress = mailAddr;
                                    errords.Address.AddAddressRow(aeRow);
                                }
                            }
                        }
                        catch
                        {
                            //行の解析に失敗したらその行をエラーリストに保存
                            Address_DS.AddressRow aeRow = errords.Address.NewAddressRow();
                            aeRow.MailAddress = string.Format("({0}行目は読み込みエラーです)", parser.ErrorLineNumber.ToString());
                            errords.Address.AddAddressRow(aeRow);
                        }
                    }
                }
            }

            //CSVファイルを読み取る。
            this._addressds.Merge(ads);

            //エラー情報をセットする。
            this._errorForm.ErrorList = errords;
        }
Exemplo n.º 2
0
        /// <summary>
        /// �w�肳�ꂽExcel�t�@�C����ǂݍ���
        /// </summary>
        private void ReadExcel()
        {
            //Excel�t�@�C���I����A�I�����Ȃ���ΏI���B
            if (this.openFileExcel.ShowDialog() != DialogResult.OK)
            {
                return;
            }

            Address_DS ads = new Address_DS();
            Address_DS errords = new Address_DS();

            // ExcelWorkBook�I�[�v��
            ExcelWorkBook wBook = new ExcelWorkBook();
            wBook.Open(this.openFileExcel.FileName);
            try
            {
                //�P�s�ڂ�ǂݍ���
                ExcelWorkSheet sheet = wBook.WorkSheets[0];
                ArrayList columnList = new ArrayList();
                for (int col = sheet.FirstColumn; col <= sheet.LastColumn; col++)
                {
                    if (sheet.Cells[0, col].Value == null)
                    {
                        continue;
                    }
                    columnList.Add(sheet.Cells[0, col].Value);
                }

                //�ǂݍ��ݍs���Ȃ��ꍇ�͋�̃f�[�^�Z�b�g��Ԃ��B
                if (columnList.Count == 0)
                {
                    MessageBox.Show(this, "�ǂݍ��݉”\�ȍs������܂���B");
                    return;
                }

                using (ColumnSelectForm f = new ColumnSelectForm(columnList))
                {
                    //�s�I���ʂ�\�����A���[�U�ɓǂݍ��ލs��w�肵�Ă�炤
                    if (f.ShowDialog() != DialogResult.OK)
                    {
                        //�I�����Ȃ���΁A��̃f�[�^�Z�b�g��Ԃ��B
                        return ;
                    }

                    int readStartRowIndex = 0;
                    if (f.ReadFirstRow == true) readStartRowIndex = 0;
                    else readStartRowIndex = 1;

                    //���[�U���w�肵�����ǂݍ���
                    for (int row = readStartRowIndex; row <= sheet.LastRow; row++)
                    {
                        //NULL�₷�łɎ�荞�܂ꂽ���[���A�h���X�͂͂����B
                        if (!((sheet.Cells[row, f.SelectColumnIndex].Value == null) ||
                            ads.Address.FindByMailAddress(sheet.Cells[row, f.SelectColumnIndex].Value.ToString()) != null))
                        {
                            string mailAddr = sheet.Cells[row, f.SelectColumnIndex].Value.ToString();
                            //���[���A�h���X�`���̃A�h���X�̂ݓo�^
                            if (TKMP.Writer.MailAddressCollection.IsAddressPattern(mailAddr) == true)
                            {
                                Address_DS.AddressRow aRow = ads.Address.NewAddressRow();
                                aRow.MailAddress = mailAddr;
                                ads.Address.AddAddressRow(aRow);
                            }
                            else
                            {
                                //���[���A�h���X�`���łȂ���̂́A�G���[���X�g�ɕۑ�
                                Address_DS.AddressRow aeRow = errords.Address.NewAddressRow();
                                aeRow.MailAddress = mailAddr;
                                errords.Address.AddAddressRow(aeRow);
                            }
                        }
                    }
                }
            }
            finally
            {
                // ExcelWorkBook�N���[�Y
                wBook.Close();
            }

            //Excel�t�@�C����ǂݎ��B
            this._addressds.Merge(ads);

            //�G���[����Z�b�g����B
            this._errorForm.ErrorList = errords;
        }
Exemplo n.º 3
0
        /// <summary>
        /// 指定されたExcelファイルを読み込む
        /// </summary>
        private void ReadExcel()
        {
            //Excelファイル選択し、選択されなければ終了。
            if (this.openFileExcel.ShowDialog() != DialogResult.OK)
            {
                return;
            }

            Address_DS ads     = new Address_DS();
            Address_DS errords = new Address_DS();

            // ExcelWorkBookオープン
            ExcelWorkBook wBook = new ExcelWorkBook();

            wBook.Open(this.openFileExcel.FileName);
            try
            {
                //1行目を読み込む
                ExcelWorkSheet sheet      = wBook.WorkSheets[0];
                ArrayList      columnList = new ArrayList();
                for (int col = sheet.FirstColumn; col <= sheet.LastColumn; col++)
                {
                    if (sheet.Cells[0, col].Value == null)
                    {
                        continue;
                    }
                    columnList.Add(sheet.Cells[0, col].Value);
                }

                //読み込み行がない場合は空のデータセットを返す。
                if (columnList.Count == 0)
                {
                    MessageBox.Show(this, "読み込み可能な行がありません。");
                    return;
                }

                using (ColumnSelectForm f = new ColumnSelectForm(columnList))
                {
                    //行選択画面を表示し、ユーザに読み込む行を指定してもらう
                    if (f.ShowDialog() != DialogResult.OK)
                    {
                        //選択されなければ、空のデータセットを返す。
                        return;
                    }

                    int readStartRowIndex = 0;
                    if (f.ReadFirstRow == true)
                    {
                        readStartRowIndex = 0;
                    }
                    else
                    {
                        readStartRowIndex = 1;
                    }


                    //ユーザが指定した列を読み込む
                    for (int row = readStartRowIndex; row <= sheet.LastRow; row++)
                    {
                        //NULLやすでに取り込まれたメールアドレスははずす。
                        if (!((sheet.Cells[row, f.SelectColumnIndex].Value == null) ||
                              ads.Address.FindByMailAddress(sheet.Cells[row, f.SelectColumnIndex].Value.ToString()) != null))
                        {
                            string mailAddr = sheet.Cells[row, f.SelectColumnIndex].Value.ToString();
                            //メールアドレス形式のアドレスのみ登録
                            if (TKMP.Writer.MailAddressCollection.IsAddressPattern(mailAddr) == true)
                            {
                                Address_DS.AddressRow aRow = ads.Address.NewAddressRow();
                                aRow.MailAddress = mailAddr;
                                ads.Address.AddAddressRow(aRow);
                            }
                            else
                            {
                                //メールアドレス形式でないものは、エラーリストに保存
                                Address_DS.AddressRow aeRow = errords.Address.NewAddressRow();
                                aeRow.MailAddress = mailAddr;
                                errords.Address.AddAddressRow(aeRow);
                            }
                        }
                    }
                }
            }
            finally
            {
                // ExcelWorkBookクローズ
                wBook.Close();
            }

            //Excelファイルを読み取る。
            this._addressds.Merge(ads);

            //エラー情報をセットする。
            this._errorForm.ErrorList = errords;
        }
Exemplo n.º 4
0
        private void ReadCSV()
        {
            //CSV�t�@�C���I����A�I�����Ȃ���ΏI���B
            if (this.openFileCSV.ShowDialog() != DialogResult.OK)
            {
                return;
            }

            Address_DS ads = new Address_DS();
            Address_DS errords = new Address_DS();

            //CSV�t�@�C���̓ǂݍ���
            using (TextFieldParser parser = new TextFieldParser(this.openFileCSV.FileName, System.Text.Encoding.GetEncoding("Shift-Jis")))
            {
                //CSV�̋�؂蕶����Z�b�g
                parser.SetDelimiters(",");

                //�P�s�ڂ����݂��邩�`�F�b�N
                if (parser.EndOfData == true)
                {
                    //���݂��Ȃ��ꍇ�̓��b�Z�[�W�{�b�N�X��\�����ďI��
                    MessageBox.Show(this, "�ǂݍ��݉”\�ȍs������܂���B");
                    return ;
                }

                //�P�s�ڂ̓ǂݍ���
                ArrayList columnList = null;
                string[] firstRows = null;
                try
                {
                    firstRows = parser.ReadFields();
                    columnList = new ArrayList(firstRows);
                }
                catch (MalformedLineException)
                {
                    //�ǂݍ��ݕs�”\�ȍs�ł���΁A�I������B
                    //���݂��Ȃ��ꍇ�̓��b�Z�[�W�{�b�N�X��\�����ďI��
                    MessageBox.Show(this,
                        "�P�s�ڂ̃t�H�[�}�b�g�������������߁A�����𑱍s�ł��܂���B" + Environment.NewLine +
                        "Excel�Ńt�@�C���𐳂����J���邩�m�F���Ă��������B");
                    return;
                }

                using (ColumnSelectForm f = new ColumnSelectForm(columnList))
                {
                    //�s�I���ʂ�\�����A���[�U�ɓǂݍ��ލs��w�肵�Ă�炤
                    if (f.ShowDialog() != DialogResult.OK)
                    {
                        //�I�����Ȃ���΁A��̃f�[�^�Z�b�g��Ԃ��B
                        return;
                    }

                    //�P�s�ڂ�ǂݍ��ނȂ�΁A���̍s��f�[�^�Z�b�g�Ɋi�[�B
                    if (f.ReadFirstRow == true)
                    {
                        Address_DS.AddressRow aRow = ads.Address.NewAddressRow();
                        aRow.MailAddress = firstRows[f.SelectColumnIndex];
                        ads.Address.AddAddressRow(aRow);
                    }

                    //���[�U���w�肵�����ǂݍ���
                    while (parser.EndOfData == false)
                    {
                        try
                        {
                            //NULL��󕶎���E���łɎ�荞�܂ꂽ�s���荞�܂Ȃ��B
                            string mailAddr = parser.ReadFields()[f.SelectColumnIndex];
                            if ((string.IsNullOrEmpty(mailAddr) == false) && (ads.Address.FindByMailAddress(mailAddr) == null))
                            {
                                if (TKMP.Writer.MailAddressCollection.IsAddressPattern(mailAddr) == true)
                                {
                                    Address_DS.AddressRow aRow = ads.Address.NewAddressRow();
                                    aRow.MailAddress = mailAddr;
                                    ads.Address.AddAddressRow(aRow);
                                }
                                else
                                {
                                    //���[���A�h���X�`���łȂ���̂́A�G���[���X�g�ɕۑ�
                                    Address_DS.AddressRow aeRow = errords.Address.NewAddressRow();
                                    aeRow.MailAddress = mailAddr;
                                    errords.Address.AddAddressRow(aeRow);
                                }
                            }
                        }
                        catch
                        {
                            //�s�̉�͂Ɏ��s�����炻�̍s��G���[���X�g�ɕۑ�
                            Address_DS.AddressRow aeRow = errords.Address.NewAddressRow();
                            aeRow.MailAddress = string.Format("�i{0}�s�ڂ͓ǂݍ��݃G���[�ł��j", parser.ErrorLineNumber.ToString());
                            errords.Address.AddAddressRow(aeRow);
                        }
                    }
                }
            }

            //CSV�t�@�C����ǂݎ��B
            this._addressds.Merge(ads);

            //�G���[����Z�b�g����B
            this._errorForm.ErrorList = errords;
        }