标签:?excelexceptionmicrosoftnullstringlibrary
2010-08-04 16:15?
15494人阅读?
?
收藏?
举报
 ?
分类:
?
[c-sharp]?
view plain
?copy
?print
?
- #region?DataGridView数据显示到Excel?????
- ??
- ??
- ///?</summary>??????
- ///?<param?name="dgv">DataGridView对象?</param>??????
- ///?<param?name="isShowExcle">是否显示Excel界面?</param>??????
- ///?<remarks>?????
- ///?add?com?"Microsoft?Excel?11.0?Object?Library"?????
- ///?using?Excel=Microsoft.Office.Interop.Excel;?????
- ///?</remarks>?????
- ///?<returns>?</returns>??????
- public?bool?DataGridviewShowToExcel(DataGridView?dgv,?bool?isShowExcle)?????
- {?????
- ????if?(dgv.Rows.Count?==?0)?????
- ????????return?false;?????
- ??????
- ????Excel.Application?excel?=?new?Excel.Application();?????
- ????excel.Application.Workbooks.Add(true);?????
- ????excel.Visible?=?isShowExcle;?????
- //生成字段名称??????
- ????for?(int?i?=?0;?i?<?dgv.ColumnCount;?i++)?????
- ????{?????
- ????????excel.Cells[1,?i?+?1]?=?dgv.Columns[i].HeaderText;?????
- ????}?????
- ??????
- ????for?(int?i?=?0;?i?<?dgv.RowCount?-?1;?i++)?????
- ????{?????
- ????????for?(int?j?=?0;?j?<?dgv.ColumnCount;?j++)?????
- ????????{?????
- ????????????if?(dgv[j,?i].ValueType?==?typeof(string))?????
- ????????????{?????
- ????????????????excel.Cells[i?+?2,?j?+?1]?=?"'"?+?dgv[j,?i].Value.ToString();?????
- ????????????}?????
- ????????????else????
- ????????}?????
- ????}?????
- ????return?true;?????
- }????
- #endregion?????
- ??
- #region?DateGridView导出到csv格式的Excel?????
- ///?<summary>?????
- ///?常用方法,列之间加/t,一行一行输出,此文件其实是csv文件,不过默认可以当成Excel打开。?????
- ///?</summary>?????
- ///?<remarks>?????
- ///?using?System.IO;?????
- ///?<param?name="dgv"></param>?????
- private?void?DataGridViewToExcel(DataGridView?dgv)?????
- ????SaveFileDialog?dlg?=?new?SaveFileDialog();?????
- ????dlg.Filter?=?"Execl?files?(*.xls)|*.xls";?????
- ????dlg.FilterIndex?=?0;?????
- ????dlg.RestoreDirectory?=?true;?????
- ????dlg.CreatePrompt?=?true;?????
- ????dlg.Title?=?"保存为Excel文件";?????
- ????
- ????if?(dlg.ShowDialog()?==?DialogResult.OK)?????
- ????????Stream?myStream;?????
- ????????myStream?=?dlg.OpenFile();?????
- ????????StreamWriter?sw?=?new?StreamWriter(myStream,?System.Text.Encoding.GetEncoding(-0));?????
- ????????string?columnTitle?=?"";?????
- ????????try????
- ????????{?????
- ??????????????
- ????????????for?(int?i?=?0;?i?<?dgv.ColumnCount;?i++)?????
- ????????????????if?(i?>?0)?????
- ????????????????{?????
- ????????????????????columnTitle?+=?"/t";?????
- ????????????????}?????
- ????????????????columnTitle?+=?dgv.Columns[i].HeaderText;?????
- ????????????sw.WriteLine(columnTitle);?????
- ????
- ??????????????
- ????????????for?(int?j?=?0;?j?<?dgv.Rows.Count;?j++)?????
- ????????????{?????
- ????????????????string?columnValue?=?"";?????
- ????????????????for?(int?k?=?0;?k?<?dgv.Columns.Count;?k++)?????
- ????????????????????if?(k?>?0)?????
- ????????????????????{?????
- ????????????????????????columnValue?+=?"/t";?????
- ????????????????????}?????
- ????????????????????if?(dgv.Rows[j].Cells[k].Value?==?null)?????
- ????????????????????????columnValue?+=?"";?????
- ????????????????????else????
- ????????????????????????columnValue?+=?dgv.Rows[j].Cells[k].Value.ToString().Trim();?????
- ????????????????}?????
- ????????????????sw.WriteLine(columnValue);?????
- ????????????}?????
- ????????????sw.Close();?????
- ????????????myStream.Close();?????
- ????????}?????
- ????????catch?(Exception?e)?????
- ????????????MessageBox.Show(e.ToString());?????
- ????????finally????
- ????????????sw.Close();?????
- ????????????myStream.Close();?????
- }?????
- #endregion????
- ??
- #region?DataGridView导出到Excel,有一定的判断性?????
- ///方法,导出DataGridView中的数据到Excel文件??????
- ///?using?System.Reflection;?????
- ///?</remarks>?????
- ///?<param?name=?"dgv">?DataGridView?</param>??????
- public?static?void?DataGridViewToExcel(DataGridView?dgv)?????
- {????
- ????#region???验证可操作性?????
- //申明保存对话框??????
- //默然文件后缀??????
- ????dlg.DefaultExt?=?"xls?";?????
- //文件后缀列表??????
- ????dlg.Filter?=?"EXCEL文件(*.XLS)|*.xls?";?????
- //默然路径是系统当前路径??????
- ????dlg.InitialDirectory?=?Directory.GetCurrentDirectory();?????
- //打开保存对话框??????
- ????if?(dlg.ShowDialog()?==?DialogResult.Cancel)?return;?????
- //返回文件路径??????
- ????string?fileNameString?=?dlg.FileName;?????
- //验证strFileName是否为空或值无效??????
- ????if?(fileNameString.Trim()?==?"?")?????
- ????{?return;?}?????
- //定义表格内数据的行数和列数??????
- ????int?rowscount?=?dgv.Rows.Count;?????
- ????int?colscount?=?dgv.Columns.Count;?????
- //行数必须大于0??????
- ????if?(rowscount?<=?0)?????
- ????????MessageBox.Show("没有数据可供保存?",?"提示?",?MessageBoxButtons.OK,?MessageBoxIcon.Information);?????
- ????????return;?????
- //列数必须大于0??????
- ????if?(colscount?<=?0)?????
- ????????MessageBox.Show("没有数据可供保存?",?MessageBoxIcon.Information);?????
- ????????return;?????
- //行数不可以大于65536??????
- ????if?(rowscount?>?65536)?????
- ????????MessageBox.Show("数据记录数太多(最多不能超过65536条),不能保存?",0); background-color:inherit">//列数不可以大于255??????
- ????if?(colscount?>?255)?????
- ????????MessageBox.Show("数据记录行数太多,不能保存?",0); background-color:inherit">//验证以fileNameString命名的文件是否存在,如果存在删除它??????
- ????FileInfo?file?=?new?FileInfo(fileNameString);?????
- ????if?(file.Exists)?????
- ????????????file.Delete();?????
- ????????catch?(Exception?error)?????
- ????????????MessageBox.Show(error.Message,?"删除失败?",?MessageBoxIcon.Warning);?????
- ????????????return;?????
- ????}????
- ????#endregion?????
- ????Excel.Application?objExcel?=?null;?????
- ????Excel.Workbook?objWorkbook?=?null;?????
- ????Excel.Worksheet?objsheet?=?null;?????
- ????try????
- ??????????
- ????????objExcel?=?new?Microsoft.Office.Interop.Excel.Application();?????
- ????????objWorkbook?=?objExcel.Workbooks.Add(Missing.Value);?????
- ????????objsheet?=?(Excel.Worksheet)objWorkbook.ActiveSheet;?????
- //设置EXCEL不可见??????
- ????????objExcel.Visible?=?false;?????
- ??????????
- ????????int?displayColumnsCount?=?1;?????
- ????????for?(int?i?=?0;?i?<=?dgv.ColumnCount?-?1;?i++)?????
- ????????????if?(dgv.Columns[i].Visible?==?true)?????
- ????????????????objExcel.Cells[1,?displayColumnsCount]?=?dgv.Columns[i].HeaderText.Trim();?????
- ????????????????displayColumnsCount++;?????
- //设置进度条??????
- //tempProgressBar.Refresh();??????
- //tempProgressBar.Visible???=???true;??????
- //tempProgressBar.Minimum=1;??????
- //tempProgressBar.Maximum=dgv.RowCount;??????
- //tempProgressBar.Step=1;??????
- //向Excel中逐行逐列写入表格中的数据??????
- ????????for?(int?row?=?0;?row?<=?dgv.RowCount?-?1;?row++)?????
- //tempProgressBar.PerformStep();??????
- ????????????displayColumnsCount?=?1;?????
- ????????????for?(int?col?=?0;?col?<?colscount;?col++)?????
- ????????????????if?(dgv.Columns[col].Visible?==?true)?????
- ????????????????????try????
- ????????????????????????objExcel.Cells[row?+?2,?displayColumnsCount]?=?dgv.Rows[row].Cells[col].Value.ToString().Trim();?????
- ????????????????????????displayColumnsCount++;?????
- ????????????????????}?????
- ????????????????????catch?(Exception)?????
- ????????????????????{?????
- //隐藏进度条??????
- //tempProgressBar.Visible???=???false;??????
- //保存文件??????
- ????????objWorkbook.SaveAs(fileNameString,?Missing.Value,?????
- ????????????????Missing.Value,?Excel.XlSaveAsAccessMode.xlShared,?????
- ????????????????Missing.Value,?Missing.Value);?????
- ????catch?(Exception?error)?????
- ????????MessageBox.Show(error.Message,?"警告?",?MessageBoxIcon.Warning);?????
- ????finally????
- //关闭Excel应用??????
- ????????if?(objWorkbook?!=?null)?objWorkbook.Close(Missing.Value,?Missing.Value);?????
- ????????if?(objExcel.Workbooks?!=?null)?objExcel.Workbooks.Close();?????
- ????????if?(objExcel?!=?null)?objExcel.Quit();?????
- ????????objsheet?=?null;?????
- ????????objWorkbook?=?null;?????
- ????????objExcel?=?null;?????
- ????MessageBox.Show(fileNameString?+?"/n/n导出完毕!?",248)"> }????
- #endregion????
- ?
- #region?DataGridView数据显示到Excel??
- ///?<summary>???
- ///?打开Excel并将DataGridView控件中数据导出到Excel??
- ///?</summary>???
- ///?<param?name="dgv">DataGridView对象?</param>???
- ///?<param?name="isShowExcle">是否显示Excel界面?</param>???
- ///?<remarks>??
- ///?add?com?"Microsoft?Excel?11.0?Object?Library"??
- ///?using?Excel=Microsoft.Office.Interop.Excel;??
- ///?</remarks>??
- ///?<returns>?</returns>???
- public?bool?DataGridviewShowToExcel(DataGridView?dgv,?bool?isShowExcle)??
- {??
- ????if?(dgv.Rows.Count?==?0)??
- ????????return?false;??
- //建立Excel对象???
- ????Excel.Application?excel?=?new?Excel.Application();??
- ????excel.Application.Workbooks.Add(true);??
- ????excel.Visible?=?isShowExcle;??
- //生成字段名称???
- ????for?(int?i?=?0;?i?<?dgv.ColumnCount;?i++)??
- ????{??
- ????????excel.Cells[1,?i?+?1]?=?dgv.Columns[i].HeaderText;??
- ????}??
- //填充数据???
- ????for?(int?i?=?0;?i?<?dgv.RowCount?-?1;?i++)??
- ????{??
- ????????for?(int?j?=?0;?j?<?dgv.ColumnCount;?j++)??
- ????????{??
- ????????????if?(dgv[j,?i].ValueType?==?typeof(string))??
- ????????????{??
- ????????????????excel.Cells[i?+?2,?i].Value.ToString();??
- ????????????}??
- ????????????else??
- ????????}??
- ????}??
- ????return?true;??
- }??
- #endregion???
- ?
- #region?DateGridView导出到csv格式的Excel??
- ///?<summary>??
- ///?常用方法,列之间加/t,一行一行输出,此文件其实是csv文件,不过默认可以当成Excel打开。??
- ///?</summary>??
- ///?<remarks>??
- ///?using?System.IO;??
- ///?<param?name="dgv"></param>??
- private?void?DataGridViewToExcel(DataGridView?dgv)??
- ????SaveFileDialog?dlg?=?new?SaveFileDialog();??
- ????dlg.Filter?=?"Execl?files?(*.xls)|*.xls";??
- ????dlg.FilterIndex?=?0;??
- ????dlg.RestoreDirectory?=?true;??
- ????dlg.CreatePrompt?=?true;??
- ????dlg.Title?=?"保存为Excel文件";??
- ??
- ????if?(dlg.ShowDialog()?==?DialogResult.OK)??
- ????????Stream?myStream;??
- ????????myStream?=?dlg.OpenFile();??
- ????????StreamWriter?sw?=?new?StreamWriter(myStream,?System.Text.Encoding.GetEncoding(-0));??
- ????????string?columnTitle?=?"";??
- ????????try??
- ????????{??
- //写入列标题??
- ????????????for?(int?i?=?0;?i?<?dgv.ColumnCount;?i++)??
- ????????????????if?(i?>?0)??
- ????????????????{??
- ????????????????????columnTitle?+=?"/t";??
- ????????????????}??
- ????????????????columnTitle?+=?dgv.Columns[i].HeaderText;??
- ????????????sw.WriteLine(columnTitle);??
- ??
- //写入列内容??
- ????????????for?(int?j?=?0;?j?<?dgv.Rows.Count;?j++)??
- ????????????{??
- ????????????????string?columnValue?=?"";??
- ????????????????for?(int?k?=?0;?k?<?dgv.Columns.Count;?k++)??
- ????????????????????if?(k?>?0)??
- ????????????????????{??
- ????????????????????????columnValue?+=?"/t";??
- ????????????????????}??
- ????????????????????if?(dgv.Rows[j].Cells[k].Value?==?null)??
- ????????????????????????columnValue?+=?"";??
- ????????????????????else??
- ????????????????????????columnValue?+=?dgv.Rows[j].Cells[k].Value.ToString().Trim();??
- ????????????????}??
- ????????????????sw.WriteLine(columnValue);??
- ????????????}??
- ????????????sw.Close();??
- ????????????myStream.Close();??
- ????????}??
- ????????catch?(Exception?e)??
- ????????????MessageBox.Show(e.ToString());??
- ????????finally??
- ????????????sw.Close();??
- ????????????myStream.Close();??
- }???
- #endregion??
- #region?DataGridView导出到Excel,有一定的判断性??
- ///方法,导出DataGridView中的数据到Excel文件???
- ///?using?System.Reflection;??
- ///?</remarks>??
- ///?<param?name=?"dgv">?DataGridView?</param>???
- public?static?void?DataGridViewToExcel(DataGridView?dgv)??
- {??
- ????#region???验证可操作性??
- //申明保存对话框???
- //默然文件后缀???
- ????dlg.DefaultExt?=?"xls?";??
- //文件后缀列表???
- ????dlg.Filter?=?"EXCEL文件(*.XLS)|*.xls?";??
- //默然路径是系统当前路径???
- ????dlg.InitialDirectory?=?Directory.GetCurrentDirectory();??
- //打开保存对话框???
- ????if?(dlg.ShowDialog()?==?DialogResult.Cancel)?return;??
- //返回文件路径???
- ????string?fileNameString?=?dlg.FileName;??
- //验证strFileName是否为空或值无效???
- ????if?(fileNameString.Trim()?==?"?")??
- ????{?return;?}??
- //定义表格内数据的行数和列数???
- ????int?rowscount?=?dgv.Rows.Count;??
- ????int?colscount?=?dgv.Columns.Count;??
- //行数必须大于0???
- ????if?(rowscount?<=?0)??
- ????????return;??
- //列数必须大于0???
- ????if?(colscount?<=?0)??
- ????????return;??
- //行数不可以大于65536???
- ????if?(rowscount?>?65536)??
- ????????MessageBox.Show("数据记录数太多(最多不能超过65536条),不能保存?",0); background-color:inherit">//列数不可以大于255???
- ????if?(colscount?>?255)??
- ????????MessageBox.Show("数据记录行数太多,不能保存?",0); background-color:inherit">//验证以fileNameString命名的文件是否存在,如果存在删除它???
- ????FileInfo?file?=?new?FileInfo(fileNameString);??
- ????if?(file.Exists)??
- ????????????file.Delete();??
- ????????catch?(Exception?error)??
- ????????????MessageBox.Show(error.Message,?MessageBoxIcon.Warning);??
- ????????????return;??
- ????#endregion??
- ????Excel.Application?objExcel?=?null;??
- ????Excel.Workbook?objWorkbook?=?null;??
- ????Excel.Worksheet?objsheet?=?null;??
- ????try??
- //申明对象???
- ????????objExcel?=?new?Microsoft.Office.Interop.Excel.Application();??
- ????????objWorkbook?=?objExcel.Workbooks.Add(Missing.Value);??
- ????????objsheet?=?(Excel.Worksheet)objWorkbook.ActiveSheet;??
- //设置EXCEL不可见???
- ????????objExcel.Visible?=?false;??
- //向Excel中写入表格的表头???
- ????????int?displayColumnsCount?=?1;??
- ????????for?(int?i?=?0;?i?<=?dgv.ColumnCount?-?1;?i++)??
- ????????????if?(dgv.Columns[i].Visible?==?true)??
- ????????????????objExcel.Cells[1,?displayColumnsCount]?=?dgv.Columns[i].HeaderText.Trim();??
- ????????????????displayColumnsCount++;??
- //设置进度条???
- //tempProgressBar.Refresh();???
- //tempProgressBar.Visible???=???true;???
- //tempProgressBar.Minimum=1;???
- //tempProgressBar.Maximum=dgv.RowCount;???
- //tempProgressBar.Step=1;???
- //向Excel中逐行逐列写入表格中的数据???
- ????????for?(int?row?=?0;?row?<=?dgv.RowCount?-?1;?row++)??
- //tempProgressBar.PerformStep();???
- ????????????displayColumnsCount?=?1;??
- ????????????for?(int?col?=?0;?col?<?colscount;?col++)??
- ????????????????if?(dgv.Columns[col].Visible?==?true)??
- ????????????????????try??
- ????????????????????????objExcel.Cells[row?+?2,?displayColumnsCount]?=?dgv.Rows[row].Cells[col].Value.ToString().Trim();??
- ????????????????????????displayColumnsCount++;??
- ????????????????????}??
- ????????????????????catch?(Exception)??
- ????????????????????{??
- //隐藏进度条???
- //tempProgressBar.Visible???=???false;???
- //保存文件???
- ????????objWorkbook.SaveAs(fileNameString,??
- ????catch?(Exception?error)??
- ????????MessageBox.Show(error.Message,?MessageBoxIcon.Warning);??
- ????finally??
- //关闭Excel应用???
- ????????if?(objWorkbook?!=?null)?objWorkbook.Close(Missing.Value,?Missing.Value);??
- ????????if?(objExcel.Workbooks?!=?null)?objExcel.Workbooks.Close();??
- ????????if?(objExcel?!=?null)?objExcel.Quit();??
- ????????objsheet?=?null;??
- ????????objWorkbook?=?null;??
- ????????objExcel?=?null;??
- ????MessageBox.Show(fileNameString?+?"/n/n导出完毕!?",153); list-style:decimal-leading-zero outside; color:inherit; line-height:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> }??
- #endregion??
(编辑:北几岛)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|