/// <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); }