Пример #1
0
 /// <summary>
 /// 保存数据
 /// </summary>
 public void Save()
 {
     if (_mWorkbook != null)
     {
         _mWorkbook.Save();
     }
 }
Пример #2
0
        public bool WriteExcelFile(string sReportName, string sSheetName, DateTime time1, DateTime time2, DataTable dt)
        {
            string[] date = new string[2];
            date[0] = dealdate(time1);
            date[1] = dealdate(time2);
            StringBuilder sAddrModel  = new StringBuilder(40);
            StringBuilder sAddrReport = new StringBuilder(40);
            string        sFileModel  = "";
            string        sFileDer    = "";
            string        colA        = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";

            char[] colABC = new char[26] {
                'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'
            };
            GetPrivateProfileString("Addr", "AddrModel", "", sAddrModel, sAddrModel.Capacity, FILE_NAME);
            GetPrivateProfileString("Addr", "AddrReport", "", sAddrReport, sAddrReport.Capacity, FILE_NAME);

            sFileModel = sAddrModel.ToString() + sReportName.Trim() + ".xls";
            if (date[0].CompareTo(date[1]) == 0)
            {
                sReportName = sReportName.Trim() + "(" + date[0] + ")";
            }
            else
            {
                sReportName = sReportName.Trim() + "(" + date[0] + "-" + date[1] + ")";
            }

            sFileDer = sAddrReport.ToString() + sReportName.Trim() + ".xls";
            if (System.IO.File.Exists(sFileModel) == false)
            {
                MyLog.Log("3", "模板文件不存在");
                return(false);
            }
            if (System.IO.File.Exists(sFileDer) == false)
            {
                System.IO.File.Copy(sFileModel, sFileDer, true);
            }
            else
            {
                System.IO.File.Delete(sFileDer);
                System.IO.File.Copy(sFileModel, sFileDer, true);
            }
            //从表中把数据导入SHEET中
            #region
            string           FileName;
            Excel.Workbooks  eworkbooks = null;
            Excel._Workbook  eworkbook  = null;
            Excel.Sheets     esheets    = null;
            Excel._Worksheet esheet     = null;
            Excel.Range      range      = null;
            excelApp.Visible     = false;
            excelApp.UserControl = true;
            //用Excel应用程序创建Workbooks
            eworkbooks = excelApp.Workbooks;
            FileName   = sFileDer;
            eworkbooks.Open(FileName, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value,
                            Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value,
                            Missing.Value, Missing.Value);
            //用Workbooks创建Workbook
            eworkbook = eworkbooks.get_Item(1);
            //用Workbook创建sheets
            esheets = eworkbook.Worksheets;
            int iSheetNumber = esheets.Count;
            int index        = 0;
            for (int i = 1; i <= iSheetNumber; i++)
            {
                esheet = (Excel._Worksheet)esheets.get_Item(i);

                if (esheet.Name.Trim() == sSheetName.Trim())
                {
                    index++;
                    break;
                }
            }
            if (index == 0)
            {
                esheet = null;//没有找到相应的SHEET页
            }
            else
            {
                int      _rows      = dt.Rows.Count;
                int      _cols      = dt.Columns.Count;
                int      j          = 4;
                object[] date_write = new object[4];
                date_write[0] = "日期:";
                date_write[1] = date[0];
                date_write[2] = "至";
                date_write[3] = date[1];
                range         = esheet.get_Range("A" + 2, "D" + 2);
                range.set_Value(Missing.Value, date);
                date = null;
                for (int i = 0; i < _rows; i++)
                {
                    j = i + 5;//指定从哪一行开始写入数据
                    object[] currentRow = new object[_cols];
                    currentRow = dt.Rows[i].ItemArray;
                    range      = esheet.get_Range("A" + j, colA.Substring(_cols - 1, 1) + j);

                    range.set_Value(Missing.Value, currentRow);
                    currentRow = null;
                }
            }
            eworkbook.Save();
            range     = null;
            eworkbook = null;
            esheet    = null;
            esheets   = null;
            eworkbooks.Close();
            #endregion//excel写数据处理
            return(true);
        }
Пример #3
0
        public void MergeExcel(string FileName, C1.Win.C1FlexGrid.C1FlexGrid fg)
        {
            try
            {
                oXL = new Excel.Application();
                oWB = (Excel._Workbook)(oXL.Workbooks.Open(FileName, Missing.Value, Missing.Value, Missing.Value,
                                                           Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value,
                                                           Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value));

                oSheet = (Excel._Worksheet)oWB.ActiveSheet;
                oSheet.UsedRange.Cells.Borders.Value = 1;
                // Thực hiện Merge
                C1.Win.C1FlexGrid.CellRange cr;
                object obj;
                for (int i = 0; i < fg.Rows.Count; i++)
                {
                    if (fg.Rows[i].Visible)
                    {
                        for (int j = 0; j < fg.Cols.Count; j++)
                        {
                            if (fg.Cols[j].Visible)
                            {
                                cr = fg.GetMergedRange(i, j);
                                if ((!cr.IsSingleCell && (cr.r1 == i)) && (cr.c1 == j))
                                {
                                    oRng        = oSheet.get_Range(TinhToaDo(cr.r1 + 1, cr.c1 + 1), TinhToaDo(cr.r2 + 1, cr.c2 + 1));
                                    obj         = fg[i, j];
                                    oRng.Value2 = string.Empty;
                                    oRng.Merge(Missing.Value);
                                    oRng.Value2 = ReturnValue(obj);
                                }
                            }
                        }
                    }
                }
                // Xóa các cột, hàng đã bị ẩn
                for (int i = oSheet.UsedRange.Rows.Count - 1; i > 0; i--)
                {
                    oRng = oSheet.get_Range("A" + i.ToString(), Missing.Value);
                    if ((bool)oRng.EntireRow.Hidden == true)
                    {
                        oRng.EntireRow.Delete(Excel.XlDirection.xlToRight);
                    }
                }
                for (int i = oSheet.UsedRange.Columns.Count - 1; i > 0; i--)
                {
                    oRng = oSheet.get_Range(TinhToaDo(1, i), Missing.Value);
                    if ((bool)oRng.EntireColumn.Hidden == true)
                    {
                        oRng.EntireColumn.Delete(Excel.XlDirection.xlDown);
                    }
                }
                oWB.Save();
                oXL.Visible = true;
            }
            catch (Exception ex)
            {
                //oXL.Quit();
                throw ex;
            }
        }