コード例 #1
0
ファイル: AppType_Office.cs プロジェクト: mictxd/helpTXD
        public static void DataGridViewtoExcel_withAsk(DataGridView tmpDataTable, String strDefaultFileName)
        {
            SaveFileDialog saveFileDialog1 = new System.Windows.Forms.SaveFileDialog();

            saveFileDialog1.FileName   = strDefaultFileName;
            saveFileDialog1.DefaultExt = "*.xls";
            saveFileDialog1.Filter     = "Excel文件|*.xls";
            if (saveFileDialog1.ShowDialog() == DialogResult.OK)
            {
                HelpTXD.DataGridViewtoExcel(tmpDataTable, saveFileDialog1.FileName);
                HelpTXD.ShowInfo("导出完成。" + saveFileDialog1.FileName);
            }
        }
コード例 #2
0
ファイル: AppType_Office.cs プロジェクト: mictxd/helpTXD
        public static void DataGridViewtoExcel(List <DataGridView> Grids4Excel, List <string> GridText, string strDefaultFileName)
        {
            if (Grids4Excel == null)
            {
                return;
            }
            if (Grids4Excel.Count == 0)
            {
                return;
            }

            SaveFileDialog saveFileDialog1 = new System.Windows.Forms.SaveFileDialog();

            saveFileDialog1.FileName   = strDefaultFileName;
            saveFileDialog1.DefaultExt = "*.xls";
            saveFileDialog1.Filter     = "Excel文件|*.xls";
            if (saveFileDialog1.ShowDialog() != DialogResult.OK)
            {
                return;
            }


            int rowNum;
            int columnNum;
            int columnIndex = 1;
            int maxLineCount;


            string   lvssss = Application.StartupPath + "\\Microsoft.Office.Interop.Excel.dll";
            Assembly ass;
            object   obj;

            ass = Assembly.LoadFile(lvssss);
            obj = ass.CreateInstance("Microsoft.Office.Interop.Excel.ApplicationClass");
            Microsoft.Office.Interop.Excel.Application xlApp = obj as Microsoft.Office.Interop.Excel.Application;
            xlApp.Visible = true;

            xlApp.DefaultFilePath     = "";
            xlApp.DisplayAlerts       = true;
            xlApp.SheetsInNewWorkbook = Grids4Excel.Count;
            object m_objOpt = System.Reflection.Missing.Value;

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

            DataGridView lvGrid;

            for (int lvSheetNo = 0; lvSheetNo < Grids4Excel.Count; lvSheetNo++)
            {
                lvGrid            = Grids4Excel[lvSheetNo];
                rowNum            = lvGrid.Rows.Count;
                columnNum         = lvGrid.Columns.Count;
                columnIndex       = 1;
                maxLineCount      = rowNum + 1;
                object[,] objData = new Object[maxLineCount, columnNum];
                columnIndex       = 0;
                for (int i = 0; i < lvGrid.Columns.Count; i++)
                {
                    DataGridViewColumn dc = lvGrid.Columns[i];
                    if (dc.Visible == true && dc.GetType().Name != "DataGridViewButtonColumn")
                    {
                        objData[0, columnIndex] = dc.HeaderText;
                        columnIndex++;
                    }
                }
                string  lvTmpvalue;
                decimal lviTmpValue;
                for (int r = 0; r < rowNum; r++)
                {
                    columnIndex = 0;
                    for (int j = 0; j < columnNum; j++)
                    {
                        if (lvGrid.Columns[j].Visible == true && lvGrid.Columns[j].GetType().Name != "DataGridViewButtonColumn")
                        {
                            if (lvGrid.Rows[r].Cells[j].Value == null)
                            {
                                objData[r + 1, columnIndex] = "";
                            }
                            else
                            {
                                lvTmpvalue = lvGrid.Rows[r].Cells[j].Value.ToString().Trim();
                                if (decimal.TryParse(lvTmpvalue, out lviTmpValue))
                                {
                                    if (lviTmpValue == 0)
                                    {
                                        lvTmpvalue = "";
                                    }
                                }
                                objData[r + 1, columnIndex] = lvTmpvalue;
                            }
                            columnIndex++;
                        }
                    }
                }
                //写入excel
                if (xlBook.Sheets.Count < lvSheetNo + 1)
                {
                    xlBook.Sheets.Add(m_objOpt, m_objOpt, m_objOpt, m_objOpt);
                }
                //xlBook.Sheets.get_Item(lvSheetNo + 1);
                Microsoft.Office.Interop.Excel._Worksheet xlSheet = (Microsoft.Office.Interop.Excel._Worksheet)(xlBook.Sheets.get_Item(1));
                //xlSheet.Range["A1"].Select();
                xlSheet.Activate();
                xlSheet.Name = GridText[lvSheetNo];
                Microsoft.Office.Interop.Excel.Range m_objRange = null;
                m_objRange       = xlSheet.get_Range("A1", m_objOpt);
                m_objRange       = m_objRange.get_Resize(maxLineCount, columnNum);
                m_objRange.Value = objData;
            }

            try
            {
                xlBook.SaveCopyAs(System.Web.HttpUtility.UrlDecode(saveFileDialog1.FileName, System.Text.Encoding.UTF8));
                xlBook.Saved = true;
                xlApp.Quit();
                HelpTXD.ShowInfo("导出完成。" + saveFileDialog1.FileName);
            }
            catch //(Exception ex)
            {
                xlBook.Saved = true;
                xlApp.Quit();
                throw;
            }
        }