コード例 #1
0
        /// <summary>
        /// 开始输出数据
        /// </summary>
        /// <remarks></remarks>
        protected override void StartExportData()
        {
            // ------------- 提取每一个工作表与Range范围的格式 -------------
            List <ExportToWorksheet.RangeInfoForExport> listRangeInfo = new List <ExportToWorksheet.RangeInfoForExport>();
            //
            string strTestRange = "";

            //
            //记录DataGridView控件中所有数据的数组
            try
            {
                int RowsCount = MyDataGridView1.Rows.Count;
                for (int RowIndex = 0; RowIndex <= RowsCount - 2; RowIndex++)
                {
                    DataGridViewRow RowObject = MyDataGridView1.Rows[RowIndex];

                    //获取对应的Worksheet对象
                    string strSheetName = RowObject.Cells[0].Value.ToString();
                    Microsoft.Office.Interop.Excel.Worksheet ExportedSheet = GetExactWorksheet(F_WorkBook_ExportedTo, listSheetNameInWkbk, strSheetName);

                    //检查Range对象的格式是否正确()
                    strTestRange = RowObject.Cells[1].Value.ToString();
                    Range testRange = ExportedSheet.Range(strTestRange);                     //这一步可能出错:Range的格式不规范
                    //
                    int columnsCount = 0;
                    foreach (Range a in testRange.Areas)
                    {
                        //如果想引用相交区域(公共区域),可以在多个区域间添加空格“ ”:  如Range("B1:B10 A4:D6 ").Select()  '选中多个单元格区域的交集
                        columnsCount += a.Columns.Count;
                    }
                    ExportToWorksheet.RangeInfoForExport RangeInfo = new ExportToWorksheet.RangeInfoForExport(ExportedSheet, strTestRange, columnsCount);
                    listRangeInfo.Add(RangeInfo);
                }
            }
            catch (Exception)
            {
                MessageBox.Show("定义区域范围的格式出错,出错的格式为 : " + "\r\n"
                                + strTestRange + ",请重新输入", "Error",
                                MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1);
                return;
            }



            // -----------------------------------
            //是否要分析出提取数据的工作簿中的日期数据
            bool blnParseDateFromFilePath = false;

            if (this.ChkboxParseDate.Checked)
            {
                blnParseDateFromFilePath = true;
            }
            //不允许再更改提取日期的正则表达式
            this.ChkboxParseDate.Checked = false;
            //开始提取数据
            ExportToWorksheet Export = new ExportToWorksheet(F_WorkBook_ExportedTo, arrDocPaths, listRangeInfo, blnParseDateFromFilePath);

            this.BackgroundWorker1.RunWorkerAsync(Export);
        }