為何我轉出的Excel數值列不能加總,好像全變成字符一樣。我轉excel函數如下。大家幫看看有什麼問題沒有?急。

时间:2023-02-07 19:45:32
/*
         * 此了函數用於把單表中的數據轉出excel
         */
        static  public void ExportToExcel(object[] columName, object[] fieldName, System.Data.DataTable dt, string Name)
        {
            try
            {
              
                Excel.Application app = new Excel.Application();
                _Workbook wkb = app.Workbooks.Add(XlWBATemplate.xlWBATWorksheet);
                _Worksheet wks = (_Worksheet)wkb.ActiveSheet;
                wks.Name = Name;
                wks.Visible = XlSheetVisibility.xlSheetVisible;
                Range wksRange;
               
                string[] cellValue = new string[columName.Length];
                string[] cellValue1 = new string[columName.Length];
                
                //加欄位名
                for (int i = 0; i <= columName.Length - 1; i++)
                    cellValue1[i] = columName[i].ToString();
                wksRange = wks.get_Range(wks.Cells[1, 1], wks.Cells[1, fieldName.Length]);
#if OFFICEXP
wksRange.set_Value(Missing.Value, cellValue1);
#else
                wksRange.Value = cellValue1;
#endif
               
                for (int i = 0; i <= dt.Rows.Count - 1; i++)
                {
                    for (int j = 0; j <= fieldName.Length - 1; j++)
                    {
                        //string strValue = "";
                        if (dt.Columns[fieldName[j].ToString()].DataType.ToString() == "System.DateTime")
                        {
                            if (dt.Rows[i][fieldName[j].ToString()] != DBNull.Value)
                                cellValue[j] = Convert.ToDateTime(dt.Rows[i][fieldName[j].ToString()]).ToShortDateString();
                            else
                                cellValue[j] = "";
                        }
                        else
                            cellValue[j] = dt.Rows[i][fieldName[j].ToString()].ToString();
                        //cellValue[j] = strValue;

                    }
                    wksRange = wks.get_Range(wks.Cells[i + 2, 1], wks.Cells[i + 2, fieldName.Length]);
#if OFFICEXP
          wksRange.set_Value(Missing.Value, cellValue);
#else
                    wksRange.Value = cellValue;
#endif
                }
                wks.Columns.EntireColumn.AutoFit();//自動調整欄位的寬度
                app.Visible = true;
               

            }
            catch (Exception E)
            {
             
                MessageBox.Show(E.Message);
               
            }
        }        

2 个解决方案

#1


找到原因了,
string[] cellValue = new string[columName.Length];
不能用string,隻能用泛型
object[] cellValue = new object[columName.Length];

#2


没坐到沙发,帮忙顶

#1


找到原因了,
string[] cellValue = new string[columName.Length];
不能用string,隻能用泛型
object[] cellValue = new object[columName.Length];

#2


没坐到沙发,帮忙顶