- 添加dll引用
- 右击选择你所在的项目的“引用”,选择“添加引用”。
- 弹出“添加引用”对话框。
- 选择“COM”选项卡。
- 选择“Microsoft Excel 11.0 Object Library”
- 单击“确定”按钮。
- 代码
- public static bool ExportForDataGridview(DataGridView gridView, string fileName, bool isShowExcle)
- {
- //建立Excel对象
- Microsoft.Office.Interop.Excel.Application app = new Microsoft.Office.Interop.Excel.Application();
- try
- {
- if (app == null)
- {
- return false;
- }
- app.Visible = isShowExcle;
- Workbooks workbooks = app.Workbooks;
- _Workbook workbook = workbooks.Add(XlWBATemplate.xlWBATWorksheet);
- Sheets sheets = workbook.Worksheets;
- _Worksheet worksheet = (_Worksheet)sheets.get_Item(1);
- if (worksheet == null)
- {
- return false;
- }
- string sLen = "";
- //取得最后一列列名
- char H = (char)(64 + gridView.ColumnCount / 26);
- char L = (char)(64 + gridView.ColumnCount % 26);
- if (gridView.ColumnCount < 26)
- {
- sLen = L.ToString();
- }
- else
- {
- sLen = H.ToString() + L.ToString();
- }
- //标题
- string sTmp = sLen + "1";
- Range ranCaption = worksheet.get_Range(sTmp, "A1");
- string[] asCaption = new string[gridView.ColumnCount];
- for (int i = 0; i < gridView.ColumnCount; i++)
- {
- asCaption[i] = gridView.Columns[i].HeaderText;
- }
- ranCaption.Value2 = asCaption;
- //数据
- object[] obj = new object[gridView.Columns.Count];
- for (int r = 0; r < gridView.RowCount - 1; r++)
- {
- for (int l = 0; l < gridView.Columns.Count; l++)
- {
- if (gridView[l, r].ValueType == typeof(DateTime))
- {
- obj[l] = gridView[l, r].Value.ToString();
- }
- else
- {
- obj[l] = gridView[l, r].Value;
- }
- }
- string cell1 = sLen + ((int)(r + 2)).ToString();
- string cell2 = "A" + ((int)(r + 2)).ToString();
- Range ran = worksheet.get_Range(cell1, cell2);
- ran.Value2 = obj;
- }
- //保存
- workbook.SaveCopyAs(fileName);
- workbook.Saved = true;
- }
- finally
- {
- //关闭
- app.UserControl = false;
- app.Quit();
- }
- return true;
- }
- 方法2
- 用流保存成xls文件. 这种方法比较好,不用引用Excel组件. 下面是具体例子,可以参考
- using System.IO;
- /// <summary>
- /// 另存新档按钮
- /// </summary>
- private void SaveAs() //另存新档按钮 导出成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();
- Stream myStream;
- myStream = saveFileDialog.OpenFile();
- //StreamWriter sw = new StreamWriter(myStream, System.Text.Encoding.GetEncoding("gb2312"));
- StreamWriter sw = new StreamWriter(myStream, System.Text.Encoding.GetEncoding(-0));
- string str = "";
- try
- {
- //写标题
- for (int i = 0; i < dgvAgeWeekSex.ColumnCount; i++)
- {
- if (i > 0)
- {
- str += "/t";
- }
- str += dgvAgeWeekSex.Columns[i].HeaderText;
- }
- sw.WriteLine(str);
- //写内容
- for (int j = 0; j < dgvAgeWeekSex.Rows.Count; j++)
- {
- string tempStr = "";
- for (int k = 0; k < dgvAgeWeekSex.Columns.Count; k++)
- {
- if (k > 0)
- {
- tempStr += "/t";
- }
- tempStr += dgvAgeWeekSex.Rows[j].Cells[k].Value.ToString();
- }
- sw.WriteLine(tempStr);
- }
- sw.Close();
- myStream.Close();
- }
- catch (Exception e)
- {
- MessageBox.Show(e.ToString());
- }
- finally
- {
- sw.Close();
- myStream.Close();
- }
- }
- 第一总方法
- 补充一下
- 需要添加dll引用
- 右击选择你所在的项目的“引用”,选择“添加引用”。
- 弹出“添加引用”对话框。
- 选择“COM”选项卡。
- 选择“Microsoft Excel 11.0 Object Library”
- 单击“确定”按钮。
- 还有一个Microsoft Office Object的组件,要一并引入才可以,这个是基类
- 需用根据你引用Excel,可以用下句引用Office2003/2007均可
- 还需要using一下
- using Excel = Microsoft.Office.Interop.Excel;
- 因为Excel版本不同,所以打出来的dll的namespace也不同
- 运行通过
C#datagridview导出数据到excel
最新推荐文章于 2024-07-27 00:04:17 发布