本帖最后由 zhangzhen_927116 于 2010-10-22 14:57:14 编辑

解决方案 »

  1.   

    http://hi.baidu.com/%EC%E1%8C%A9%CAx/album/item/30e1cadec3332092b7fd480f.html
      

  2.   

    没听懂!是不是这样呢?...Attributes.Add("style","vnd.ms-excel.numberformat:@");
      

  3.   

    下面有我的截图看图片就知道说明意思了。。
    就是说导出有格式的Excel 合并单元格。字体粗细大小,边框。标题什么的。再把相应的数据填充到相应的栏位里面
      

  4.   

    遍历datagridview,赋值到单元格,设置EXCEL单元格格式
      

  5.   

     private void button4_Click(object sender, EventArgs e)
            {
                SaveFileDialog saveFileDialog = new SaveFileDialog();
                saveFileDialog.Filter = "Execl   files   (*.xls)|*.xls";
                saveFileDialog.FilterIndex = 0;
                saveFileDialog.RestoreDirectory = true;
                saveFileDialog.CreatePrompt = true;
                saveFileDialog.Title = "导出Excel文件到";            DateTime now = DateTime.Now;
                saveFileDialog.FileName = now.Year.ToString().PadLeft(2)
                + now.Month.ToString().PadLeft(2, '0')
                + now.Day.ToString().PadLeft(2, '0') + "-"
                + now.Hour.ToString().PadLeft(2, '0')
                + now.Minute.ToString().PadLeft(2, '0')
                + now.Second.ToString().PadLeft(2, '0');            saveFileDialog.ShowDialog();            Stream myStream;
                myStream = saveFileDialog.OpenFile();
                StreamWriter sw = new StreamWriter(myStream, System.Text.Encoding.GetEncoding("gb2312"));
                string str = "";
                try
                {
                    //写标题     
                    for (int i = 0; i < dataGridView1.ColumnCount; i++)
                    {
                        if (i > 0)
                        {
                            str += "\t";
                        }
                        str += dataGridView1.Columns[i].HeaderText;
                    }                sw.WriteLine(str);
                    //写内容   
                    for (int j = 0; j < dataGridView1.Rows.Count; j++)
                    {
                        string tempStr = "";
                        for (int k = 0; k < dataGridView1.Columns.Count; k++)
                        {
                            if (k > 0)
                            {
                                tempStr += "\t";
                            }
                            tempStr += dataGridView1.Rows[j].Cells[k].Value.ToString();
                        }
                        sw.WriteLine(tempStr);
                    }
                    sw.Close();
                    myStream.Close();
                }
                catch (Exception ex)
                {
                    MessageBox.Show("您取消了此次操作");
                }
                finally
                {
                    sw.Close();
                    myStream.Close();
                }
            }//自己在改改吧
      

  6.   

    你先设置好一个模板,然后在模板上操作就可以啦   //生成表格
            private void btnExcelDo_Click(object sender, EventArgs e)
            {
                btnConnDB_Click(sender, e);         //生成表格之前刷新显示一下当前的控件            int iIsDouble = 0;
                string strName = tbxlsName.Text;
                if (strName == "")
                {
                    MessageBox.Show("请您输入Excel表名,该项不能为空!", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return;
                }            if (lbRecordCount.Text == "0")
                {
                    MessageBox.Show("生成表格内容为空!", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return;
                }            string strPath = Environment.CurrentDirectory + "\\Sample.xls";                 //模板路径
                string strSavePath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + "\\" + strName + ".xls";//保存路径                                //创建Application对象 
                Excel.Application xApp = new Excel.ApplicationClass();            xApp.Visible = true;
                //得到WorkBook对象,下面的是打开已有的文件 
                Excel.Workbook xBook = xApp.Workbooks._Open(@strPath,
                Missing.Value, Missing.Value, Missing.Value, Missing.Value
                , Missing.Value, Missing.Value, Missing.Value, Missing.Value
                , Missing.Value, Missing.Value, Missing.Value, Missing.Value);            //创建工作表
                Excel.Worksheet[] xSheet = { (Excel.Worksheet)xBook.Sheets[1], (Excel.Worksheet)xBook.Sheets[2] };
                Excel.Range[] rng = new Range[isheetNum];            //得到数据
                int dataRowNum = dataGridView1.RowCount;
                for (int a = 0; a < dataRowNum; a++)
                {
                    SetInitVal();                iIsDouble = InitGraghInfo(a);                if (a == 0)
                    {//得到扫描带宽和扫描点数, 单双通道都显示
                        for (int j = 0; j < isheetNum; j++)
                        {
                            rng[j] = xSheet[j].get_Range("B7", Missing.Value);                        rng[j].Value2 = RecInfo.SpanFreq[0] / 1000;
                            rng[j].Interior.ColorIndex = 6;
                            rng[j].VerticalAlignment = Excel.XlVAlign.xlVAlignCenter;
                            rng[j].HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;                        rng[j] = xSheet[j].get_Range("D7", Missing.Value);
                            rng[j].Value2 = RecInfo.Points;
                            rng[j].Interior.ColorIndex = 6;
                            rng[j].VerticalAlignment = Excel.XlVAlign.xlVAlignCenter;
                            rng[j].HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;
                        }
                    }                for (int j = 0; j < isheetNum; j++)
                    {//设置编号
                        rng[j] = xSheet[j].get_Range("A" + Convert.ToString(a + iSheetSpaceNo), Missing.Value);
                        rng[j].Value2 = dataGridView1[1, a].Value;
                        rng[j].VerticalAlignment = Excel.XlVAlign.xlVAlignCenter;
                        rng[j].HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;
                    }                SetSheetFirstData(xSheet[0], rng[0], a);
                    SetSheetSecondData(xSheet[1], rng[1], a);                //SetInitVal();
                }            SetSheetFirstInfo(xSheet[0], rng[0], dataRowNum);
                SetSheetSecondInfo(xSheet[1], rng[1], dataRowNum);            //保存在我的文档中
                xBook.SaveAs(@strSavePath,
                Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value,
                Excel.XlSaveAsAccessMode.xlNoChange, Missing.Value, Missing.Value, Missing.Value,
                Missing.Value, Missing.Value); 
            }
      

  7.   

     //sheet1的数据生成
            public void SetSheetFirstData(Worksheet xSheet, Range rng, int inum)
            {
                GetMaxValue();
                //sheet1的生成
                rng = xSheet.get_Range("B" + Convert.ToString(inum + iSheetSpaceNo), Missing.Value);
                rng.Value2 = Math.Round(dMaxValFre / 1000, 3);
                rng.Interior.ColorIndex = 6;
                rng.VerticalAlignment = Excel.XlVAlign.xlVAlignCenter;
                rng.HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;            rng = xSheet.get_Range("C" + Convert.ToString(inum + iSheetSpaceNo), Missing.Value);
                rng.Value2 = dMaxdBVal;
                rng.Interior.ColorIndex = 8;
                rng.VerticalAlignment = Excel.XlVAlign.xlVAlignCenter;
                rng.HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;            rng = xSheet.get_Range("D" + Convert.ToString(inum + iSheetSpaceNo), Missing.Value);
                rng.Value2 = Math.Round(dSecMaxValFre / 1000, 3);
                rng.Interior.ColorIndex = 6;
                rng.VerticalAlignment = Excel.XlVAlign.xlVAlignCenter;
                rng.HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;            rng = xSheet.get_Range("E" + Convert.ToString(inum + iSheetSpaceNo), Missing.Value);
                rng.Value2 = dSecMaxdBVal;
                rng.Interior.ColorIndex = 8;
                rng.VerticalAlignment = Excel.XlVAlign.xlVAlignCenter;
                rng.HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;            rng = xSheet.get_Range("F" + Convert.ToString(inum + iSheetSpaceNo), Missing.Value);
                rng.Value2 = "=B" + Convert.ToString(inum + iSheetSpaceNo) + "-D" + Convert.ToString(inum + iSheetSpaceNo);
                rng.VerticalAlignment = Excel.XlVAlign.xlVAlignCenter;
                rng.HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;            rng = xSheet.get_Range("G" + Convert.ToString(inum + iSheetSpaceNo), Missing.Value);
                rng.Value2 = "=C" + Convert.ToString(inum + iSheetSpaceNo) + "-E" + Convert.ToString(inum + iSheetSpaceNo);
                rng.VerticalAlignment = Excel.XlVAlign.xlVAlignCenter;
                rng.HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;
            }