コード例 #1
0
ファイル: TeaDutyRule.cs プロジェクト: zesus19/c4.v2.T
        public void ExportTeacherAllReports(string path, DateTime startDate, DateTime endDate)
        {
            string excelTempFilePath = AppDomain.CurrentDomain.BaseDirectory;

            Excel.Application         m_objExcel  = null;
            Excel.Workbooks           m_objBooks  = null;
            Excel._Workbook           m_objBook   = null;
            Excel.Sheets              m_objSheets = null;
            Excel._Worksheet          m_objSheet  = null;
            Excel.Range               m_objRange  = null;
            Excel.Font                m_objFont   = null;
            System.Reflection.Missing m_objOpt    = System.Reflection.Missing.Value;

            try
            {
                m_objExcel = new Excel.Application();
                m_objExcel.DisplayAlerts = false;
                m_objBooks = (Excel.Workbooks)m_objExcel.Workbooks;
                m_objBook  = (Excel._Workbook)m_objBooks.Open(excelTempFilePath + @"report\TeacherDutyAll.xls",
                                                              m_objOpt, m_objOpt, m_objOpt, m_objOpt, m_objOpt, m_objOpt, m_objOpt, m_objOpt, m_objOpt,
                                                              m_objOpt, m_objOpt, m_objOpt);

                ExportAllNormal(startDate, endDate, m_objBook, m_objSheets, m_objSheet, m_objRange, m_objFont, m_objOpt);
                ExportStat(startDate, endDate, m_objBook, m_objSheets, m_objSheet, m_objRange, m_objFont, m_objOpt);
                ExportSingleStat(startDate, endDate, m_objBook, m_objSheets, m_objSheet, m_objRange, m_objFont, m_objOpt);
                ExportSingle(startDate, endDate, m_objBook, m_objSheets, m_objSheet, m_objRange, m_objFont, m_objOpt);

                m_objBook.SaveAs(path, m_objOpt, m_objOpt,
                                 m_objOpt, m_objOpt, m_objOpt, Excel.XlSaveAsAccessMode.xlNoChange,
                                 m_objOpt, m_objOpt, m_objOpt, m_objOpt);
                m_objBook.Close(false, m_objOpt, m_objOpt);
                m_objExcel.Quit();

                System.Runtime.InteropServices.Marshal.ReleaseComObject(m_objFont);
                System.Runtime.InteropServices.Marshal.ReleaseComObject(m_objRange);
                System.Runtime.InteropServices.Marshal.ReleaseComObject(m_objSheet);
                System.Runtime.InteropServices.Marshal.ReleaseComObject(m_objSheets);
                System.Runtime.InteropServices.Marshal.ReleaseComObject(m_objBook);
                System.Runtime.InteropServices.Marshal.ReleaseComObject(m_objBooks);
                System.Runtime.InteropServices.Marshal.ReleaseComObject(m_objExcel);
            }
            catch (Exception ex)
            {
                Util.WriteLog(ex.Message, Util.EXCEPTION_LOG_TITLE);
            }
            finally
            {
                m_objFont   = null;
                m_objRange  = null;
                m_objSheet  = null;
                m_objSheets = null;
                m_objBook   = null;
                m_objBooks  = null;
                m_objExcel  = null;

                GC.Collect();

                KillProcess();
            }
        }
コード例 #2
0
        /// <summary>
        /// 将DataTable数据写入到Excel文件(若sheetName存在,则覆盖)
        /// <para>若表为空则返回</para>
        /// </summary>
        /// <param name="dt">DataTable</param>
        /// <param name="sheetName">Sheet名称</param>
        public void WriteDataTableToExcelBook(DataTable dt, string sheetName)
        {
            if (obook == null)
            {
                throw new Exception("obook为null!");
            }
            if (dt == null)
            {
                return;
            }

            System.Reflection.Missing miss   = System.Reflection.Missing.Value;
            Excel.Worksheet           oSheet = null;

            try
            {
                //新建Sheet
                foreach (Excel.Worksheet sht in obook.Sheets)
                {
                    if (sht.Name == sheetName)
                    {
                        oSheet = sht;
                    }
                }
                if (oSheet == null)
                {
                    oSheet      = (Excel.Worksheet)obook.Sheets.Add(miss, miss, miss, miss);
                    oSheet.Name = sheetName;
                }

                int iRowCount    = dt.Rows.Count;
                int iColumnCount = dt.Columns.Count;
                object[,] objVal = new object[iRowCount + 1, iColumnCount];
                //将dataTable中数据写入
                for (int i = 0; i <= iRowCount; i++)
                {
                    for (int j = 0; j < iColumnCount; j++)
                    {
                        if (i == 0)
                        {
                            objVal[0, j] = dt.Columns[j].Caption;
                        }
                        else
                        {
                            objVal[i, j] = dt.Rows[i - 1][j].ToString();
                        }
                    }
                }
                //最后一列的字母表示
                string Al = ExcelColumnNumb2Letter(iColumnCount);

                Excel.Range xlRange = oSheet.get_Range("A1", Al + (iRowCount + 1).ToString());
                xlRange.Value2 = objVal;
                xlRange.EntireColumn.AutoFit();
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message + "\n写入表单出错:" + sheetName);
            }
        }
コード例 #3
0
ファイル: Program.cs プロジェクト: FIDZILING/StuInfoManageSyS
        /// <summary>
        /// 导出到文件
        /// </summary>
        /// <param name="dataTable">数据源</param>
        public static bool ToExcelFile(DataTable dataTable)
        {
            // 文件选择器保存文件位置
            SaveFileDialog saveFileDialog = new SaveFileDialog
            {
                Filter = "Excel97-2003工作簿|*.xls"
            };

            if (saveFileDialog.ShowDialog() == DialogResult.OK)
            {
                int rowNum      = dataTable.Rows.Count;     //需要导出的数据的行数
                int columnNum   = dataTable.Columns.Count;  //需要导出的数据的列数
                int rowIndex    = 1;                        //起始行为第二行
                int columnIndex = 0;                        //起始列为第一列
                Microsoft.Office.Interop.Excel.Range range; //Excel的格式设置
                System.Reflection.Missing            miss = System.Reflection.Missing.Value;

                Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application
                {
                    DisplayAlerts       = true,// 在程序执行过程中使出现的警告框显示
                    SheetsInNewWorkbook = 1
                };

                Microsoft.Office.Interop.Excel.Workbook xlBook = xlApp.Workbooks.Add(true);

                foreach (DataColumn dc in dataTable.Columns)             //将datatable的列名导入excel表的第一行
                {
                    columnIndex++;
                    xlApp.Cells[rowIndex, columnIndex] = dc.ColumnName;
                }


                //将数据写入到Excel表中
                for (int i = 0; i < rowNum; i++)
                {
                    rowIndex++;
                    columnIndex = 0;
                    for (int j = 0; j < columnNum; j++)
                    {//按行写入数据
                        columnIndex++;
                        range = (Microsoft.Office.Interop.Excel.Range)xlApp.Cells[rowIndex, columnIndex];
                        range.NumberFormatLocal            = "@";//写入到表中的数据格式以文本形式存在
                        xlApp.Cells[rowIndex, columnIndex] = dataTable.Rows[i][j].ToString();
                    }
                }
                //数据保存
                xlBook.SaveAs(saveFileDialog.FileName, miss, miss, miss, miss, miss, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange, miss, miss, miss, miss, miss);
                xlBook.Close(false, miss, miss);
                xlApp.Quit();
                return(true);
            }
            else
            {
                return(false);
            }
        }
コード例 #4
0
        /// <summary>
        /// DataSet導出到Excel,可以指定SheetName、文件名和是否要保存,也可以指定保存后是否自動退出
        /// </summary>
        /// <param name="ds">要導出的DataSet</param>
        /// <param name="sheetNames">字符串數組,用來存放SheetName,數量需要和DataSet中的Table數一致,輸入null則自動給sheet編號</param>
        /// <param name="fileName">指定的文件名,不帶路徑</param>
        /// <param name="savePath">文件存放的路徑,最後不要帶\\</param>
        public static void ExportToExcel(DataSet ds, string[] sheetNames, string fileName, string savePath)
        {
            if (ds == null)
            {
                return;
            }
            if (sheetNames == null)
            {
                sheetNames = new string[256];
            }
            System.Reflection.Missing Miss = System.Reflection.Missing.Value;
            if (string.IsNullOrEmpty(fileName))
            {
                fileName = "Result.xlsx";
            }
            try
            {
                //创建一个工作簿
                XSSFWorkbook xssfworkbook = new XSSFWorkbook();
                for (int i = 1; i <= ds.Tables.Count; i++)
                {
                    //创建一个 sheet 表
                    string sheetName = (sheetNames[i - 1] != null) ? sheetNames[i - 1].ToString() : "Sheet" + i.ToString();
                    ISheet sheet     = xssfworkbook.CreateSheet(sheetName);
                    WriteExcelModule(xssfworkbook, sheet, ds.Tables[i - 1]);
                    sheet = null;
                }
                if (savePath != "")
                {
                    if (System.IO.Directory.Exists(savePath) == false)
                    {
                        System.IO.Directory.CreateDirectory(savePath);
                    }
                }
                else
                {
                    savePath = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Desktop);
                }

                //创建文件
                FileStream file = new FileStream(savePath + "\\" + fileName, FileMode.CreateNew, FileAccess.Write);
                xssfworkbook.Write(file);

                file.Close();
                file.Dispose();

                xssfworkbook.Close();
                xssfworkbook = null;
            }
            catch (Exception ex)
            {
            }
        }
コード例 #5
0
        /// <summary>
        /// Exportar arquivo para .XLSx
        /// </summary>
        /// <param name="ds">Tabela com o relatório</param>
        public bool ExportarXLS(System.Data.DataTable dt, string caminho)// Retirar do FrmConsulta e incluir na Classe
        {
            try
            {
                int inHeaderLength = 0, inColumn = 0, inRow = 0;
                System.Reflection.Missing Default = System.Reflection.Missing.Value;
                //Create Excel File

                Application excelApp              = new Application();
                Workbook    excelWorkBook         = excelApp.Workbooks.Add(1);

                //Create Excel WorkSheet
                Worksheet excelWorkSheet = excelWorkBook.Sheets.Add(Default, excelWorkBook.Sheets[excelWorkBook.Sheets.Count], 1, Default);
                excelWorkSheet.Name = "Relatório";//Name worksheet

                //Write Column Name
                for (int i = 0; i < dt.Columns.Count; i++)
                {
                    excelWorkSheet.Cells[inHeaderLength + 1, i + 1] = dt.Columns[i].ColumnName.ToUpper();
                }

                //Write Rows
                for (int m = 0; m < dt.Rows.Count; m++)
                {
                    for (int n = 0; n < dt.Columns.Count; n++)
                    {
                        inColumn = n + 1;
                        inRow    = inHeaderLength + 2 + m;
                        excelWorkSheet.Cells[inRow, inColumn] = dt.Rows[m].ItemArray[n].ToString();
                    }
                }
                //Altera o formato da celula
                excelWorkSheet.get_Range("D2").EntireColumn.NumberFormat = "DD/MM/YYYY";

                //Delete First Page
                excelApp.DisplayAlerts = false;
                Worksheet lastWorkSheet = (Worksheet)excelWorkBook.Worksheets[1];
                lastWorkSheet.Delete();
                excelApp.DisplayAlerts = true;

                excelWorkBook.SaveAs(caminho, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, XlSaveAsAccessMode.xlExclusive, XlSaveConflictResolution.xlLocalSessionChanges, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
                excelWorkBook.Close();
                excelApp.Quit();

                return(true);
            }
            catch (Exception)
            {
                return(false);
            }
        }
コード例 #6
0
        /// <summary>
        /// 根据导入的Excel初始化字典表
        /// </summary>
        /// <param name="strExcelPath">Excel文件路径</param>
        /// <param name="dicData"></param>
        private void InitializeDic(string strExcelPath, ref Dictionary <string, object> dicData)
        {
            System.Reflection.Missing miss = System.Reflection.Missing.Value;
            Microsoft.Office.Interop.Excel.Application xlsApp = new Microsoft.Office.Interop.Excel.Application();
            if (xlsApp == null)
            {
                MessageBox.Show("无法创建Excel对象,可能您的机器未安装Excel");
                return;
            }
            try
            {
                Workbook  xlsWrkBook = xlsApp.Workbooks.Open(strExcelPath, miss, miss, miss, miss, miss, miss, miss, miss, miss, miss, miss, miss, miss, miss);
                Worksheet xlsWrkSht  = xlsWrkBook.Worksheets[1] as Worksheet;
                for (int row = 1; row < xlsWrkSht.Rows.Count; row++)
                {
                    ///Excel中第二列为字段名
                    Range pRangeCoum = xlsWrkSht.get_Range(xlsWrkSht.Cells[row, 2], xlsWrkSht.Cells[row, 2]);
                    ///第三列为字段值
                    Range  pRangeRow = xlsWrkSht.get_Range(xlsWrkSht.Cells[row, 3], xlsWrkSht.Cells[row, 3]);
                    string strValue;
                    ///当读到字段名为空时则默认为数据读取完成
                    if (pRangeCoum.Value2 == null)
                    {
                        break;
                    }

                    if (pRangeRow.Value2 == null)
                    {
                        //continue;
                        strValue = "";
                    }
                    else
                    {
                        strValue = pRangeRow.Value2.ToString();
                    }
                    dicData.Add(pRangeCoum.Value2.ToString(), strValue);
                }
                xlsApp.Quit();
                System.Runtime.InteropServices.Marshal.ReleaseComObject(xlsWrkSht);
                System.Runtime.InteropServices.Marshal.ReleaseComObject(xlsWrkBook);
            }
            catch { }
            finally
            {
                System.Runtime.InteropServices.Marshal.ReleaseComObject(xlsApp);
                GC.Collect();
            }
        }
コード例 #7
0
        private bool XLSConvertToPDF(string sourcePath, string targetPath)
        {
            bool result = false;

            Microsoft.Office.Interop.Excel.XlFixedFormatType targetType = Microsoft.Office.Interop.Excel.XlFixedFormatType.xlTypePDF;
            object missing = Type.Missing;

            Microsoft.Office.Interop.Excel.Application ExcelApp  = null;
            Microsoft.Office.Interop.Excel._Workbook   ExcelBook = null;
            try
            {
                object target = targetPath;
                object type   = targetType;

                System.Globalization.CultureInfo CurrentCI = System.Threading.Thread.CurrentThread.CurrentCulture;
                System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-US");
                ExcelApp = new Microsoft.Office.Interop.Excel.Application();
                System.Reflection.Missing missingValue = System.Reflection.Missing.Value;
                ExcelBook = ExcelApp.Workbooks.Open(sourcePath, missingValue, missingValue, missingValue, missingValue, missingValue, missingValue, missingValue, missingValue, missingValue, missingValue, missingValue, missingValue, missingValue, missingValue);

                ExcelBook.ExportAsFixedFormat(targetType, target, Microsoft.Office.Interop.Excel.XlFixedFormatQuality.xlQualityStandard, true, false, missing, missing, missing, missing);
                result = true;
            }
            catch
            {
                result = false;
            }
            finally
            {
                if (ExcelBook != null)
                {
                    ExcelBook.Close(true, missing, missing);
                    ExcelBook = null;
                }
                if (ExcelApp != null)
                {
                    ExcelApp.Quit();
                    ExcelApp = null;
                }
                GC.Collect();
                GC.WaitForPendingFinalizers();
                GC.Collect();
                GC.WaitForPendingFinalizers();
            }
            return(result);
        }
コード例 #8
0
        //private string projectPath = System.Environment.GetFolderPath(Environment.SpecialFolder.Desktop);

        private bool CreatExcelTemolate()
        {
            bool result = false;

            try
            {
                System.Reflection.Missing missing   = System.Reflection.Missing.Value;
                Excel.Application         app       = new Excel.ApplicationClass();
                Excel.Workbooks           workbooks = app.Workbooks;
                Excel.Workbook            workbook  = workbooks.Add(missing);
                Excel.Worksheet           worksheet = workbook.Sheets[1] as Excel.Worksheet;
                worksheet.Name = "Only This";

                worksheet.Cells[1, 1] = "类型";
                worksheet.Cells[1, 2] = "int";

                worksheet.Cells[2, 1] = "描述";
                worksheet.Cells[2, 2] = "对象的id";

                worksheet.Cells[3, 1] = "字段名";
                worksheet.Cells[3, 2] = "id";

                string excelPathRoot = pathLable.Text + "/GameTable";
                if (Directory.Exists(excelPathRoot) == false)
                {
                    Directory.CreateDirectory(excelPathRoot);
                }

                worksheet.SaveAs(excelPathRoot + "/默认模板.xlsx");
                workbook.Close();
                app.Quit();

                //打开文件夹
                System.Diagnostics.Process.Start("explorer.exe", excelPathRoot + @"\");
            }
            catch (Exception e)
            {
                MessageBox.Show($"创建错误:{e.Message}");
            }



            return(result);
        }
コード例 #9
0
        public void ExcelXLS(DirectoryInfo RutaExcel, DataTable Datos, string CadenaConexion)
        {
            ConexionBd conexion = new ConexionBd();

            var NuevoArchivo = new FileInfo(RutaExcel + @"\xlExcel7Pass2.xls");

            if (NuevoArchivo.Exists)
            {
                NuevoArchivo.Delete();
                NuevoArchivo = new FileInfo(RutaExcel + @"\xlExcel7Pass2.xls");
            }
            Datos.TableName = "Polizas";

            int inColumn = 0, inRow = 0;

            System.Reflection.Missing Default = System.Reflection.Missing.Value;

            Excel.Application excelApp        = new Excel.Application();
            Excel.Workbook    excelWorkBook = excelApp.Workbooks.Add(1);

            //Create Excel WorkSheet
            Excel.Worksheet excelWorkSheet = excelWorkBook.Sheets.Add(Default, excelWorkBook.Sheets[excelWorkBook.Sheets.Count], 1, Default);
            excelWorkSheet.Name = "Poliza";    //Name worksheet

            //Write Column Name
            for (int i = 0; i < Datos.Columns.Count; i++)
            {
                excelWorkSheet.Cells[1, i + 1] = Datos.Columns[i].ColumnName;    //.ToUpper();
            }
            //Write Rows
            for (int m = 0; m < Datos.Rows.Count; m++)
            {
                for (int n = 0; n < Datos.Columns.Count; n++)
                {
                    inColumn = n + 1;
                    inRow    = 2 + m; //1 + 2 + m;
                    excelWorkSheet.Cells[inRow, inColumn] = Datos.Rows[m].ItemArray[n].ToString();
                    if (m % 2 == 0)
                    {
                        excelWorkSheet.get_Range("A" + inRow.ToString(), "W" + inRow.ToString()).Interior.Color = System.Drawing.ColorTranslator.FromHtml("#DAA520");
                    }
                }
            }

            ////Excel Header
            //OfficeExcel.Range cellRang = excelWorkSheet.get_Range("A1", "O1");
            //cellRang.Merge(false);
            //cellRang.Interior.Color = System.Drawing.Color.Blue;
            //cellRang.Font.Color = System.Drawing.Color.Black;
            //cellRang.HorizontalAlignment = OfficeExcel.XlHAlign.xlHAlignCenter;
            //cellRang.VerticalAlignment = OfficeExcel.XlVAlign.xlVAlignCenter;
            //cellRang.Font.Size = 16;
            //excelWorkSheet.Cells[1, 1] = "Greate Novels Of All Time";

            //Style table column names
            Excel.Range cellRang              = excelWorkSheet.get_Range("A1", "W1");
            cellRang.Font.Bold      = true;
            cellRang.Font.Color     = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.White);
            cellRang.Interior.Color = System.Drawing.ColorTranslator.FromHtml("#00008B");
            cellRang                = excelWorkSheet.get_Range("X1", "Z1");
            cellRang.Font.Bold      = true;
            cellRang.Font.Color     = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.White);
            cellRang.Interior.Color = System.Drawing.ColorTranslator.FromHtml("#DAA520");
            excelWorkSheet.get_Range("F4").EntireColumn.HorizontalAlignment = Excel.XlHAlign.xlHAlignRight;
            //Formate price column
            excelWorkSheet.get_Range("O2").EntireColumn.NumberFormat        = "$#,##0.00_);[Red]($#,##0.00)"; //.NumberFormat = "0.00";
            excelWorkSheet.get_Range("O2").EntireColumn.HorizontalAlignment = Excel.XlHAlign.xlHAlignRight;
            //Auto fit columns
            excelWorkSheet.Columns.AutoFit();

            //Delete First Page
            excelApp.DisplayAlerts = false;
            Microsoft.Office.Interop.Excel.Worksheet lastWorkSheet = (Microsoft.Office.Interop.Excel.Worksheet)excelWorkBook.Worksheets[1];
            lastWorkSheet.Delete();
            excelApp.DisplayAlerts = true;

            //Set Defualt Page
            (excelWorkBook.Sheets[1] as Excel._Worksheet).Activate();

            excelWorkBook.SaveAs(NuevoArchivo, Excel.XlFileFormat.xlExcel7, Default, Default, false, Default, Excel.XlSaveAsAccessMode.xlNoChange, Default, Default, Default, Default, Default);
            //excelWorkBook.SaveAs(NuevoArchivo, OfficeExcel.XlFileFormat.xlExcel5, Default, Default, false, Default, OfficeExcel.XlSaveAsAccessMode.xlNoChange, Default, Default, Default, Default, Default);
            //excelWorkBook.SaveAs(NuevoArchivo, OfficeExcel.XlFileFormat.xlExcel9795, Default, Default, false, Default, OfficeExcel.XlSaveAsAccessMode.xlNoChange, Default, Default, Default, Default, Default);
            excelWorkBook.Close();
            excelApp.Quit();
        }
コード例 #10
0
ファイル: TeaDutyRule.cs プロジェクト: zesus19/c4.v2.T
        private void ExportSingle(
            DateTime startDate,
            DateTime endDate,
            Excel._Workbook m_objBook,
            Excel.Sheets m_objSheets,
            Excel._Worksheet m_objSheet,
            Excel.Range m_objRange,
            Excel.Font m_objFont,
            System.Reflection.Missing m_objOpt)
        {
            using (DataTable dt = new DutyInfoDA().GetTeaDutyNormal(string.Empty, string.Empty, string.Empty, string.Empty, startDate, endDate, 100).Tables[0])
            {
                if (dt != null && dt.Rows.Count > 0)
                {
                    DataView dv = dt.DefaultView;
                    using (DataTable dtBaseInfo = new TeacherBaseDataAccess().GetTcBaseInfo(string.Empty, string.Empty, string.Empty, string.Empty).Tables[0])
                    {
                        object[, ] objData = null;
                        foreach (DataRow dr in dtBaseInfo.Rows)
                        {
                            dv.RowFilter = "T_Number = " + dr[1].ToString();
                            objData      = new object[dv.Count, 6];
                            if (dv.Count > 0)
                            {
                                for (int i = 0; i < dv.Count; i++)
                                {
                                    objData[i, 0] = dv[i][3].ToString();
                                    objData[i, 1] = dv[i][2].ToString();
                                    objData[i, 2] = dv[i][0].ToString();
                                    objData[i, 3] = dv[i][1].ToString();
                                    objData[i, 4] = dv[i][4].ToString();
                                    objData[i, 5] = dv[i][5].ToString();
                                }

                                m_objSheets = (Excel.Sheets)m_objBook.Sheets;
                                m_objSheet  = (Excel._Worksheet)(m_objSheets.get_Item(4));
                                m_objSheet.Copy(Type.Missing, m_objSheet);
                                m_objSheet       = (Excel._Worksheet)(m_objSheets.get_Item(5));
                                m_objSheet.Name  = objData[0, 0].ToString() + string.Format("({0})", objData[0, 1]);
                                m_objRange       = m_objSheet.get_Range("A3", m_objOpt);
                                m_objRange       = m_objRange.get_Resize(dv.Count, 6);
                                m_objRange.Value = objData;

                                m_objRange.VerticalAlignment   = Excel.XlVAlign.xlVAlignCenter;
                                m_objRange.HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;
                                m_objRange.WrapText            = true;
                                m_objRange.Borders.LineStyle   = System.Windows.Forms.BorderStyle.FixedSingle;
                                m_objFont      = m_objRange.Font;
                                m_objFont.Size = 9;

                                m_objRange                     = m_objSheet.get_Range("A" + (dv.Count + 4).ToString(), m_objOpt);
                                m_objRange.Value               = "园所:";
                                m_objRange.Font.Bold           = true;
                                m_objRange.Font.Size           = 9;
                                m_objRange.HorizontalAlignment = Excel.XlHAlign.xlHAlignLeft;

                                m_objRange                     = m_objSheet.get_Range("B" + (dv.Count + 4).ToString(), m_objOpt);
                                m_objRange.Value               = new GardenInfoDataAccess().GetGardenInfo().Tables[0].Rows[0][1].ToString();
                                m_objRange.Font.Bold           = true;
                                m_objRange.Font.Size           = 9;
                                m_objRange.HorizontalAlignment = Excel.XlHAlign.xlHAlignLeft;

                                m_objRange                     = m_objSheet.get_Range("A" + (dv.Count + 5).ToString(), m_objOpt);
                                m_objRange.Value               = "统计开始日期:";
                                m_objRange.Font.Bold           = true;
                                m_objRange.Font.Size           = 9;
                                m_objRange.HorizontalAlignment = Excel.XlHAlign.xlHAlignLeft;

                                m_objRange                     = m_objSheet.get_Range("B" + (dv.Count + 5).ToString(), m_objOpt);
                                m_objRange.Value               = startDate.ToString("yyyy.MM.dd");
                                m_objRange.Font.Bold           = true;
                                m_objRange.Font.Size           = 9;
                                m_objRange.HorizontalAlignment = Excel.XlHAlign.xlHAlignLeft;

                                m_objRange                     = m_objSheet.get_Range("A" + (dv.Count + 6).ToString(), m_objOpt);
                                m_objRange.Value               = "统计结束日期:";
                                m_objRange.Font.Bold           = true;
                                m_objRange.Font.Size           = 9;
                                m_objRange.HorizontalAlignment = Excel.XlHAlign.xlHAlignLeft;

                                m_objRange                     = m_objSheet.get_Range("B" + (dv.Count + 6).ToString(), m_objOpt);
                                m_objRange.Value               = endDate.ToString("yyyy.MM.dd");
                                m_objRange.Font.Bold           = true;
                                m_objRange.Font.Size           = 9;
                                m_objRange.HorizontalAlignment = Excel.XlHAlign.xlHAlignLeft;
                            }
                        }
                    }
                    m_objSheet = (Excel._Worksheet)(m_objSheets.get_Item(4));
                    m_objSheet.Delete();
                }
            }
        }
コード例 #11
0
        /// <summary>
        /// 导出Excel
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnExcel_Click(object sender, EventArgs e)
        {
            RecordingBLL recordingBLL = new RecordingBLL();
            DataTable    dt           = recordingBLL.GetAllUser(this.label1.Text);

            //下载Nuget包 Microsoft.Office.Interop
            Microsoft.Office.Interop.Excel.Application appexcel = new Microsoft.Office.Interop.Excel.Application();

            SaveFileDialog savefiledialog = new SaveFileDialog();

            System.Reflection.Missing miss = System.Reflection.Missing.Value;

            appexcel = new Microsoft.Office.Interop.Excel.Application();

            Microsoft.Office.Interop.Excel.Workbook workbookdata;

            Microsoft.Office.Interop.Excel.Worksheet worksheetdata;

            Microsoft.Office.Interop.Excel.Range rangedata;

            //设置对象不可见
            appexcel.Visible = false;
            System.Globalization.CultureInfo currentci = System.Threading.Thread.CurrentThread.CurrentCulture;
            System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-us");
            workbookdata  = appexcel.Workbooks.Add(miss);
            worksheetdata = (Microsoft.Office.Interop.Excel.Worksheet)workbookdata.Worksheets.Add(miss, miss, miss, miss);
            //给工作表赋名称
            worksheetdata.Name = "saved";
            for (int i = 0; i < dt.Columns.Count; i++)
            {
                worksheetdata.Cells[1, i + 1] = dt.Columns[i].ColumnName.ToString();
            }
            //因为第一行已经写了表头,所以所有数据都应该从a2开始
            rangedata = worksheetdata.get_Range("a2", miss);
            Microsoft.Office.Interop.Excel.Range xlrang = null;
            //irowcount为实际行数,最大行
            int irowcount = dt.Rows.Count;
            int iparstedrow = 0, icurrsize = 0;
            //ieachsize为每次写行的数值,可以自己设置
            int ieachsize = 1000;
            //icolumnaccount为实际列数,最大列数

            int icolumnaccount = dt.Columns.Count;

            //在内存中声明一个ieachsize×icolumnaccount的数组,ieachsize是每次最大存储的行数,icolumnaccount就是存储的实际列数

            object[,] objval = new object[ieachsize, icolumnaccount];
            icurrsize        = ieachsize;
            while (iparstedrow < irowcount)
            {
                if ((irowcount - iparstedrow) < ieachsize)
                {
                    icurrsize = irowcount - iparstedrow;
                }

                //用for循环给数组赋值

                for (int i = 0; i < icurrsize; i++)

                {
                    for (int j = 0; j < icolumnaccount; j++)
                    {
                        objval[i, j] = dt.Rows[i + iparstedrow][j].ToString();
                    }

                    System.Windows.Forms.Application.DoEvents();
                }

                string X   = "A" + ((int)(iparstedrow + 2)).ToString();
                string col = "";
                if (icolumnaccount <= 26)
                {
                    col = ((char)('A' + icolumnaccount - 1)).ToString() + ((int)(iparstedrow + icurrsize + 1)).ToString();
                }

                else

                {
                    col = ((char)('A' + (icolumnaccount / 26 - 1))).ToString() + ((char)('A' + (icolumnaccount % 26 - 1))).ToString() + ((int)(iparstedrow + icurrsize + 1)).ToString();
                }

                xlrang = worksheetdata.get_Range(X, col);

                // 调用range的value2属性,把内存中的值赋给excel

                xlrang.Value2 = objval;

                iparstedrow = iparstedrow + icurrsize;
            }

            //保存工作表
            System.Runtime.InteropServices.Marshal.ReleaseComObject(xlrang);
            xlrang = null;
            //调用方法关闭excel进程
            appexcel.Visible = true;
        }
コード例 #12
0
        public void ExportToExcel(DataSet dataset, string FilePath, string number, string District, string ReportType = "")
        {
            int inHeaderLength = 2, inColumn = 0, inRow = 0;

            System.Reflection.Missing Default = System.Reflection.Missing.Value;
            //Create Excel File
            //strPath += @"\Excel" + DateTime.Now.ToString().Replace(':', '-') + ".xlsx";
            Excel.Application excelApp        = new Excel.Application();
            Excel.Workbook    excelWorkBook   = excelApp.Workbooks.Add(1);

            foreach (DataTable dtbl in dataset.Tables)
            {
                //Create Excel WorkSheet
                Excel.Worksheet excelWorkSheet = excelWorkBook.Sheets.Add(Default, excelWorkBook.Sheets[excelWorkBook.Sheets.Count], 1, Default);
                excelWorkSheet.Name = dtbl.TableName.ToUpper();//Name worksheet

                //Write Column Name
                for (int i = 0; i < dtbl.Columns.Count + 1; i++)
                {
                    if (i == 0)
                    {
                        excelWorkSheet.Cells[inHeaderLength + 1, i + 1] = "SL NO";
                    }
                    else
                    {
                        excelWorkSheet.Cells[inHeaderLength + 1, i + 1] = dtbl.Columns[i - 1].ColumnName.ToUpper();
                    }
                }
                //Write Rows
                int ma = dtbl.Rows.Count;
                int na = dtbl.Columns.Count + 2;
                for (int m = 0; m < dtbl.Rows.Count; m++)
                {
                    for (int n = 0; n < dtbl.Columns.Count + 1; n++)
                    {
                        inColumn = n + 1;
                        inRow    = inHeaderLength + 2 + m;
                        if (n == 0)
                        {
                            excelWorkSheet.Cells[inRow, inColumn] = m + 1;
                        }
                        else
                        {
                            excelWorkSheet.Cells[inRow, inColumn] = dtbl.Rows[m].ItemArray[n - 1].ToString();
                            if (m % 2 == 0)
                            {
                                excelWorkSheet.get_Range("A" + inRow.ToString(), ColumnIndexToColumnLetter(dtbl.Columns.Count + 1) + inRow.ToString()).Interior.Color = System.Drawing.ColorTranslator.FromHtml("#FCE4D6");
                            }

                            na = n;
                        }
                    }
                }
                //Excel Header
                Excel.Range cellRang = excelWorkSheet.get_Range("A1", ColumnIndexToColumnLetter(dtbl.Columns.Count + 1) + "2");
                cellRang.Merge(false);
                cellRang.Interior.Color      = System.Drawing.Color.White;
                cellRang.Font.Color          = System.Drawing.Color.Gray;
                cellRang.HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;
                cellRang.VerticalAlignment   = Excel.XlVAlign.xlVAlignCenter;
                cellRang.Font.Size           = 14;
                excelWorkSheet.Cells[1, 1]   = "Sales Report of " + DateTime.Today.AddDays(-1).ToString("yyyy-MM-dd");
                //excelWorkSheet.Cells[60, 5] = "=SUM(E4,E59)";
                //excelWorkSheet.Cells[dtbl.Rows.Count + 2, dtbl.Columns.Count].Formula = a;

                if (ReportType == "ZM")
                {
                    //Create Total
                    int r = dtbl.Rows.Count + 3;
                    excelWorkSheet.Cells[dtbl.Rows.Count + 4, dtbl.Columns.Count + 1] = "=SUM(" + ColumnIndexToColumnLetter(dtbl.Columns.Count + 1) + "4:" + ColumnIndexToColumnLetter(dtbl.Columns.Count + 1) + "" + (dtbl.Rows.Count + 3) + ")";
                    //excelWorkSheet.Cells[dtbl.Rows.Count + 4, dtbl.Columns.Count + 1] = "=SUM(BN4:BN" + (dtbl.Rows.Count + 3) + ")";
                    ((Excel.Range)excelWorkSheet.get_Range((dtbl.Rows.Count + 4) + ":" + dtbl.Columns.Count + 1)).Cells.Borders.LineStyle = Excel.XlLineStyle.xlContinuous;
                }

                //Style table column names
                cellRang                = excelWorkSheet.get_Range("A3", ColumnIndexToColumnLetter(dtbl.Columns.Count + 1) + "3");
                cellRang.Font.Bold      = true;
                cellRang.Font.Color     = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.White);
                cellRang.Interior.Color = System.Drawing.ColorTranslator.FromHtml("#ED7D31");
                excelWorkSheet.get_Range("E4").EntireColumn.HorizontalAlignment = Excel.XlHAlign.xlHAlignRight;
                //Formate price column
                //excelWorkSheet.get_Range("F5").EntireColumn.NumberFormat = "0.00";
                //Auto fit columns
                excelWorkSheet.Columns.AutoFit();
            }
            //Delete First Page
            excelApp.DisplayAlerts = false;
            Microsoft.Office.Interop.Excel.Worksheet lastWorkSheet = (Microsoft.Office.Interop.Excel.Worksheet)excelWorkBook.Worksheets[1];
            lastWorkSheet.Delete();
            excelApp.DisplayAlerts = true;

            //Set Defualt Page
            (excelWorkBook.Sheets[1] as Excel._Worksheet).Activate();

            excelWorkBook.SaveAs(FilePath, Default, Default, Default, false, Default, Excel.XlSaveAsAccessMode.xlNoChange, Default, Default, Default, Default, Default);
            excelWorkBook.Close();
            excelApp.Quit();
        }
コード例 #13
0
ファイル: TeaDutyRule.cs プロジェクト: zesus19/c4.v2.T
        private void ExportSingleStat(
            DateTime startDate,
            DateTime endDate,
            Excel._Workbook m_objBook,
            Excel.Sheets m_objSheets,
            Excel._Worksheet m_objSheet,
            Excel.Range m_objRange,
            Excel.Font m_objFont,
            System.Reflection.Missing m_objOpt)
        {
            object[,] objData;
            using (DataTable dt = new DutyInfoDA().GetTeacherStatSingle(startDate, endDate))
            {
                if (dt != null && dt.Rows.Count > 0)
                {
                    objData = new Object[dt.Rows.Count + 1, 6];
                    int days = SetAttendDays(startDate, endDate);
                    for (int i = 0; i < dt.Rows.Count; i++)
                    {
                        double attendCount       = Convert.ToInt32(dt.Rows[i][2]);
                        double shouldAttendCount = days;
                        double absenceCount      = shouldAttendCount - attendCount;
                        objData[i, 0] = dt.Rows[i][0].ToString();
                        objData[i, 1] = dt.Rows[i][1].ToString();
                        objData[i, 2] = shouldAttendCount;
                        objData[i, 3] = attendCount;
                        objData[i, 4] = absenceCount < 0 ? 0 : absenceCount;
                        objData[i, 5] = shouldAttendCount == 0 ? attendCount.ToString("0.00%") : (attendCount / shouldAttendCount).ToString("0.00%");
                    }

                    m_objSheets = (Excel.Sheets)m_objBook.Sheets;
                    m_objSheet  = (Excel._Worksheet)(m_objSheets.get_Item(3));
                    m_objRange  = m_objSheet.get_Range("A3", m_objOpt);
                    m_objRange  = m_objRange.get_Resize(dt.Rows.Count, 6);

                    m_objRange.Value = objData;

                    m_objRange.VerticalAlignment   = Excel.XlVAlign.xlVAlignCenter;
                    m_objRange.HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;
                    m_objRange.WrapText            = true;
                    m_objRange.Borders.LineStyle   = System.Windows.Forms.BorderStyle.FixedSingle;
                    m_objFont      = m_objRange.Font;
                    m_objFont.Size = 9;

                    m_objRange                     = m_objSheet.get_Range("A" + (dt.Rows.Count + 4).ToString(), m_objOpt);
                    m_objRange.Value               = "园所:";
                    m_objRange.Font.Bold           = true;
                    m_objRange.Font.Size           = 9;
                    m_objRange.HorizontalAlignment = Excel.XlHAlign.xlHAlignLeft;

                    m_objRange                     = m_objSheet.get_Range("B" + (dt.Rows.Count + 4).ToString(), m_objOpt);
                    m_objRange.Value               = new GardenInfoDataAccess().GetGardenInfo().Tables[0].Rows[0][1].ToString();
                    m_objRange.Font.Bold           = true;
                    m_objRange.Font.Size           = 9;
                    m_objRange.HorizontalAlignment = Excel.XlHAlign.xlHAlignLeft;

                    m_objRange                     = m_objSheet.get_Range("A" + (dt.Rows.Count + 5).ToString(), m_objOpt);
                    m_objRange.Value               = "统计开始日期:";
                    m_objRange.Font.Bold           = true;
                    m_objRange.Font.Size           = 9;
                    m_objRange.HorizontalAlignment = Excel.XlHAlign.xlHAlignLeft;

                    m_objRange                     = m_objSheet.get_Range("B" + (dt.Rows.Count + 5).ToString(), m_objOpt);
                    m_objRange.Value               = startDate.ToString("yyyy.MM.dd");
                    m_objRange.Font.Bold           = true;
                    m_objRange.Font.Size           = 9;
                    m_objRange.HorizontalAlignment = Excel.XlHAlign.xlHAlignLeft;

                    m_objRange                     = m_objSheet.get_Range("A" + (dt.Rows.Count + 6).ToString(), m_objOpt);
                    m_objRange.Value               = "统计结束日期:";
                    m_objRange.Font.Bold           = true;
                    m_objRange.Font.Size           = 9;
                    m_objRange.HorizontalAlignment = Excel.XlHAlign.xlHAlignLeft;

                    m_objRange                     = m_objSheet.get_Range("B" + (dt.Rows.Count + 6).ToString(), m_objOpt);
                    m_objRange.Value               = endDate.ToString("yyyy.MM.dd");
                    m_objRange.Font.Bold           = true;
                    m_objRange.Font.Size           = 9;
                    m_objRange.HorizontalAlignment = Excel.XlHAlign.xlHAlignLeft;
                }
            }
        }
コード例 #14
0
        private void btn_GenExcel_Click(object sender, RoutedEventArgs e)
        {
            var dialogo = new winForm.FolderBrowserDialog();

            if (dialogo.ShowDialog() != winForm.DialogResult.OK)
            {
                return;
            }
            string path = dialogo.SelectedPath;

            string columna_final = "F";

            DataSet   ds    = new DataSet();
            DataTable table = new DataTable();

            string tienda_nombre;

            using (var db = new TiendaDbContext())
            {
                table.TableName = "Precios";
                table.Columns.Add("Codigo");
                table.Columns.Add("Descripcion");
                table.Columns.Add("Cantidad Buen Estado");
                table.Columns.Add("Precio Buen Estado");
                table.Columns.Add("Cantidad Defectuoso");
                table.Columns.Add("Precio Defectuoso");

                var existencias = db.Tiendas.Find(tienda).Productos.Where(p => p.CantidadTotal > 0);


                foreach (var item in existencias)
                {
                    table.Rows.Add(item.Codigo, item.Producto.Descripcion, item.CantidadBuenEstado, item.PrecioBuenEstado, item.CantidadDefectuoso, item.PrecioDefectuoso);
                }
                tienda_nombre = existencias.First().Tienda.Nombre;

                path += "\\" + tienda_nombre + " " + DateTime.Today.ToShortDateString().Replace('/', '-') + ".xlsx";
            }
            System.Reflection.Missing d = System.Reflection.Missing.Value;
            int inHeaderLength = 3, inColumn = 0, inRow = 0;

            OfficeExcel.Application excel_app       = new OfficeExcel.Application();
            OfficeExcel.Workbook    excel_work_book = excel_app.Workbooks.Add(1);

            OfficeExcel.Worksheet excel_sheet = excel_work_book.Sheets.Add(After: excel_work_book.Sheets[excel_work_book.Sheets.Count], Count: 1);
            excel_sheet.Name = table.TableName;

            for (int i = 0; i < table.Columns.Count; i++)
            {
                excel_sheet.Cells[inHeaderLength + 1, i + 1] = table.Columns[i].ColumnName.ToUpper();
            }

            for (int m = 0; m < table.Rows.Count; m++)
            {
                for (int n = 0; n < table.Columns.Count; n++)
                {
                    inColumn = n + 1;
                    inRow    = inHeaderLength + 2 + m;
                    excel_sheet.Cells[inRow, inColumn] = table.Rows[m].ItemArray[n].ToString();
                    if (m % 2 == 0)
                    {
                        excel_sheet.Range["A" + inRow.ToString(), columna_final + inRow.ToString()].Interior.Color = ColorTranslator.FromHtml("#FCE4D6");
                    }
                }
            }
            excel_sheet.Range["D" + (inHeaderLength + 1).ToString()].EntireColumn.NumberFormat = "0.00";
            excel_sheet.Range["F" + (inHeaderLength + 1).ToString()].EntireColumn.NumberFormat = "0.00";


            var cell_header = excel_sheet.Range["A1", columna_final + inHeaderLength.ToString()];

            cell_header.Merge(false);
            cell_header.Interior.Color      = System.Drawing.Color.White;
            cell_header.Font.Color          = System.Drawing.Color.Gray;
            cell_header.HorizontalAlignment = OfficeExcel.XlHAlign.xlHAlignCenter;
            cell_header.VerticalAlignment   = OfficeExcel.XlVAlign.xlVAlignCenter;
            cell_header.Font.Size           = 26;
            excel_sheet.Cells[1, 1]         = tienda_nombre;

            cell_header                = excel_sheet.Range["A" + (inHeaderLength + 1).ToString(), columna_final + (inHeaderLength + 1).ToString()];
            cell_header.Font.Bold      = true;
            cell_header.Font.Color     = System.Drawing.Color.White;
            cell_header.Interior.Color = System.Drawing.ColorTranslator.FromHtml("#ED7D31");


            // excel_sheet.Range(from, to)
            // EntireColumn es para referirse a la columna
            // NumberFormat = "0.00"
            // NumberFormat = "MM/DD/YYYY" for dates

            excel_sheet.Columns.AutoFit();

            excel_app.DisplayAlerts = false;
            OfficeExcel.Worksheet lastWS = (OfficeExcel.Worksheet)excel_work_book.Worksheets[1];
            lastWS.Delete();
            excel_app.DisplayAlerts = true;

            (excel_work_book.Sheets[1] as OfficeExcel._Worksheet).Activate();

            excel_work_book.SaveAs(Filename: path, ReadOnlyRecommended: false, AccessMode: OfficeExcel.XlSaveAsAccessMode.xlNoChange);
            excel_work_book.Close();

            MessageBox.Show("Se ha generado la tabla de precios");
        }
コード例 #15
0
        private void ExportDataSetToExcel(DataSet ds, string strPath)
        {
            int inHeaderLength = 3, inColumn = 0, inRow = 0;

            System.Reflection.Missing Default = System.Reflection.Missing.Value;
            //Create Excel File
            //    strPath +=  DateTime.Now.ToString().Replace(':', '-') + ".xlsx";
            OfficeExcel.Application excelApp = new OfficeExcel.Application();
            OfficeExcel.Workbook    excelWorkBook = excelApp.Workbooks.Add(1);
            foreach (DataTable dtbl in ds.Tables)
            {
                //Create Excel WorkSheet
                OfficeExcel.Worksheet excelWorkSheet = excelWorkBook.Sheets.Add(Default, excelWorkBook.Sheets[excelWorkBook.Sheets.Count], 1, Default);
                excelWorkSheet.Name = dtbl.TableName;//Name worksheet

                //Write Column Name
                for (int i = 0; i < dtbl.Columns.Count; i++)
                {
                    excelWorkSheet.Cells[inHeaderLength + 1, i + 1] = dtbl.Columns[i].ColumnName.ToUpper();
                }

                //Write Rows
                for (int m = 0; m < dtbl.Rows.Count; m++)
                {
                    for (int n = 0; n < dtbl.Columns.Count; n++)
                    {
                        inColumn = n + 1;
                        inRow    = inHeaderLength + 2 + m;
                        excelWorkSheet.Cells[inRow, inColumn] = dtbl.Rows[m].ItemArray[n].ToString();
                        if (m % 2 == 0)
                        {
                            excelWorkSheet.get_Range("A" + inRow.ToString(), "G" + inRow.ToString()).Interior.Color = System.Drawing.ColorTranslator.FromHtml("#FCE4D6");
                        }
                    }
                }

                //Excel Header
                OfficeExcel.Range cellRang = excelWorkSheet.get_Range("A1", "G3");
                cellRang.Merge(false);
                cellRang.Interior.Color      = System.Drawing.Color.White;
                cellRang.Font.Color          = System.Drawing.Color.Gray;
                cellRang.HorizontalAlignment = OfficeExcel.XlHAlign.xlHAlignCenter;
                cellRang.VerticalAlignment   = OfficeExcel.XlVAlign.xlVAlignCenter;
                cellRang.Font.Size           = 26;
                excelWorkSheet.Cells[1, 1]   = "Picquet Move Control System";

                //Style table column names
                cellRang                = excelWorkSheet.get_Range("A4", "G4");
                cellRang.Font.Bold      = true;
                cellRang.Font.Color     = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.White);
                cellRang.Interior.Color = System.Drawing.ColorTranslator.FromHtml("#ED7D31");
                excelWorkSheet.get_Range("F4").EntireColumn.HorizontalAlignment = OfficeExcel.XlHAlign.xlHAlignRight;
                //Formate price column
                excelWorkSheet.get_Range("F5").EntireColumn.NumberFormat = "0.00";
                //Auto fit columns
                excelWorkSheet.Columns.AutoFit();
            }

            //Delete First Page
            excelApp.DisplayAlerts = false;
            Microsoft.Office.Interop.Excel.Worksheet lastWorkSheet = (Microsoft.Office.Interop.Excel.Worksheet)excelWorkBook.Worksheets[1];
            lastWorkSheet.Delete();
            excelApp.DisplayAlerts = true;

            //Set Defualt Page
            (excelWorkBook.Sheets[1] as OfficeExcel._Worksheet).Activate();

            excelWorkBook.SaveAs(strPath, Default, Default, Default, false, Default, OfficeExcel.XlSaveAsAccessMode.xlNoChange, Default, Default, Default, Default, Default);
            excelWorkBook.Close();
            excelApp.Quit();

            MessageBox.Show("Excel generated successfully \n As " + strPath);
        }
コード例 #16
0
        /// <summary>
        /// Function to export dataset to excel
        /// </summary>
        /// <param name="ds"></param>
        public static void ExportDataSetToExcel(DataSet ds, string strPath)
        {
            int inHeaderLength = 0, inColumn = 0, inRow = 0; //Declaration de int.


            System.Reflection.Missing Default = System.Reflection.Missing.Value;

            //Create Excel File
            strPath += @"Bilan des appels HNO " + DateTime.Now.ToString("dd-MM-yyyy_hh-mm") + ".xlsx";

            OfficeExcel.Application excelApp = new OfficeExcel.Application();
            OfficeExcel.Workbook    excelWorkBook = excelApp.Workbooks.Add(1);
            excelApp.Visible = true;
            ds.Tables[0].Columns[0].ColumnName = "Date & Heure d'appel";
            ds.Tables[0].Columns[1].ColumnName = "Numéro de ticket.";
            ds.Tables[0].Columns[2].ColumnName = "Nom du Client";
            ds.Tables[0].Columns[3].ColumnName = "Adresse du Client";
            ds.Tables[0].Columns[4].ColumnName = "Nom de l'appelant";
            ds.Tables[0].Columns[5].ColumnName = "Numéro de téléphone";
            ds.Tables[0].Columns[6].ColumnName = "Description de la panne";
            ds.Tables[0].Columns[7].ColumnName = "Technicien Appelé";
            ds.Tables[0].Columns[8].ColumnName = "Observations";

            foreach (System.Data.DataTable dtbl in ds.Tables)
            {
                //Create Excel WorkSheet
                OfficeExcel.Worksheet excelWorkSheet = excelWorkBook.Sheets.Add(Default, excelWorkBook.Sheets[excelWorkBook.Sheets.Count], 1, Default);

                excelWorkSheet.Name = dtbl.TableName = "Resumé";//Name worksheet

                //Write Column Name
                for (int i = 0; i < dtbl.Columns.Count; i++)
                {
                    excelWorkSheet.Cells[inHeaderLength + 1, i + 1] = dtbl.Columns[i].ColumnName.ToUpper();
                }



                //Write Rows
                for (int m = 0; m < dtbl.Rows.Count; m++)
                {
                    for (int n = 0; n < dtbl.Columns.Count; n++)
                    {
                        inColumn = n + 1;
                        inRow    = inHeaderLength + 2 + m;

                        excelWorkSheet.Cells.NumberFormat = "@"; // this allows us to keep the 0 at the start of our text elements!!!! important.


                        excelWorkSheet.Cells[inRow, inColumn] = dtbl.Rows[m].ItemArray[n].ToString();
                        if (m % 2 == 0)
                        {
                            excelWorkSheet.get_Range("A" + inRow.ToString(), "I" + inRow.ToString()).Interior.Color = System.Drawing.ColorTranslator.FromHtml("#FCE4D6");
                        }
                    }
                }
                //Excel Header

                Range line = (Range)excelWorkSheet.Rows[1];
                line.Insert();

                // Finding the last elements of my table :

                OfficeExcel.Range last  = excelWorkSheet.Cells.SpecialCells(OfficeExcel.XlCellType.xlCellTypeLastCell, Type.Missing);
                OfficeExcel.Range range = excelWorkSheet.get_Range("A2", last);
                //this draws around the range area between A2 and the last element of the table.
                range.BorderAround(XlLineStyle.xlDouble);

                // Excel table style
                OfficeExcel.Range cellRang = excelWorkSheet.get_Range("B1", "H1");
                cellRang.Merge(true); // makes a single cell between B1 and H1

                cellRang.Interior.Color      = System.Drawing.Color.White;
                cellRang.Font.Color          = System.Drawing.Color.Blue;
                cellRang.HorizontalAlignment = OfficeExcel.XlHAlign.xlHAlignCenter;
                cellRang.VerticalAlignment   = OfficeExcel.XlVAlign.xlVAlignCenter;
                cellRang.Font.Size           = 26;

                // this draws the borders of the excel document you selected.
                cellRang.BorderAround(XlLineStyle.xlDouble);

                //title of excel file
                excelWorkSheet.Cells[1, 2] = "Title of EXCEL FILE";



                //autofit errything together
                excelWorkSheet.Columns.AutoFit();



                ////optional if needed
                ////[if you need it in an int]
                //int lastUsedRow = last.Row;
                //int lastUsedColumn = last.Column;
                //// using last elements of the table.



                //Style table column names
                //cellRang = excelWorkSheet.get_Range("A4", "G4");
                //cellRang.Font.Bold = true;
                //cellRang.Font.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.White);
                //cellRang.Interior.Color = System.Drawing.ColorTranslator.FromHtml("#ED7D31");
                //excelWorkSheet.get_Range("F4").EntireColumn.HorizontalAlignment = OfficeExcel.XlHAlign.xlHAlignRight;
                ////Formate price column
                //excelWorkSheet.get_Range("F5").EntireColumn.NumberFormat = "0.00";
                ////Auto fit columns
                //excelWorkSheet.Columns.AutoFit();
            }

            //Delete First Page
            excelApp.DisplayAlerts = false;
            Microsoft.Office.Interop.Excel.Worksheet lastWorkSheet = (Microsoft.Office.Interop.Excel.Worksheet)excelWorkBook.Worksheets[1];
            lastWorkSheet.Delete(); // Efface la feuille Feuil1 d'excel.
            excelApp.DisplayAlerts = true;

            //Set Defualt Page
            (excelWorkBook.Sheets[1] as OfficeExcel._Worksheet).Activate();

            excelWorkBook.SaveAs(strPath, Default, Default, Default, false, Default, OfficeExcel.XlSaveAsAccessMode.xlNoChange, Default, Default, Default, Default, Default);
            excelWorkBook.Close();
            excelApp.Quit();

            Console.WriteLine("Excel generated successfully \n As " + strPath);
            return;
        }
コード例 #17
0
        public void ExcelExport(System.Data.DataTable dt, string SheetName)
        {
            Microsoft.Office.Interop.Excel.Application appexcel = new Microsoft.Office.Interop.Excel.Application();
            SaveFileDialog savefiledialog = new SaveFileDialog();

            System.Reflection.Missing miss = System.Reflection.Missing.Value;
            appexcel = new Microsoft.Office.Interop.Excel.Application();
            Microsoft.Office.Interop.Excel.Workbook  workbookdata  = appexcel.Workbooks.Add(System.Type.Missing);
            Microsoft.Office.Interop.Excel.Worksheet worksheetdata = (Microsoft.Office.Interop.Excel.Worksheet)workbookdata.Worksheets[1];
            //Microsoft.Office.Interop.Excel.Range rangedata;

            //创建Excel
            //Microsoft.Office.Interop.Excel.Application ExcelApp = new Microsoft.Office.Interop.Excel.Application();
            //Microsoft.Office.Interop.Excel.Workbook ExcelBook = appexcel.Workbooks.Add(System.Type.Missing);
            ////创建工作表(即Excel里的子表sheet) 1表示在子表sheet1里进行数据导出
            //Microsoft.Office.Interop.Excel.Worksheet ExcelSheet = (Microsoft.Office.Interop.Excel.Worksheet)ExcelBook.Worksheets[1];
            ////设置Sheet标题
            string start = "A1";
            string end   = ChangeASC(dt.Columns.Count) + "1";

            Microsoft.Office.Interop.Excel.Range _Range = (Microsoft.Office.Interop.Excel.Range)worksheetdata.get_Range(start, end);
            _Range.Merge(0);                     //单元格合并动作(要配合上面的get_Range()进行设计)
            _Range = worksheetdata.get_Range(start, end);
            _Range.HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenter;
            _Range.Font.Size           = 22;        //设置字体大小
            _Range.Font.Name           = "宋体";      //设置字体的种类
            worksheetdata.Cells[1, 1]  = SheetName; //Excel单元格赋值
            _Range.EntireColumn.AutoFit();          //自动调整列宽

            //设置对象不可见
            appexcel.Visible = false;
            System.Globalization.CultureInfo currentci = System.Threading.Thread.CurrentThread.CurrentCulture;
            System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-us");

            //workbookdata = appexcel.Workbooks.Add(miss);
            //worksheetdata = (Microsoft.Office.Interop.Excel.Worksheet)workbookdata.Worksheets.Add(miss, miss, miss, miss);

            //给工作表赋名称
            worksheetdata.Name = SheetName;

            start  = "A2";
            end    = ChangeASC(dt.Columns.Count) + "2";
            _Range = worksheetdata.get_Range(start, end);
            _Range.HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenter;
            for (int i = 0; i < dt.Columns.Count; i++)
            {
                worksheetdata.Cells[2, i + 1] = dt.Columns[i].ColumnName.ToString();
            }

            //因为第一行已经写了表头,所以所有数据都应该从a2开始
            //rangedata = worksheetdata.get_Range("a3", miss);
            //Microsoft.Office.Interop.Excel.Range xlrang = null;

            //irowcount为实际行数,最大行
            int irowcount = dt.Rows.Count;
            int iparstedrow = 1, icurrsize = 0;

            //ieachsize为每次写行的数值,可以自己设置
            int ieachsize = 1000;

            //icolumnaccount为实际列数,最大列数
            int icolumnaccount = dt.Columns.Count;

            //在内存中声明一个ieachsize×icolumnaccount的数组,ieachsize是每次最大存储的行数,icolumnaccount就是存储的实际列数
            object[,] objval = new object[ieachsize + 1, icolumnaccount];
            icurrsize        = ieachsize;

            while (iparstedrow <= irowcount)
            {
                if ((irowcount - iparstedrow) < ieachsize)
                {
                    icurrsize = irowcount - iparstedrow + 1;
                }
                //用for循环给数组赋值
                for (int i = 0; i < icurrsize; i++)
                {
                    for (int j = 0; j < icolumnaccount; j++)
                    {
                        objval[i, j] = dt.Rows[i + iparstedrow - 1][j].ToString();
                    }
                    //System.Windows.Forms.Application.DoEvents();
                }
                string X   = "A" + ((int)(iparstedrow + 2)).ToString();
                string col = "";
                if (icolumnaccount <= 26)
                {
                    col = ((char)('A' + icolumnaccount - 1)).ToString() + ((int)(iparstedrow + icurrsize + 1)).ToString();
                }
                else
                {
                    col = ((char)('A' + (icolumnaccount / 26 - 1))).ToString() + ((char)('A' + (icolumnaccount % 26 - 1))).ToString() + ((int)(iparstedrow + icurrsize + 1)).ToString();
                }
                _Range = worksheetdata.get_Range(X, col);
                // 调用range的value2属性,把内存中的值赋给excel
                _Range.Value2 = objval;
                _Range.EntireColumn.AutoFit(); //自动调整列宽
                _Range.HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenter;
                iparstedrow = iparstedrow + icurrsize;
            }

            //保存工作表
            System.Runtime.InteropServices.Marshal.ReleaseComObject(_Range);
            _Range = null;

            //调用方法关闭excel进程
            appexcel.Visible = true;
        }
コード例 #18
0
        //#region 导出全部数据到Excel中,可弹出保存对话框,但没用SaveFileDialog

        //public void printAll(System.Data.DataTable dt)
        //{
        //    //导出到execl
        //    try
        //    {
        //        //没有数据的话就不往下执行
        //        if (dt.Rows.Count == 0)
        //            return;
        //        //实例化一个Excel.Application对象
        //        Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application();

        //        //新增加一个工作簿,Workbook是直接保存,不会弹出保存对话框,加上Application会弹出保存对话框,值为false会报错
        //        excel.Application.Workbooks.Add(true);

        //        //让后台执行设置为不可见,为true的话会看到打开一个Excel,然后数据在往里写
        //        excel.Visible = false;
        //        //生成Excel中列头名称
        //        for (int i = 0; i < dt.Columns.Count; i++)
        //        {
        //            excel.Cells[1, i + 1] = dgvList.Columns[i].HeaderText;//输出DataGridView列头名
        //        }

        //        //把DataGridView当前页的数据保存在Excel中
        //        if (dt.Rows.Count > 0)
        //        {
        //            for (int i = 0; i < dt.Rows.Count; i++)//控制Excel中行,上下的距离,就是可以到Excel最下的行数,比数据长了报错,比数据短了会显示不完
        //            {
        //                for (int j = 0; j < dt.Columns.Count; j++)//控制Excel中列,左右的距离,就是可以到Excel最右的列数,比数据长了报错,比数据短了会显示不完
        //                {
        //                    string str = dt.Rows[i][j].ToString();
        //                    excel.Cells[i + 2, j + 1] = "'" + str;//i控制行,从Excel中第2行开始输出第一行数据,j控制列,从Excel中第1列输出第1列数据,"'" +是以string形式保存,所以遇到数字不会转成16进制
        //                }
        //            }
        //        }
        //        //设置禁止弹出保存和覆盖的询问提示框
        //        excel.DisplayAlerts = false;
        //        excel.AlertBeforeOverwriting = false;

        //        //保存工作簿,值为false会报错
        //        excel.Application.Workbooks.Add(true).Save();
        //        //保存excel文件
        //        excel.Save("D:" + "\\KKHMD.xls");

        //        //确保Excel进程关闭
        //        excel.Quit();
        //        excel = null;

        //    }
        //    catch (Exception ex)
        //    {
        //        MessageBox.Show(ex.Message, "错误提示");
        //    }

        //}

        //#endregion

        //#region 将DataGridView控件中数据导出到Excel
        ///// <summary>
        ///// 将DataGridView控件中数据导出到Excel
        ///// </summary>
        ///// <param name="gridView">DataGridView对象</param>
        ///// <param name="isShowExcle">是否显示Excel界面</param>
        ///// <returns></returns>
        //public bool ExportDataGridview(DataGridView gridView, bool isShowExcle)
        //{
        //    if (gridView.Rows.Count == 0)
        //        return false;
        //    //建立Excel对象
        //    Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application();
        //    excel.Application.Workbooks.Add(true);
        //    excel.Visible = isShowExcle;
        //    //生成字段名称
        //    for (int i = 0; i < gridView.ColumnCount; i++)
        //    {
        //        excel.Cells[1, i + 1] = gridView.Columns[i].HeaderText;
        //    }
        //    //填充数据
        //    for (int i = 0; i < gridView.RowCount - 1; i++)
        //    {
        //        for (int j = 0; j < gridView.ColumnCount; j++)
        //        {
        //            if (gridView[j, i].ValueType == typeof(string))
        //            {
        //                excel.Cells[i + 2, j + 1] = "'" + gridView[j, i].Value.ToString();
        //            }
        //            else
        //            {
        //                excel.Cells[i + 2, j + 1] = gridView[j, i].Value.ToString();
        //            }
        //        }
        //    }
        //    return true;
        //}
        //#endregion

        //#region 将所有数据导出到Excel:
        //private void GenerateExcelAll(System.Data.DataTable dt, DataGridView dgv)
        //{
        //    //导出到execl
        //    try
        //    {
        //        //没有数据的话就不往下执行
        //        if (dt.Rows.Count == 0)
        //        {
        //            MessageBox.Show("当前页面没有数据可以导出!", "导出结果", MessageBoxButtons.OK);
        //            return;
        //        }
        //        //实例化一个Excel.Application对象
        //        Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application();
        //        //新增加一个工作簿,Workbook是直接保存,不会弹出保存对话框,加上Application会弹出保存对话框,值为false会报错
        //        excel.Application.Workbooks.Add(true);
        //        //让后台执行设置为不可见,为true的话会看到打开一个Excel,然后数据在往里写
        //        excel.Visible = false;
        //        //生成Excel中列头名称
        //        //生成Excel中列头名称------------------------------**********************************---------------------------------------
        //        int columnCount = 0;
        //        for (int i = 0; i < dgv.Columns.Count; i++)
        //        {
        //            if (dgv.Columns[i].Visible)
        //            {
        //                columnCount = columnCount + 1;
        //            }
        //        }
        //        string[] headers = new string[columnCount];
        //        int index = 0;
        //        for (int i = 0; i < dgv.Columns.Count; i++)
        //        {
        //            if (dgv.Columns[i].Visible)
        //            {
        //                headers[index] = dgv.Columns[i].HeaderText;
        //                index = index + 1;
        //            }
        //        }
        //        for (int i = 0; i < columnCount; i++)
        //        {
        //            excel.Cells[1, i + 1] = headers[i];
        //            //if (dgv.Columns[i].ValueType == typeof(DateTime))
        //            //{
        //            //    Microsoft.Office.Interop.Excel.Range headRange = excel.Cells[1, i - 1] as Microsoft.Office.Interop.Excel.Range;// as Range;//获取表头单元格
        //            //    headRange.ColumnWidth = 22;//设置列宽
        //            //}
        //        }
        //        //---------------------------------------------------**********************************----------------------------------------
        //        ////////----------------------------------------**************************************---------------------------------------------
        //        //把DataGridView当前页的数据保存在Excel中
        //        if (dt.Rows.Count > 0)
        //        {
        //            int ccc = dgv.Columns.Count;
        //            for (int i = 0; i < dt.Rows.Count; i++)//控制Excel中行,上下的距离,就是可以到Excel最下的行数,比数据长了报错,比数据短了会显示不完
        //            {
        //                int columnIndex = 0;
        //                for (int j = 0; j < dt.Columns.Count; j++)//控制Excel中列,左右的距离,就是可以到Excel最右的列数,比数据长了报错,比数据短了会显示不完
        //                {
        //                    if (dgv.Columns[j].Visible)
        //                    {
        //                        columnIndex = columnIndex + 1;
        //                        string str = dt.Rows[i][j].ToString();
        //                        excel.Cells[i + 2, columnIndex] = "'" + str;//i控制行,从Excel中第2行开始输出第一行数据,j控制列,从Excel中第1列输出第1列数据,"'" +是以string形式保存,所以遇到数字不会转成16进制
        //                    }
        //                }
        //            }
        //        }
        //        //设置禁止弹出保存和覆盖的询问提示框
        //        excel.DisplayAlerts = false;
        //        excel.AlertBeforeOverwriting = false;
        //        //保存工作簿,值为false会报错
        //        //excel.Application.Workbooks.Add(false);//.Save();
        //        //确保Excel进程关闭
        //        excel.Save();
        //        excel.Quit();
        //        excel = null;
        //        MessageBox.Show("您所查询的所有数据已经成功导出到您指定的目录!", "导出结果", MessageBoxButtons.OK);
        //    }
        //    catch (Exception ex)
        //    {
        //        MessageBox.Show(ex.Message, "错误提示");
        //    }
        //}
        //#endregion

        #endregion

        /// <summary>

        /// 另存新档按钮   导出成Excel

        /// </summary>

        private void SaveToExcel() //另存新档按钮   导出成Excel
        {
            SaveFileDialog saveFileDialog = new SaveFileDialog();

            saveFileDialog.Filter = "Execl files (*.xls)|*.xls";

            saveFileDialog.FilterIndex = 0;

            saveFileDialog.RestoreDirectory = true;

            saveFileDialog.CreatePrompt = true;

            saveFileDialog.Title = "Export Excel File To";


            saveFileDialog.ShowDialog();

            string strName = saveFileDialog.FileName;

            if (string.IsNullOrEmpty(strName))
            {
                return;
            }

            System.Reflection.Missing miss = System.Reflection.Missing.Value;


            Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.ApplicationClass();

            Microsoft.Office.Interop.Excel.Workbooks books = (Microsoft.Office.Interop.Excel.Workbooks)excel.Workbooks;

            Microsoft.Office.Interop.Excel.Workbook book = (Microsoft.Office.Interop.Excel.Workbook)(books.Add(miss));

            Microsoft.Office.Interop.Excel.Worksheet sheet = (Microsoft.Office.Interop.Excel.Worksheet)book.ActiveSheet;

            sheet.Name = "test";


            int colIndex = 0;

            foreach (DataGridViewColumn column in dgvList.Columns)
            {
                colIndex++;

                excel.Cells[1, colIndex] = column.HeaderText;
            }


            for (int i = 0; i < dgvList.Rows.Count; i++)
            {
                for (int j = 0; j < dgvList.Columns.Count; j++)
                {
                    if (dgvList.Columns[j].Name == "IdCard")
                    {
                        excel.Cells[i + 2, j + 1] = "'" + dgvList.Rows[i].Cells[j].Value.ToString();
                    }
                    else
                    {
                        excel.Cells[i + 2, j + 1] = dgvList.Rows[i].Cells[j].Value.ToString();
                    }
                }
            }



            sheet.SaveAs(strName, miss, miss, miss, miss, miss, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange, miss, miss);



            book.Close(false, miss, miss);

            books.Close();

            excel.Quit();


            //System.Runtime.InteropServices.Marshal.ReleaseComObject();

            System.Runtime.InteropServices.Marshal.ReleaseComObject(sheet);

            System.Runtime.InteropServices.Marshal.ReleaseComObject(book);

            System.Runtime.InteropServices.Marshal.ReleaseComObject(books);

            System.Runtime.InteropServices.Marshal.ReleaseComObject(excel);

            GC.Collect();
        }
コード例 #19
0
        string ExportDataSetToExcel(DataSet ds, string strPath, string AppointmentDate, string ContractorName)
        {
            try
            {
                string pathImg = strPath + "Logo.png";
                int    inHeaderLength = 9, inColumn = 0, inRow = 0;
                System.Reflection.Missing Default = System.Reflection.Missing.Value;
                //Create Excel File
                strPath += ContractorName + "_" + AppointmentDate + ".xlsx";
                if (File.Exists(strPath))
                {
                    File.Delete(strPath);
                }

                OfficeExcel.Application excelApp      = new OfficeExcel.Application();
                OfficeExcel.Workbook    excelWorkBook = excelApp.Workbooks.Add(1);

                foreach (DataTable dtbl in ds.Tables)
                {
                    //Create Excel WorkSheet
                    OfficeExcel.Worksheet excelWorkSheet = (OfficeExcel.Worksheet)excelWorkBook.Sheets["Sheet1"];

                    excelWorkSheet.Name = dtbl.TableName;

                    //Insert logo company
                    var filePath = pathImg;
                    if (!File.Exists(filePath))
                    {
                        Resource1.Logo.Save(filePath);
                    }

                    excelWorkSheet.Shapes.AddPicture(filePath, MsoTriState.msoFalse, MsoTriState.msoCTrue, 0, 0, 200, 45);

                    //Write Column Name
                    for (int i = 0; i < dtbl.Columns.Count; i++)
                    {
                        excelWorkSheet.Cells[inHeaderLength, i + 1] = dtbl.Columns[i].ColumnName.ToUpper();
                    }

                    //Write Rows
                    for (int m = 0; m < dtbl.Rows.Count; m++)
                    {
                        for (int n = 0; n < dtbl.Columns.Count; n++)
                        {
                            inColumn = n + 1;
                            inRow    = inHeaderLength + 1 + m;
                            excelWorkSheet.Cells[inRow, inColumn] = dtbl.Rows[m].ItemArray[n].ToString();
                        }
                    }

                    int EndRow = dtbl.Rows.Count + inHeaderLength;

                    excelWorkSheet.get_Range("A10", "G" + EndRow).HorizontalAlignment = OfficeExcel.XlHAlign.xlHAlignLeft;
                    excelWorkSheet.get_Range("A1", "G" + EndRow).Cells.Font.Name      = "Times New Roman";

                    OfficeExcel.Range cellrange = excelWorkSheet.get_Range("A9", "G" + EndRow);
                    cellrange.Borders.LineStyle = OfficeExcel.XlLineStyle.xlContinuous;
                    cellrange.Borders.Weight    = OfficeExcel.XlBorderWeight.xlThin;
                    cellrange.VerticalAlignment = OfficeExcel.XlVAlign.xlVAlignCenter;

                    //Excel Header
                    OfficeExcel.Range cellHeaderVN = excelWorkSheet.get_Range("A1", "G3");
                    cellHeaderVN.Merge(false);
                    cellHeaderVN.HorizontalAlignment = OfficeExcel.XlHAlign.xlHAlignCenter;
                    cellHeaderVN.Font.Bold           = OfficeExcel.XlBorderWeight.xlMedium;
                    cellHeaderVN.Font.Size           = 18;
                    excelWorkSheet.Cells[1, 1]       = "Phiếu đóng tiền làm thẻ cho công nhân nhà thầu ";

                    OfficeExcel.Range cellHeaderTW = excelWorkSheet.get_Range("A4", "G4");
                    cellHeaderTW.Merge(false);
                    cellHeaderTW.HorizontalAlignment = OfficeExcel.XlHAlign.xlHAlignCenter;
                    cellHeaderTW.Font.Bold           = OfficeExcel.XlBorderWeight.xlMedium;
                    cellHeaderTW.Font.Size           = 18;
                    excelWorkSheet.Cells[4, 1]       = "承包商工人建卡付款表";

                    //Contractor Name
                    OfficeExcel.Range cellContractorName = excelWorkSheet.get_Range("A6", "G6");
                    cellContractorName.Merge(false);
                    cellContractorName.Font.Bold = OfficeExcel.XlBorderWeight.xlMedium;
                    excelWorkSheet.Cells[6, 1]   = "Tên nhà thầu 承包商名稱: " + ContractorName;

                    // export report date
                    OfficeExcel.Range cellHeaderAppDate = excelWorkSheet.get_Range("A7", "G7");
                    cellHeaderAppDate.Merge(false);
                    excelWorkSheet.Cells[7, 1] = "Ngày hẹn đăng ký thẻ 預計登記卡日期: " + AppointmentDate;

                    //Style table column names
                    OfficeExcel.Range cellHeader = excelWorkSheet.get_Range("A9", "G9");
                    cellHeader.Font.Bold           = true;
                    cellHeader.Interior.Color      = System.Drawing.ColorTranslator.FromHtml("#C5D9F1");
                    cellHeader.HorizontalAlignment = OfficeExcel.XlHAlign.xlHAlignCenter;

                    //Total Price
                    OfficeExcel.Range cellTotalPrice = excelWorkSheet.get_Range("E" + EndRow, "F" + EndRow);
                    cellTotalPrice.Font.Color = System.Drawing.Color.Red;
                    cellTotalPrice.Font.Bold  = true;

                    //Auto fit columns
                    excelWorkSheet.Columns.AutoFit();
                    excelWorkSheet.get_Range("G:G", System.Type.Missing).EntireColumn.ColumnWidth = 27;
                }

                //Set Defualt Page
                (excelWorkBook.Sheets[1] as OfficeExcel._Worksheet).Activate();

                excelWorkBook.SaveAs(strPath);
                excelWorkBook.Close();
                excelApp.Quit();
                return(strPath);
            }
            catch (Exception e)
            {
                Loger.Error(e);
                throw new Exception(e.Message);
            }
        }
コード例 #20
0
        public List <cls_Sheet0home_info> ReadfindngFile(string instertext)
        {
            System.Reflection.Missing missingValue = System.Reflection.Missing.Value;

            try
            {
                List <cls_Sheet0home_info>       Result       = new List <cls_Sheet0home_info>();
                List <cls_Sheet0home_info>       filterResult = new List <cls_Sheet0home_info>();
                System.Globalization.CultureInfo CurrentCI    = System.Threading.Thread.CurrentThread.CurrentCulture;
                System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-US");

                Microsoft.Office.Interop.Excel.Application excelApp = new Microsoft.Office.Interop.Excel.Application();
                Microsoft.Office.Interop.Excel.Workbook    analyWK  = excelApp.Workbooks.Open(instertext, Type.Missing, true, Type.Missing,
                                                                                              "htc", Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing,
                                                                                              Type.Missing, Type.Missing, Type.Missing, Type.Missing);

                Microsoft.Office.Interop.Excel.Worksheet WS = (Microsoft.Office.Interop.Excel.Worksheet)analyWK.Worksheets[2];
                Microsoft.Office.Interop.Excel.Range     rng;
                rng = WS.get_Range(WS.Cells[2, 1], WS.Cells[WS.UsedRange.Rows.Count, 30]);
                int rowCount = WS.UsedRange.Rows.Count - 1;
                object[,] o = new object[1, 1];
                o           = (object[, ])rng.Value2;

                for (int i = 1; i <= rowCount; i++)
                {
                    bgWorker.ReportProgress(0, "读入数据中 筛选库  :  " + i.ToString() + "/" + rowCount.ToString());
                    cls_Sheet0home_info temp = new cls_Sheet0home_info();

                    #region 基础信息

                    temp.guanjianci_A = "";
                    if (o[i, 1] != null)
                    {
                        temp.guanjianci_A = o[i, 1].ToString().Trim();
                    }

                    if (temp.guanjianci_A == "" || temp.guanjianci_A == null)
                    {
                        continue;
                    }
                    temp.beizhu1 = "";
                    if (o[i, 1] != null)
                    {
                        temp.beizhu1 = "行-" + i.ToString().Trim();
                    }

                    #endregion

                    filterResult.Add(temp);
                }

                WS       = (Microsoft.Office.Interop.Excel.Worksheet)analyWK.Worksheets[1];
                rng      = WS.get_Range(WS.Cells[2, 1], WS.Cells[WS.UsedRange.Rows.Count, 30]);
                rowCount = WS.UsedRange.Rows.Count - 1;
                o        = new object[1, 1];
                o        = (object[, ])rng.Value2;

                for (int i = 1; i <= rowCount; i++)
                {
                    bgWorker.ReportProgress(0, "读入数据中1  :  " + i.ToString() + "/" + rowCount.ToString());
                    cls_Sheet0home_info temp = new cls_Sheet0home_info();

                    #region 基础信息

                    temp.guanjianci_A = "";
                    if (o[i, 1] != null)
                    {
                        temp.guanjianci_A = o[i, 1].ToString().Trim();
                    }

                    if (temp.guanjianci_A == "" || temp.guanjianci_A == null)
                    {
                        continue;
                    }

                    temp.sousuorenqi_B = "";
                    if (o[i, 2] != null)
                    {
                        temp.sousuorenqi_B = o[i, 2].ToString().Trim();
                    }

                    temp.zaixianshangpinshu_C = "";
                    if (o[i, 3] != null)
                    {
                        temp.zaixianshangpinshu_C = o[i, 3].ToString().Trim();
                    }

                    temp.zhifuzhuanhuanlv_D = "";
                    if (o[i, 4] != null)
                    {
                        temp.zhifuzhuanhuanlv_D = o[i, 4].ToString().Trim();
                    }

                    temp.dianjilv_E = "";
                    if (o[i, 5] != null)
                    {
                        temp.dianjilv_E = o[i, 5].ToString().Trim(); //clsCommHelp.objToDateTime(o[i, 5]);
                    }
                    temp.shangchengdianjizhanbi_F = "";
                    if (o[i, 6] != null)
                    {
                        temp.shangchengdianjizhanbi_F = o[i, 6].ToString().Trim(); //clsCommHelp.objToDateTime(o[i, 6]);
                    }
                    temp.sousuoci_G = "";
                    if (o[i, 7] != null)
                    {
                        temp.sousuoci_G = o[i, 7].ToString().Trim();
                    }
                    temp.anlanqi_H = "";
                    if (o[i, 8] != null)
                    {
                        temp.anlanqi_H = o[i, 8].ToString().Trim();
                    }


                    #endregion
                    if (temp.guanjianci_A == "viv0官方旗舰店手机")
                    {
                    }

                    List <cls_Sheet0home_info> filtered = filterResult.FindAll(s => temp.guanjianci_A.Contains(s.guanjianci_A));
                    if (filtered.Count > 0)
                    {
                        temp.beizhu1        = "无效";
                        WS.Cells[i + 1, 12] = temp.beizhu1;
                    }
                    Result.Add(temp);
                }

                if (this.radioButton2.Checked == true)
                {
                    //excelApp.Visible = true;
                    //excelApp.ScreenUpdating = true;
                    List <cls_Sheet0home_info> DeleteList = Result.FindAll(s => s.beizhu1 != null && s.beizhu1.Contains("无效"));
                    string[] s11 = new string[DeleteList.Count];
                    for (int i = 0; i < DeleteList.Count; i++)
                    {
                        s11[i] = DeleteList[i].beizhu1;
                    }

                    WS.get_Range(WS.Cells[1, 1], WS.Cells[1, 10]).AutoFilter(9, s11, Microsoft.Office.Interop.Excel.XlAutoFilterOperator.xlFilterValues, Type.Missing, true);
                    WS.get_Range(WS.Cells[2, 1], WS.Cells[50000, 20]).EntireRow.Delete(0);

                    WS.get_Range(WS.Cells[1, 1], WS.Cells[1, 10]).AutoFilter(9, Type.Missing, Microsoft.Office.Interop.Excel.XlAutoFilterOperator.xlFilterValues, Type.Missing, false);
                }
                //excelApp.Visible = true;
                //excelApp.ScreenUpdating = true;

                analyWK.SaveAs(strFileName, missingValue, missingValue, missingValue, missingValue, missingValue, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange, missingValue, missingValue, missingValue, missingValue, missingValue);
                excelApp.DisplayAlerts = false;

                clsCommHelp.CloseExcel(excelApp, analyWK);

                return(Result);
            }
            catch (Exception ex)
            {
                MessageBox.Show("表格存在异常,请参照原始表格格式修改:" + ex.Message);
                return(null);

                throw ex;
            }
        }
コード例 #21
0
        /// <summary>
        /// 导出速度最快
        /// </summary>
        /// <param name="list"><列名,数据></param>
        /// <param name="filepath"></param>
        /// <returns></returns>
        public static void NewExport(List <DictionaryEntry> list, string filepath)
        {
            Microsoft.Office.Interop.Excel.Application appexcel = new Microsoft.Office.Interop.Excel.Application();
            System.Reflection.Missing miss = System.Reflection.Missing.Value;
            appexcel = new Microsoft.Office.Interop.Excel.Application();
            Microsoft.Office.Interop.Excel.Workbook  workbookdata  = null;
            Microsoft.Office.Interop.Excel.Worksheet worksheetdata = null;
            Microsoft.Office.Interop.Excel.Range     rangedata;

            workbookdata = appexcel.Workbooks.Add();

            //设置对象不可见
            appexcel.Visible       = false;
            appexcel.DisplayAlerts = false;
            try
            {
                foreach (var lv in list)
                {
                    var keys   = lv.Key as List <string>;
                    var values = lv.Value as List <IList <object> >;
                    worksheetdata = (Microsoft.Office.Interop.Excel.Worksheet)workbookdata.Worksheets.Add(miss, workbookdata.ActiveSheet);


                    for (int i = 0; i < keys.Count - 1; i++)
                    {
                        //给工作表赋名称
                        worksheetdata.Name            = keys[0];//列名的第一个数据位表名
                        worksheetdata.Cells[1, i + 1] = keys[i + 1];
                    }

                    //因为第一行已经写了表头,所以所有数据都应该从a2开始
                    rangedata = worksheetdata.get_Range("a1", miss);
                    Microsoft.Office.Interop.Excel.Range xlrang = null;

                    //irowcount为实际行数,最大行
                    int irowcount = values.Count;
                    int iparstedrow = 0, icurrsize = 0;

                    //ieachsize为每次写行的数值,可以自己设置
                    int ieachsize = 10000;

                    //icolumnaccount为实际列数,最大列数
                    int icolumnaccount = keys.Count - 1;

                    //在内存中声明一个ieachsize×icolumnaccount的数组,ieachsize是每次最大存储的行数,icolumnaccount就是存储的实际列数
                    object[,] objval = new object[ieachsize, icolumnaccount];
                    icurrsize        = ieachsize;

                    while (iparstedrow < irowcount)
                    {
                        if ((irowcount - iparstedrow) < ieachsize)
                        {
                            icurrsize = irowcount - iparstedrow;
                        }

                        //用for循环给数组赋值
                        for (int i = 0; i < icurrsize; i++)
                        {
                            for (int j = 0; j < icolumnaccount; j++)
                            {
                                var v = values[i + iparstedrow][j];
                                objval[i, j] = v != null?v.ToString() : "";
                            }
                        }
                        string X   = "A" + ((int)(iparstedrow + 2)).ToString();
                        string col = "";
                        if (icolumnaccount <= 26)
                        {
                            col = ((char)('A' + icolumnaccount - 1)).ToString() + ((int)(iparstedrow + icurrsize + 1)).ToString();
                        }
                        else
                        {
                            col = ((char)('A' + (icolumnaccount / 26 - 1))).ToString() + ((char)('A' + (icolumnaccount % 26 - 1))).ToString() + ((int)(iparstedrow + icurrsize + 1)).ToString();
                        }
                        xlrang = worksheetdata.get_Range(X, col);
                        xlrang.NumberFormat = "@";
                        // 调用range的value2属性,把内存中的值赋给excel
                        xlrang.Value2 = objval;
                        iparstedrow   = iparstedrow + icurrsize;
                    }
                }
                ((Microsoft.Office.Interop.Excel.Worksheet)workbookdata.Worksheets["Sheet1"]).Delete();
                ((Microsoft.Office.Interop.Excel.Worksheet)workbookdata.Worksheets["Sheet2"]).Delete();
                ((Microsoft.Office.Interop.Excel.Worksheet)workbookdata.Worksheets["Sheet3"]).Delete();
                //保存工作表
                workbookdata.SaveAs(filepath, miss, miss, miss, miss, miss, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange, miss, miss, miss);
                workbookdata.Close(false, miss, miss);
                appexcel.Workbooks.Close();
                appexcel.Quit();
                appexcel = null;
            }
            catch (Exception)
            {
                throw;
            }
            finally
            {
                if (appexcel != null)
                {
                    workbookdata.Close(true, Type.Missing, Type.Missing);
                    workbookdata = null;
                    appexcel.Quit();
                    appexcel = null;
                }
            }
        }
コード例 #22
0
        public void ImportCardExcelFile(string id, string name, string grade,
                                        string atClass, bool isStu, string savePath)
        {
            if (grade.Equals("全部"))
            {
                grade = string.Empty;
            }

            if (atClass.Equals("全部"))
            {
                atClass = string.Empty;
            }

            DataSet cardInfo;

            object[,] objData;

            string excelTempFilePath = AppDomain.CurrentDomain.BaseDirectory;

            Excel.Application         m_objExcel  = null;
            Excel.Workbooks           m_objBooks  = null;
            Excel._Workbook           m_objBook   = null;
            Excel.Sheets              m_objSheets = null;
            Excel._Worksheet          m_objSheet  = null;
            Excel.Range               m_objRange  = null;
            Excel.Font                m_objFont   = null;
            System.Reflection.Missing m_objOpt    = System.Reflection.Missing.Value;

            try
            {
                if (isStu)
                {
                    using (CardInfoDA cardInfoDA = new CardInfoDA())
                    {
                        cardInfo = cardInfoDA.GetStuCardNumberForExcel(id, name, grade, atClass);
                    }

                    if (cardInfo.Tables[0].Rows.Count > 0)
                    {
                        objData = new Object[cardInfo.Tables[0].Rows.Count, 7];

                        for (int i = 0; i < cardInfo.Tables[0].Rows.Count; i++)
                        {
                            objData[i, 0] = cardInfo.Tables[0].Rows[i][0].ToString();
                            objData[i, 1] = cardInfo.Tables[0].Rows[i][1].ToString();
                            objData[i, 2] = cardInfo.Tables[0].Rows[i][2].ToString();
                            objData[i, 3] = cardInfo.Tables[0].Rows[i][3].ToString();
                            objData[i, 4] = cardInfo.Tables[0].Rows[i][4].ToString();
                            objData[i, 5] = cardInfo.Tables[0].Rows[i][5].ToString();
                            objData[i, 6] = cardInfo.Tables[0].Rows[i][6].ToString();
                        }

                        m_objExcel = new Excel.Application();
                        m_objBooks = (Excel.Workbooks)m_objExcel.Workbooks;
                        m_objBook  = (Excel._Workbook)m_objBooks.Open(excelTempFilePath + @"report\StudentCardInfo.xls",
                                                                      m_objOpt, m_objOpt, m_objOpt, m_objOpt, m_objOpt, m_objOpt, m_objOpt, m_objOpt, m_objOpt,
                                                                      m_objOpt, m_objOpt, m_objOpt);

                        m_objSheets = (Excel.Sheets)m_objBook.Sheets;
                        m_objSheet  = (Excel._Worksheet)(m_objSheets.get_Item(1));
                        m_objRange  = m_objSheet.get_Range("A3", m_objOpt);
                        m_objRange  = m_objRange.get_Resize(cardInfo.Tables[0].Rows.Count, 7);

                        m_objRange.Value = objData;

                        m_objRange.VerticalAlignment   = Excel.XlVAlign.xlVAlignCenter;
                        m_objRange.HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;
                        m_objRange.WrapText            = true;
                        m_objRange.Borders.LineStyle   = System.Windows.Forms.BorderStyle.FixedSingle;
                        m_objFont      = m_objRange.Font;
                        m_objFont.Size = 9;

                        m_objBook.SaveAs(savePath, m_objOpt, m_objOpt,
                                         m_objOpt, m_objOpt, m_objOpt, Excel.XlSaveAsAccessMode.xlNoChange,
                                         m_objOpt, m_objOpt, m_objOpt, m_objOpt);
                        m_objBook.Close(false, m_objOpt, m_objOpt);
                        m_objExcel.Quit();

                        System.Runtime.InteropServices.Marshal.ReleaseComObject(m_objFont);
                        System.Runtime.InteropServices.Marshal.ReleaseComObject(m_objRange);
                        System.Runtime.InteropServices.Marshal.ReleaseComObject(m_objSheet);
                        System.Runtime.InteropServices.Marshal.ReleaseComObject(m_objSheets);
                        System.Runtime.InteropServices.Marshal.ReleaseComObject(m_objBook);
                        System.Runtime.InteropServices.Marshal.ReleaseComObject(m_objBooks);
                        System.Runtime.InteropServices.Marshal.ReleaseComObject(m_objExcel);
                    }
                }
                else
                {
                    using (CardInfoDA cardInfoDA = new CardInfoDA())
                    {
                        cardInfo = cardInfoDA.GetTeaCardNumberForExcel(id, name, grade, atClass);
                    }

                    if (cardInfo.Tables[0].Rows.Count > 0)
                    {
                        objData = new Object[cardInfo.Tables[0].Rows.Count, 6];

                        for (int i = 0; i < cardInfo.Tables[0].Rows.Count; i++)
                        {
                            objData[i, 0] = cardInfo.Tables[0].Rows[i][0].ToString();
                            objData[i, 1] = cardInfo.Tables[0].Rows[i][1].ToString();
                            objData[i, 2] = cardInfo.Tables[0].Rows[i][2].ToString();
                            objData[i, 3] = cardInfo.Tables[0].Rows[i][3].ToString();
                            objData[i, 4] = cardInfo.Tables[0].Rows[i][4].ToString();
                            objData[i, 5] = cardInfo.Tables[0].Rows[i][5].ToString();
                        }

                        m_objExcel = new Excel.Application();
                        m_objBooks = (Excel.Workbooks)m_objExcel.Workbooks;
                        m_objBook  = (Excel._Workbook)m_objBooks.Open(excelTempFilePath + @"report\TeacherCardInfo.xls",
                                                                      m_objOpt, m_objOpt, m_objOpt, m_objOpt, m_objOpt, m_objOpt, m_objOpt, m_objOpt, m_objOpt,
                                                                      m_objOpt, m_objOpt, m_objOpt);

                        m_objSheets = (Excel.Sheets)m_objBook.Sheets;
                        m_objSheet  = (Excel._Worksheet)(m_objSheets.get_Item(1));
                        m_objRange  = m_objSheet.get_Range("A3", m_objOpt);
                        m_objRange  = m_objRange.get_Resize(cardInfo.Tables[0].Rows.Count, 6);

                        m_objRange.Value = objData;

                        m_objRange.VerticalAlignment   = Excel.XlVAlign.xlVAlignCenter;
                        m_objRange.HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;
                        m_objRange.WrapText            = true;
                        m_objRange.Borders.LineStyle   = System.Windows.Forms.BorderStyle.FixedSingle;
                        m_objFont      = m_objRange.Font;
                        m_objFont.Size = 9;

                        m_objBook.SaveAs(savePath, m_objOpt, m_objOpt,
                                         m_objOpt, m_objOpt, m_objOpt, Excel.XlSaveAsAccessMode.xlNoChange,
                                         m_objOpt, m_objOpt, m_objOpt, m_objOpt);
                        m_objBook.Close(false, m_objOpt, m_objOpt);
                        m_objExcel.Quit();

                        System.Runtime.InteropServices.Marshal.ReleaseComObject(m_objFont);
                        System.Runtime.InteropServices.Marshal.ReleaseComObject(m_objRange);
                        System.Runtime.InteropServices.Marshal.ReleaseComObject(m_objSheet);
                        System.Runtime.InteropServices.Marshal.ReleaseComObject(m_objSheets);
                        System.Runtime.InteropServices.Marshal.ReleaseComObject(m_objBook);
                        System.Runtime.InteropServices.Marshal.ReleaseComObject(m_objBooks);
                        System.Runtime.InteropServices.Marshal.ReleaseComObject(m_objExcel);
                    }
                }
            }
            catch (Exception ex)
            {
                Util.WriteLog(ex.Message, Util.EXCEPTION_LOG_TITLE);
            }
            finally
            {
                m_objFont   = null;
                m_objRange  = null;
                m_objSheet  = null;
                m_objSheets = null;
                m_objBook   = null;
                m_objBooks  = null;
                m_objExcel  = null;

                GC.Collect();
            }
        }
コード例 #23
0
        private static void ToExcel(List <Sheet> sheets, List <DataTable> dts, string file)
        {
            excel.Application appexcel      = null;
            excel.Workbook    workbookdata  = null;
            excel.Worksheet   worksheetdata = null;
            try
            {
                appexcel     = new excel.Application();
                workbookdata = appexcel.Workbooks.Add();
                //设置对象不可见
                appexcel.Visible       = false;
                appexcel.DisplayAlerts = false;
                System.Reflection.Missing miss = System.Reflection.Missing.Value;

                int sheetNum = 0;
                foreach (var sheet in sheets)
                {
                    DataTable dt = dts[sheetNum];
                    worksheetdata = (excel.Worksheet)workbookdata.Worksheets.Add(miss, workbookdata.ActiveSheet);
                    //给工作表赋名称
                    worksheetdata.Name = sheet.SheetName;
                    for (int i = 0; i < sheet.Fileds.Count; i++)
                    {
                        worksheetdata.Cells[1, i + 1] = sheet.Fileds[i].RowName;
                    }

                    //irowcount为实际行数,最大行
                    int irowcount = dt.Rows.Count;
                    //已执行的行数
                    int iparstedrow = 0;
                    //单次执行的条数
                    int icurrsize = 0;

                    //ieachsize为每次写行的数值,可以自己设置
                    int ieachsize = 10000;

                    //icolumnaccount为实际列数,最大列数
                    int icolumnaccount = sheet.Fileds.Count;

                    //在内存中声明一个ieachsize×icolumnaccount的数组,ieachsize是每次最大存储的行数,icolumnaccount就是存储的实际列数
                    object[,] objval = new object[ieachsize, icolumnaccount];
                    icurrsize        = ieachsize;
                    while (iparstedrow < irowcount)
                    {
                        if ((irowcount - iparstedrow) < ieachsize)
                        {
                            icurrsize = irowcount - iparstedrow;
                        }

                        //用for循环给数组赋值
                        for (int i = 0; i < icurrsize; i++)
                        {
                            DataRow row = dt.Rows[iparstedrow + i];
                            for (int j = 0; j < icolumnaccount; j++)
                            {
                                if (dt.Columns.Contains(sheet.Fileds[j].FldName))
                                {
                                    var v = row[sheet.Fileds[j].FldName];
                                    objval[i, j] = v != null?v.ToString() : "";
                                }
                                else
                                {
                                    objval[i, j] = "N/A";
                                }
                            }
                        }
                        string X   = "A" + ((int)(iparstedrow + 2)).ToString(); //因为第一行已经写了表头,所以所有数据都应该从a2开始
                        string col = "";
                        if (icolumnaccount <= 26)
                        {
                            col = ((char)('A' + icolumnaccount - 1)).ToString() + ((int)(iparstedrow + icurrsize + 1)).ToString();
                        }
                        else
                        {
                            col = ((char)('A' + (icolumnaccount / 26 - 1))).ToString() + ((char)('A' + (icolumnaccount % 26 - 1))).ToString() + ((int)(iparstedrow + icurrsize + 1)).ToString();
                        }
                        excel.Range xlrang = worksheetdata.get_Range(X, col);
                        xlrang.NumberFormat = "@";
                        //调用range的value2属性,把内存中的值赋给excel
                        xlrang.Value2 = objval;
                        iparstedrow   = iparstedrow + icurrsize;
                    }
                    sheetNum++;
                }

                ((excel.Worksheet)workbookdata.Worksheets["Sheet1"]).Delete();
                ((excel.Worksheet)workbookdata.Worksheets["Sheet2"]).Delete();
                ((excel.Worksheet)workbookdata.Worksheets["Sheet3"]).Delete();
                //保存工作表
                workbookdata.SaveAs(file, miss, miss, miss, miss, miss, excel.XlSaveAsAccessMode.xlNoChange, miss, miss, miss);
                workbookdata.Close(false, miss, miss);
                appexcel.Workbooks.Close();
                appexcel.Quit();

                System.Runtime.InteropServices.Marshal.ReleaseComObject(workbookdata);
                System.Runtime.InteropServices.Marshal.ReleaseComObject(appexcel.Workbooks);
                System.Runtime.InteropServices.Marshal.ReleaseComObject(appexcel);
                GC.Collect();
            }
            catch (Exception ex)
            {
                throw;
            }
            finally
            {
            }
        }
コード例 #24
0
ファイル: TeaDutyRule.cs プロジェクト: zesus19/c4.v2.T
        public void ImportTeaOutDetailsReports(DataSet teaOutInfo, string savePath, DateTime getBegDate, DateTime getEndDate)
        {
            object[,] objData;

            string excelTempFilePath = AppDomain.CurrentDomain.BaseDirectory;

            Excel.Application         m_objExcel  = null;
            Excel.Workbooks           m_objBooks  = null;
            Excel._Workbook           m_objBook   = null;
            Excel.Sheets              m_objSheets = null;
            Excel._Worksheet          m_objSheet  = null;
            Excel.Range               m_objRange  = null;
            Excel.Font                m_objFont   = null;
            System.Reflection.Missing m_objOpt    = System.Reflection.Missing.Value;

            try
            {
                if (teaOutInfo.Tables[0].Rows.Count > 0)
                {
                    objData = new Object[teaOutInfo.Tables[0].Rows.Count, 8];

                    for (int i = 0; i < teaOutInfo.Tables[0].Rows.Count; i++)
                    {
                        objData[i, 0] = teaOutInfo.Tables[0].Rows[i][0].ToString();
                        objData[i, 1] = teaOutInfo.Tables[0].Rows[i][1].ToString();
                        objData[i, 2] = teaOutInfo.Tables[0].Rows[i][2].ToString();
                        objData[i, 3] = teaOutInfo.Tables[0].Rows[i][3].ToString();
                        objData[i, 4] = teaOutInfo.Tables[0].Rows[i][4].ToString();
                        objData[i, 5] = teaOutInfo.Tables[0].Rows[i][5].ToString();
                        objData[i, 6] = teaOutInfo.Tables[0].Rows[i][6].ToString();
                        objData[i, 7] = teaOutInfo.Tables[0].Rows[i][7].ToString();
                    }

                    m_objExcel = new Excel.Application();
                    m_objBooks = (Excel.Workbooks)m_objExcel.Workbooks;
                    m_objBook  = (Excel._Workbook)m_objBooks.Open(excelTempFilePath + @"report\TeacherOutDetails.xls",
                                                                  m_objOpt, m_objOpt, m_objOpt, m_objOpt, m_objOpt, m_objOpt, m_objOpt, m_objOpt, m_objOpt,
                                                                  m_objOpt, m_objOpt, m_objOpt);

                    m_objSheets = (Excel.Sheets)m_objBook.Sheets;
                    m_objSheet  = (Excel._Worksheet)(m_objSheets.get_Item(1));
                    m_objRange  = m_objSheet.get_Range("A3", m_objOpt);
                    m_objRange  = m_objRange.get_Resize(teaOutInfo.Tables[0].Rows.Count, 8);

                    m_objRange.Value = objData;

                    m_objRange.VerticalAlignment   = Excel.XlVAlign.xlVAlignCenter;
                    m_objRange.HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;
                    m_objRange.WrapText            = true;
                    m_objRange.Borders.LineStyle   = System.Windows.Forms.BorderStyle.FixedSingle;
                    m_objFont      = m_objRange.Font;
                    m_objFont.Size = 9;

                    m_objRange                     = m_objSheet.get_Range("A" + (teaOutInfo.Tables[0].Rows.Count + 4).ToString(), m_objOpt);
                    m_objRange.Value               = "园所:      " + new GardenInfoDataAccess().GetGardenInfo().Tables[0].Rows[0][1].ToString();
                    m_objRange.Font.Bold           = true;
                    m_objRange.Font.Size           = 12;
                    m_objRange.HorizontalAlignment = Excel.XlHAlign.xlHAlignLeft;

                    m_objRange                     = m_objSheet.get_Range("A" + (teaOutInfo.Tables[0].Rows.Count + 5).ToString(), m_objOpt);
                    m_objRange.Value               = "统计日期:  " + getBegDate.ToString("yyyy.MM.dd") + "-" + getEndDate.ToString("yyyy.MM.dd");
                    m_objRange.Font.Bold           = true;
                    m_objRange.Font.Size           = 12;
                    m_objRange.HorizontalAlignment = Excel.XlHAlign.xlHAlignLeft;

                    m_objBook.SaveAs(savePath, m_objOpt, m_objOpt,
                                     m_objOpt, m_objOpt, m_objOpt, Excel.XlSaveAsAccessMode.xlNoChange,
                                     m_objOpt, m_objOpt, m_objOpt, m_objOpt);
                    m_objBook.Close(false, m_objOpt, m_objOpt);
                    m_objExcel.Quit();

                    System.Runtime.InteropServices.Marshal.ReleaseComObject(m_objFont);
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(m_objRange);
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(m_objSheet);
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(m_objSheets);
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(m_objBook);
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(m_objBooks);
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(m_objExcel);
                }
            }
            catch (Exception ex)
            {
                Util.WriteLog(ex.Message, Util.EXCEPTION_LOG_TITLE);
            }
            finally
            {
                m_objFont   = null;
                m_objRange  = null;
                m_objSheet  = null;
                m_objSheets = null;
                m_objBook   = null;
                m_objBooks  = null;
                m_objExcel  = null;

                GC.Collect();

                KillProcess();
            }
        }
コード例 #25
0
ファイル: ArcTsg.aspx.cs プロジェクト: maziesmith/KOS
        protected void Excel_Click(object sender, ImageClickEventArgs e)
        {
            List <Data> data = GetData();

            System.Reflection.Missing missingValue = System.Reflection.Missing.Value;

            //создаем и инициализируем объекты Excel
            Excel.Application App = new Microsoft.Office.Interop.Excel.Application();
            //добавляем в файл Excel книгу. Параметр в данной функции - используемый для создания книги шаблон.
            //если нас устраивает вид по умолчанию, то можно спокойно передавать пустой параметр.
            Excel.Workbooks xlsWBs = App.Workbooks;
            Excel.Workbook  xlsWB  = xlsWBs.Add(missingValue);
            //и использует из нее
            Excel.Sheets    xlsSheets = xlsWB.Worksheets;
            Excel.Worksheet xlsSheet  = (Excel.Worksheet)xlsSheets.get_Item(1);

            string[] cols = { "№ события", "Источник",    "Диспетчер",  "дата/время", "Вид услуги", "Зона", "Событие", "Описание", "Принял", "дата/время",
                              "Исполнил",  "Комментарий", "дата/время", "Тайминг" };
            for (int i = 0; i < cols.Length; i++)
            {
                xlsSheet.Cells[1, i + 1] = cols[i];
            }
            for (int i = 0; i < data.Count; i++)
            {
                xlsSheet.Cells[i + 2, 1]  = data[i].Id;
                xlsSheet.Cells[i + 2, 2]  = data[i].Sourse;
                xlsSheet.Cells[i + 2, 3]  = data[i].IO;
                xlsSheet.Cells[i + 2, 4]  = data[i].Date1;
                xlsSheet.Cells[i + 2, 5]  = data[i].RegistrId;
                xlsSheet.Cells[i + 2, 6]  = data[i].LiftId;
                xlsSheet.Cells[i + 2, 7]  = data[i].TypeId;
                xlsSheet.Cells[i + 2, 8]  = data[i].EventId;
                xlsSheet.Cells[i + 2, 9]  = data[i].ToApp;
                xlsSheet.Cells[i + 2, 10] = data[i].DateToApp;
                xlsSheet.Cells[i + 2, 11] = data[i].Who;
                xlsSheet.Cells[i + 2, 12] = data[i].Comment;
                xlsSheet.Cells[i + 2, 13] = data[i].Date2;
                xlsSheet.Cells[i + 2, 14] = data[i].Timing;
            }

            string name = DateTime.Now.ToString("ddMMyyyy-hhmm") + User.Identity.Name + ".xls";

            xlsWB.SaveAs(Request.PhysicalApplicationPath + KOS.App_Code.ClearTemp._folder + "\\" + name,
                         Microsoft.Office.Interop.Excel.XlFileFormat.xlExcel8,
                         missingValue,
                         missingValue,
                         missingValue,
                         missingValue,
                         Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange,
                         missingValue,
                         missingValue,
                         missingValue,
                         missingValue,
                         missingValue);
            //закрываем книгу
            xlsWB.Close(false, missingValue, missingValue);
            xlsWB     = null;
            xlsWBs    = null;
            xlsSheet  = null;
            xlsSheets = null;
            //закрываем приложение
            App.Quit();
            //уменьшаем счетчики ссылок на COM объекты, что, по идее должно их освободить.
            // System.Runtime.InteropServices.Marshal.ReleaseComObject(xlsSheet);
            // System.Runtime.InteropServices.Marshal.ReleaseComObject(xlsSheets);
            // System.Runtime.InteropServices.Marshal.ReleaseComObject(xlsWB);
            //  System.Runtime.InteropServices.Marshal.ReleaseComObject(xlsWBs);
            System.Runtime.InteropServices.Marshal.ReleaseComObject(App);
            Download.NavigateUrl = "~/" + KOS.App_Code.ClearTemp._folder + "\\" + name;
            Download.Text        = "Скачать документ";
            Download.Visible     = true;
        }
コード例 #26
0
ファイル: ExcelHelper.cs プロジェクト: jessyWjq/Individua
        /// <summary>
        /// json 导出到excel
        /// </summary>
        /// <param name="json">传入json数组(单级)</param>
        /// <param name="filepath">导出路径</param>
        /// <param name="title">到处数据表的列头名</param>
        /// <returns></returns>
        public bool Json2Excel(string json, string filepath, string title = "")
        {
            //json转array
            JavaScriptSerializer js    = new JavaScriptSerializer();
            ArrayList            lists = js.Deserialize <ArrayList>(json);
            //导出状态
            bool bSuccess = true;

            Microsoft.Office.Interop.Excel.Application appexcel = new Microsoft.Office.Interop.Excel.Application();
            System.Reflection.Missing miss = System.Reflection.Missing.Value;
            appexcel = new Microsoft.Office.Interop.Excel.Application();
            Microsoft.Office.Interop.Excel.Workbook  workbookdata  = null;
            Microsoft.Office.Interop.Excel.Worksheet worksheetdata = null;
            Microsoft.Office.Interop.Excel.Range     rangedata;

            workbookdata = appexcel.Workbooks.Add();

            //设置对象不可见
            appexcel.Visible       = false;
            appexcel.DisplayAlerts = false;
            try
            {
                //新建工作簿
                worksheetdata = (Microsoft.Office.Interop.Excel.Worksheet)workbookdata.Worksheets.Add(miss, workbookdata.ActiveSheet);
                Dictionary <string, object> item_0 = (Dictionary <string, object>)lists[0];
                int keys_count = item_0.Keys.Count, items_count = lists.Count;
                int xx = 0;
                //如果有手工赋值的列表名字,那就用手工赋值的,如果没有,就用字段名
                if (title != "")
                {
                    string[] titles = title.Split(new char[1] {
                        '|'
                    });
                    for (int TI = 0; TI < titles.Length; TI++)
                    {
                        worksheetdata.Cells[1, TI + 1] = titles[TI];
                        xx++;
                    }
                }
                else
                {
                    foreach (string key in item_0.Keys)
                    {
                        if (key.Substring(key.IndexOf("_"), key.Length) != "TEMP" && key.Substring(key.IndexOf("_"), key.Length) != "BTN")
                        {
                            //为列头赋值
                            worksheetdata.Cells[1, xx + 1] = key;
                            xx++;
                        }
                    }
                }
                //因为第一行已经写了表头,所以所有数据都应该从a2开始
                rangedata = worksheetdata.get_Range("a2", miss);
                Microsoft.Office.Interop.Excel.Range xlrang = null;
                //irowcount为实际行数,最大行
                int irowcount = items_count;         //实际行数??
                int iparstedrow = 0, icurrsize = 0;
                //ieachsize为每次写行的数值,可以自己设置
                //int ieachsize = 10000;
                //icolumnaccount为实际列数,最大列数
                int icolumnaccount = keys_count;
                //确定表格的写入范围
                string X   = "A" + ((int)(iparstedrow + 2)).ToString();
                string col = "";
                if (icolumnaccount <= 26)
                {
                    col = ((char)('A' + icolumnaccount - 1)).ToString() + ((int)(items_count + 1)).ToString();
                }
                else
                {
                    col = ((char)('A' + (icolumnaccount / 26 - 1))).ToString() + ((char)('A' + (icolumnaccount % 26 - 1))).ToString() + ((int)(iparstedrow + icurrsize + 1)).ToString();
                }
                //x:左上角的单元格  col:右下角的单元格或整行
                xlrang = worksheetdata.get_Range(X, col);
                xlrang.NumberFormat    = "@";
                object[,] insert_infos = new object[items_count, keys_count];
                int row_count = 0;
                foreach (Dictionary <string, object> item in lists)
                {
                    int col_count = 0;
                    foreach (string key in item.Keys)
                    {
                        if (key.IndexOf("_") >= 0)
                        {
                            switch (key.Substring(key.IndexOf("_") + 1, key.Length - key.IndexOf("_") - 1))
                            {
                            case "TEMP":
                                break;

                            case "DATE":
                                insert_infos[row_count, col_count] = item[key].ToString().Substring(0, 10);
                                col_count++;
                                break;

                            case "COMMAS":
                                insert_infos[row_count, col_count] = String.Format("{0:N2}", item[key]);
                                col_count++;
                                break;

                            case "PERCENT":
                                insert_infos[row_count, col_count] = (Convert.ToDouble(item[key]) * 100).ToString() + "%";
                                col_count++;
                                break;

                            case "BTN":
                                break;

                            default:
                                insert_infos[row_count, col_count] = item[key];
                                col_count++;
                                break;
                            }
                        }
                        else
                        {
                            insert_infos[row_count, col_count] = item[key];
                            col_count++;
                        }
                    }
                    row_count++;
                }
                // 调用range的value2属性,把内存中的值赋给excel
                xlrang.Value2 = insert_infos;
                //((Microsoft.Office.Interop.Excel.Worksheet)workbookdata.Worksheets["Sheet1"]).Delete();
                //((Microsoft.Office.Interop.Excel.Worksheet)workbookdata.Worksheets["Sheet2"]).Delete();
                //((Microsoft.Office.Interop.Excel.Worksheet)workbookdata.Worksheets["Sheet3"]).Delete();
                //保存工作表
                workbookdata.SaveAs(filepath, miss, miss, miss, miss, miss, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange, miss, miss, miss);
                workbookdata.Close(false, miss, miss);
                appexcel.Workbooks.Close();
                appexcel.Quit();

                System.Runtime.InteropServices.Marshal.ReleaseComObject(workbookdata);
                System.Runtime.InteropServices.Marshal.ReleaseComObject(appexcel.Workbooks);
                System.Runtime.InteropServices.Marshal.ReleaseComObject(appexcel);
                GC.Collect();
            }
            catch (Exception ex)
            {
                string ErrorMsg = ex.Message;
                bSuccess = false;
            }
            finally
            {
                if (appexcel != null)
                {
                    // ExcelImportHelper.KillSpecialExcel(appexcel);
                }
            }
            return(bSuccess);
        }
コード例 #27
0
        /// <summary> 导出当前页DataGridView中的数据到EXcel中
        /// 导出当前页DataGridView中的数据到EXcel中
        /// </summary>
        /// <param name="strName">strName</param>
        public bool ExportTOExcel2(string strName, ref string sMsg)
        {
            if (ListLayer.Count == 0)
            {
                sMsg = "没有数据可供导出!";
                return(false);
            }
            if (strName.Length == 0)
            {
                sMsg = "文件路径[" + strName + "]不对!";
                return(false);
            }
            Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application();
            try
            {
                System.Reflection.Missing miss = System.Reflection.Missing.Value;

                excel.Visible = false;                //若是true,则在导出的时候会显示EXcel界面。
                excel.AlertBeforeOverwriting = false; //关闭修改之后是否保存

                if (excel == null)
                {
                    sMsg = "EXCEL无法启动!";
                    return(false);
                }
                Workbook book;
                if (File.Exists(strName))
                {
                    book = excel.Workbooks.Open(strName, miss, miss, miss, miss, miss, miss, miss, miss, miss, miss, miss, miss, miss, miss);//打开Excel
                }
                else
                {
                    book = excel.Workbooks.Add(miss);          //打开Excel
                }
                Worksheet sheet = book.Sheets[1] as Worksheet; //得到Excel的第一个sheet
                sheet.Name = "Sheet1";
                //生成Excel中列头名称
                excel.Cells[1, 1] = "管理层";
                for (int i = 0; i < ListLayer.Count; i++)
                {
                    excel.Cells[1, i + 2] = (i + 1).ToString();
                }

                //把DataGridView当前页的数据保存在Excel中
                for (int i = 0; i < ListLayer[0].ListCell.Count; i++)
                {
                    //string str1 = CStrPublicFun.Get2StrTo1(ListLayer[0].ListCell[i].Name, ListLayer[0].ListCell[i].Linker, 40, ' ');
                    //excel.Cells[i + 2, 1] = str1.Trim();

                    for (int j = 0; j < ListLayer.Count; j++)
                    {
                        excel.Cells[i + 2, j + 2] = ListLayer[j].ListCell[i].StrValue;
                    }
                }

                /*               for (int i = 0; i < ListLayer[0].ListIndex.Count - 1; i++)
                 *             {
                 *                 CExcel.CellsBackColor(excel, ListLayer[0].ListIndex[i] + 2, 1, ListLayer[0].ListIndex[i] + 2, ListLayer.Count + 1, Color.Gold);
                 *                 CExcel.CellsBackColor(excel, ListLayer[0].ListIndex[i] + 3, 1, ListLayer[0].ListIndex[i + 1] + 1, ListLayer.Count + 1, CExcel.BlackColor[i]);
                 *             }
                 */
                // CExcel.ColumnAutoFit(excel, 1, ListLayer.Count + 1);
                //  CExcel.CellsLineStyle(excel, 1, 1, ListLayer[0].ListIndex[5] + 1, ListLayer.Count + 1);
                //  CExcel.CellsAlignment(excel, 1, 1, ListLayer[0].ListIndex[5] + 1, 1, Constants.xlRight, Constants.xlCenter);
                //  CExcel.CellsAlignment(excel, 1, 2, ListLayer[0].ListIndex[5] + 1, ListLayer.Count + 1, Constants.xlCenter, Constants.xlCenter);
                if (File.Exists(strName))
                {
                    book.Save();
                }
                else
                {
                    book.SaveAs(strName, miss, miss, miss, miss, miss, XlSaveAsAccessMode.xlShared, miss, miss, miss, miss, miss);
                }

                excel.Quit();
                System.Runtime.InteropServices.Marshal.ReleaseComObject(sheet);
                System.Runtime.InteropServices.Marshal.ReleaseComObject(book);
                System.Runtime.InteropServices.Marshal.ReleaseComObject(excel);
                GC.Collect();
                return(true);
            }
            catch (Exception ex)
            {
                excel.Quit();
                sMsg = ex.Message;
                return(false);
            }
        }
コード例 #28
0
ファイル: TeaDutyRule.cs プロジェクト: zesus19/c4.v2.T
        private void ExportAllNormal(
            DateTime startDate,
            DateTime endDate,
            Excel._Workbook m_objBook,
            Excel.Sheets m_objSheets,
            Excel._Worksheet m_objSheet,
            Excel.Range m_objRange,
            Excel.Font m_objFont,
            System.Reflection.Missing m_objOpt)
        {
            object[,] objData;
            using (DataTable dt = new DutyInfoDA().GetTeaDutyNormal(string.Empty, string.Empty, string.Empty, string.Empty, startDate, endDate, 100).Tables[0])
            {
                if (dt != null && dt.Rows.Count > 0)
                {
                    objData = new Object[dt.Rows.Count, 6];

                    for (int i = 0; i < dt.Rows.Count; i++)
                    {
                        objData[i, 0] = dt.Rows[i][3].ToString();
                        objData[i, 1] = dt.Rows[i][2].ToString();
                        objData[i, 2] = dt.Rows[i][0].ToString();
                        objData[i, 3] = dt.Rows[i][1].ToString();
                        objData[i, 4] = dt.Rows[i][4].ToString();
                        objData[i, 5] = dt.Rows[i][5].ToString();
                    }

                    m_objSheets = (Excel.Sheets)m_objBook.Sheets;
                    m_objSheet  = (Excel._Worksheet)(m_objSheets.get_Item(1));
                    m_objRange  = m_objSheet.get_Range("A3", m_objOpt);
                    m_objRange  = m_objRange.get_Resize(dt.Rows.Count, 6);

                    m_objRange.Value = objData;

                    m_objRange.VerticalAlignment   = Excel.XlVAlign.xlVAlignCenter;
                    m_objRange.HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;
                    m_objRange.WrapText            = true;
                    m_objRange.Borders.LineStyle   = System.Windows.Forms.BorderStyle.FixedSingle;
                    m_objFont      = m_objRange.Font;
                    m_objFont.Size = 9;

                    m_objRange                     = m_objSheet.get_Range("A" + (dt.Rows.Count + 4).ToString(), m_objOpt);
                    m_objRange.Value               = "园所:";
                    m_objRange.Font.Bold           = true;
                    m_objRange.Font.Size           = 9;
                    m_objRange.HorizontalAlignment = Excel.XlHAlign.xlHAlignLeft;

                    m_objRange                     = m_objSheet.get_Range("B" + (dt.Rows.Count + 4).ToString(), m_objOpt);
                    m_objRange.Value               = new GardenInfoDataAccess().GetGardenInfo().Tables[0].Rows[0][1].ToString();
                    m_objRange.Font.Bold           = true;
                    m_objRange.Font.Size           = 9;
                    m_objRange.HorizontalAlignment = Excel.XlHAlign.xlHAlignLeft;

                    m_objRange                     = m_objSheet.get_Range("A" + (dt.Rows.Count + 5).ToString(), m_objOpt);
                    m_objRange.Value               = "统计开始日期:";
                    m_objRange.Font.Bold           = true;
                    m_objRange.Font.Size           = 9;
                    m_objRange.HorizontalAlignment = Excel.XlHAlign.xlHAlignLeft;

                    m_objRange                     = m_objSheet.get_Range("B" + (dt.Rows.Count + 5).ToString(), m_objOpt);
                    m_objRange.Value               = startDate.ToString("yyyy.MM.dd");
                    m_objRange.Font.Bold           = true;
                    m_objRange.Font.Size           = 9;
                    m_objRange.HorizontalAlignment = Excel.XlHAlign.xlHAlignLeft;

                    m_objRange                     = m_objSheet.get_Range("A" + (dt.Rows.Count + 6).ToString(), m_objOpt);
                    m_objRange.Value               = "统计结束日期:";
                    m_objRange.Font.Bold           = true;
                    m_objRange.Font.Size           = 9;
                    m_objRange.HorizontalAlignment = Excel.XlHAlign.xlHAlignLeft;

                    m_objRange                     = m_objSheet.get_Range("B" + (dt.Rows.Count + 6).ToString(), m_objOpt);
                    m_objRange.Value               = endDate.ToString("yyyy.MM.dd");
                    m_objRange.Font.Bold           = true;
                    m_objRange.Font.Size           = 9;
                    m_objRange.HorizontalAlignment = Excel.XlHAlign.xlHAlignLeft;
                }
            }
        }
コード例 #29
0
        /// <summary>
        /// 通过dataTable把数据库中数据导出到Excel中
        /// </summary>
        /// <param name="dgv"></param>
        /// <param name="sql"></param>
        /// <param name="fileName"></param>
        /// <returns></returns>
        public void DataBaseToExcel1(DataGridView dgv, string sql, string fileName)
        {
            DataSet ds = new DataSet();

            database.ReadDataBase(sql, "historydata", ds);
            System.Data.DataTable dtInfo = new System.Data.DataTable();
            dtInfo = ds.Tables["historydata"];

            if (dtInfo.Rows.Count == 0)
            {
                MessageBox.Show("没有数据!!!", "提示信息");
                return;
            }

            string         saveFileName = "";
            SaveFileDialog saveDialog   = new SaveFileDialog();

            saveDialog.DefaultExt = "xls";
            saveDialog.Filter     = "Excel文件|*.xls";
            saveDialog.FileName   = fileName;
            saveDialog.ShowDialog();
            saveFileName = saveDialog.FileName;

            if (saveFileName.IndexOf(":") < 0)
            {
                return;
            }

            //建立Excel对象
            Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application();

            if (excel == null)
            {
                MessageBox.Show("无法创建Excel对象,可能您的机子未安装Excel", "警告");
                return;
            }

            System.Reflection.Missing miss = System.Reflection.Missing.Value;
            Microsoft.Office.Interop.Excel.Workbooks workbooks = excel.Workbooks;
            Microsoft.Office.Interop.Excel.Workbook  workbook  = workbooks.Add(Microsoft.Office.Interop.Excel.XlWBATemplate.xlWBATWorksheet);
            Microsoft.Office.Interop.Excel.Worksheet worksheet;
            worksheet = (Microsoft.Office.Interop.Excel.Worksheet)workbook.Worksheets[1]; //取得sheet1

            int countItem = 0;                                                            //记录条数
            int k         = 0;


            //生成字段名称
            for (int i = 0; i < dgv.ColumnCount; i++)
            {
                excel.Cells[1, i + 1] = dgv.Columns[i].HeaderText;
            }

            //填充数据
            for (int i = 0; i < dtInfo.Rows.Count; i++)
            {
                countItem = i;
                if (countItem % 65535 == 0 && countItem > 0)//一个sheet最多容纳数据条数65535
                {
                    //新加sheet
                    worksheet = (Microsoft.Office.Interop.Excel.Worksheet)workbook.Worksheets.Add(miss, miss, miss, miss);
                    //生成字段名称
                    for (int ihead = 0; ihead < dgv.ColumnCount; ihead++)
                    {
                        excel.Cells[1, ihead + 1] = dgv.Columns[ihead].HeaderText;
                    }
                    k = 0;
                }
                for (int j = 0; j < dtInfo.Columns.Count; j++)
                {
                    if (dtInfo.Rows[i][j] == typeof(string))
                    {
                        worksheet.Cells[k + 2, j + 1] = "'" + dtInfo.Rows[i][j].ToString();
                    }
                    else
                    {
                        worksheet.Cells[k + 2, j + 1] = dtInfo.Rows[i][j].ToString();
                    }
                }
                k++;
            }

            if (saveFileName != "")
            {
                try
                {
                    workbook.Saved = true;

                    workbook.SaveCopyAs(saveFileName);



                    MessageBox.Show(saveFileName + "文件保存成功", "提示");
                }
                catch (Exception ex)
                {
                    MessageBox.Show("导出文件时出错,文件可能正被打开!\n" + ex.Message);
                }
            }
            excel.Quit();
            GC.Collect();//垃圾回收
        }
コード例 #30
0
        private void ExportExcel(DataSet ds)
        {
            int inHeaderLength = 2, inColumn = 0, inRow = 0;

            System.Reflection.Missing Default = System.Reflection.Missing.Value;
            //Create Excel File
            //strPath += @"\Excel" + DateTime.Now.ToString().Replace(':', '-') + ".xlsx";
            Excel.Application excelApp        = new Excel.Application();
            Excel.Workbook    excelWorkBook   = excelApp.Workbooks.Add(1);

            foreach (DataTable dtbl in ds.Tables)
            {
                //Create Excel WorkSheet
                Excel.Worksheet excelWorkSheet = excelWorkBook.Sheets.Add(Default, excelWorkBook.Sheets[excelWorkBook.Sheets.Count], 1, Default);
                excelWorkSheet.Name = dtbl.TableName;//Name worksheet

                //Write Column Name
                for (int i = 0; i < dtbl.Columns.Count; i++)
                {
                    excelWorkSheet.Cells[inHeaderLength + 1, i + 1] = dtbl.Columns[i].ColumnName.ToUpper();
                }
                //Write Rows
                int ma = dtbl.Rows.Count;
                int na = dtbl.Columns.Count + 2;
                for (int m = 0; m < dtbl.Rows.Count; m++)
                {
                    for (int n = 0; n < dtbl.Columns.Count; n++)
                    {
                        inColumn = n + 1;
                        inRow    = inHeaderLength + 2 + m;
                        excelWorkSheet.Cells[inRow, inColumn] = dtbl.Rows[m].ItemArray[n].ToString();
                        if (m % 2 == 0)
                        {
                            excelWorkSheet.get_Range("A" + inRow.ToString(), "E" + inRow.ToString()).Interior.Color = System.Drawing.ColorTranslator.FromHtml("#FCE4D6");
                        }

                        na = n;
                    }
                }
                //Excel Header
                Excel.Range cellRang = excelWorkSheet.get_Range("A1", "E2");
                cellRang.Merge(false);
                cellRang.Interior.Color      = System.Drawing.Color.White;
                cellRang.Font.Color          = System.Drawing.Color.Gray;
                cellRang.HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;
                cellRang.VerticalAlignment   = Excel.XlVAlign.xlVAlignCenter;
                cellRang.Font.Size           = 14;
                excelWorkSheet.Cells[1, 1]   = "Sales Report of " + DateTime.Today.AddDays(-1).ToString("yyyy-MM-dd");
                //excelWorkSheet.Cells[60, 5] = "=SUM(E4,E59)";
                //excelWorkSheet.Cells[dtbl.Rows.Count + 2, dtbl.Columns.Count].Formula = a;

                //Style table column names
                cellRang                = excelWorkSheet.get_Range("A3", "E3");
                cellRang.Font.Bold      = true;
                cellRang.Font.Color     = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.White);
                cellRang.Interior.Color = System.Drawing.ColorTranslator.FromHtml("#ED7D31");
                excelWorkSheet.get_Range("E4").EntireColumn.HorizontalAlignment = Excel.XlHAlign.xlHAlignRight;
                //Formate price column
                //excelWorkSheet.get_Range("F5").EntireColumn.NumberFormat = "0.00";
                //Auto fit columns
                excelWorkSheet.Columns.AutoFit();
            }
        }