Esempio n. 1
0
 /// <summary>
 /// 导出
 /// </summary>
 /// <param name="descCol">导出列信息描述</param>
 /// <param name="dataSource">导出数据源</param>
 /// <returns>导出结果</returns>
 public ResultInfo Export(DataExportDescCol descCol, DataTable dataSource)
 {
     return(this.Export(descCol, dataSource, Encoding.Default));
 }
Esempio n. 2
0
        /// <summary>
        /// 将数据导出到Txt文件
        /// </summary>
        /// <param name="descCol">导出列信息描述</param>
        /// <param name="dataSource">导出数据源</param>
        /// <param name="Encoding">Encoding</param>
        /// <returns>导出结果</returns>
        public ResultInfo Export(DataExportDescCol descCol, DataTable dataSource, Encoding Encoding)
        {
            using (TextWriter writer = new StreamWriter(this.m_FileName, false, Encoding))
            {
                foreach (string s_beg in this.m_SpecialLineBegin)
                {
                    if (!string.IsNullOrEmpty(s_beg))
                    {
                        writer.WriteLine(s_beg);
                    }
                }

                if (this.m_ExportTitle)
                {
                    string s_title = string.Empty;
                    foreach (DataExportDescInfo expd in descCol)
                    {
                        string value = expd.Fielddesc_External;
                        if (expd.TxtFieldLength > 0 && !string.IsNullOrEmpty(this.m_paddingChar.ToString()))
                        {
                            value = expd.GetExportValueTxtFormat(value, this.m_paddingChar);
                        }

                        s_title += value;
                        s_title += this.m_SplitStr;
                    }

                    writer.WriteLine(s_title);
                }

                foreach (DataRow dr in dataSource.Rows)
                {
                    string s_data = string.Empty;
                    for (int i = 0; i < descCol.Count; i++)
                    {
                        DataExportDescInfo expd = descCol[i];
                        object             exportvalue;
                        object             value = string.Empty;
                        if (!expd.IsDefaultField)
                        {
                            DataColumn dc = dataSource.Columns[expd.Fielddesc_Internal];
                            if (dc == null)
                            {
                                continue;
                            }

                            value = dr[expd.Fielddesc_Internal];
                        }

                        expd.GetExportValue(value, out exportvalue);

                        if (expd.TxtFieldLength > 0 && !string.IsNullOrEmpty(expd.TxtPaddingChar))
                        {
                            exportvalue = expd.GetExportValueTxtFormat(exportvalue, expd.TxtPaddingChar.ToCharArray()[0]);
                        }

                        s_data += exportvalue;
                        if (i != (descCol.Count - 1))
                        {
                            s_data += this.m_SplitStr;
                        }
                    }

                    writer.WriteLine(s_data);
                }

                foreach (string s_end in this.m_SpecialLineEnd)
                {
                    if (!string.IsNullOrEmpty(s_end))
                    {
                        writer.WriteLine(s_end);
                    }
                }
            }

            return(ResultInfo.SuccessResultInfo());
        }
Esempio n. 3
0
        /// <summary>
        /// 将数据导出到Excel文件
        /// </summary>
        /// <param name="descCol">导出列信息描述</param>
        /// <param name="dataSource">导出数据源</param>
        /// <param name="Encoding">Encoding</param>
        /// <returns>导出结果</returns>
        public ResultInfo Export(DataExportDescCol descCol, DataTable dataSource, Encoding Encoding)
        {
            string tableName = this.m_TableName;

            // 'HDR=Yes;IMEX=1";
            string conString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + m_FileName + ";Extended Properties=\"Excel 8.0;HDR=YES\"";

            if (System.IO.File.Exists(this.m_FileName))
            {
                System.IO.File.Delete(this.m_FileName);
            }

            string create = "Create Table [" + tableName + "] (";

            string excelColumn = string.Empty;

            // string excelPara = string.Empty;
            foreach (DataExportDescInfo exp in descCol)
            {
                create += "[";
                create += exp.Fielddesc_External;
                create += "]";

                excelColumn += "[" + exp.Fielddesc_External + "],";

                // excelPara += "@" + exp.Fielddesc_External + ",";
                create += string.Format(" {0},", exp.ExcelValueType);
            }

            create      = create.TrimEnd(',');
            excelColumn = excelColumn.TrimEnd(',');

            // excelPara = excelPara.TrimEnd(',');
            create += ")";

            using (OleDbConnection conn = new OleDbConnection(conString))
            {
                conn.Open();
                using (OleDbTransaction trans = conn.BeginTransaction())
                {
                    try
                    {
                        // create table
                        this.ExecuteNonQuery(trans, create);

                        // string insertSql = "Insert Into [" + tableName + "] (" + excelColumn + ") Values (" + excelPara + ")";
                        string insertSql = "Insert Into [" + tableName + "] (" + excelColumn + ") Values (";

                        List <OleDbParameter> paras = new List <OleDbParameter>();
                        foreach (DataRow dr in dataSource.Rows)
                        {
                            // paras.Clear();
                            string valuesql = string.Empty;
                            foreach (DataExportDescInfo expd in descCol)
                            {
                                object exportValue;
                                object value = string.Empty;
                                if (!expd.IsDefaultField)
                                {
                                    DataColumn dc = dataSource.Columns[expd.Fielddesc_Internal];
                                    if (dc == null)
                                    {
                                        continue;
                                    }

                                    value = dr[expd.Fielddesc_Internal];
                                }

                                expd.GetExportValue(value, out exportValue);
                                if (expd.FieldWrithType != EnumIODateType.文本 && expd.FieldWrithType != EnumIODateType.日期 && string.IsNullOrEmpty(exportValue.ToString()))
                                {
                                    valuesql += "null,";
                                }
                                else
                                {
                                    //duxuecheng  2015年10月13日 12:29:34 添加 .Replace("'", "''")
                                    //原因:当字段中包含了单引号的时候将会报错
                                    valuesql += "'" + exportValue.ToString().Replace("'", "''") + "',";
                                }

                                // paras.Add(new OleDbParameter("@" + expd.Fielddesc_External, ex_value));
                            }

                            valuesql = valuesql.TrimEnd(',');

                            // ExecuteNonQuery(trans, insertSql, paras.ToArray());
                            this.ExecuteNonQuery(trans, insertSql + valuesql + ")");
                        }

                        trans.Commit();

                        return(ResultInfo.SuccessResultInfo());
                    }
                    catch (Exception ex)
                    {
                        string s = ex.Message;
                        trans.Rollback();
                        throw;
                    }
                }
            }
        }