国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

C# 將Datatable的數(shù)據(jù)導(dǎo)出至指定的excel模板案例

這篇具有很好參考價(jià)值的文章主要介紹了C# 將Datatable的數(shù)據(jù)導(dǎo)出至指定的excel模板案例。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

? ? ? ?首先說一下需求,用戶需要將一個(gè)報(bào)表的數(shù)據(jù)導(dǎo)出到指定的excel模板,再將這個(gè)excel模板發(fā)給客戶,客戶填寫信息后,用戶再使用該界面進(jìn)行導(dǎo)入反寫。主要功能為查詢、導(dǎo)出、導(dǎo)入與保存。

? ? ? (1)查詢功能,這個(gè)就是從數(shù)據(jù)庫中查詢數(shù)據(jù)再顯示到gridControl1上,就不貼代碼了。

? ? ? (2)導(dǎo)出功能,C#操作excel有很多方法,例如?Microsoft.Office.Interop.Excel? 、Aspose.cells、NPOI等,我選的是引用?Microsoft.Office.Interop.Excel。注意:這個(gè)組件的索引是從1開始的!

? ? ? ??

        /// <summary>
        /// 導(dǎo)出數(shù)據(jù)至excel模板(使用Microsoft.Office.Interop.Excel組件的方式)
        /// </summary>
        public void ExportExcel(DataTable DT)
        {
            try
            {
                //需要添加 Microsoft.Office.Interop.Excel引用 
                Microsoft.Office.Interop.Excel.Application app = new                                                 
                Microsoft.Office.Interop.Excel.Application();
                if (app == null)//服務(wù)器上缺少Excel組件,需要安裝Office軟件
                {
                    return;
                }
                app.Visible = false;
                app.UserControl = true;
                //添加模板至項(xiàng)目啟動(dòng)的debug文件夾中
                string strTempPath = Application.StartupPath + @"\OfficeTemplate\模版.xls";
                Microsoft.Office.Interop.Excel.Workbooks workbooks = app.Workbooks;
                Microsoft.Office.Interop.Excel._Workbook workbook = workbooks.Add(strTempPath); //加載模板
                Microsoft.Office.Interop.Excel.Sheets sheets = workbook.Sheets;
                Microsoft.Office.Interop.Excel._Worksheet worksheet =                             
               (Microsoft.Office.Interop.Excel._Worksheet)sheets.get_Item(1); //第一個(gè)工作薄。
                if (worksheet == null)//工作薄中沒有工作表
                {
                    return;
                }

                //1、獲取數(shù)據(jù)
                int rowCount = DT.Rows.Count;
                if (rowCount < 1)//沒有取到數(shù)據(jù)
                {
                    return;
                }

                //表頭信息
                worksheet.Cells[5, 3] = DT.Rows[0]["日期"].ToString();
                worksheet.Cells[5, 10] = DT.Rows[0]["名稱"].ToString();

                //此項(xiàng)目需要先插入需要的行 再進(jìn)行賦值
                  object MisValue = Type.Missing;
                   for (int i = 1; i <= rowCount; i++)
                {
                    //從第八行開始新增 插入一行
                    Microsoft.Office.Interop.Excel.Range xlsRows = 
                 (Microsoft.Office.Interop.Excel.Range)worksheet.Rows[9, MisValue];
                 xlsRows.Insert(Microsoft.Office.Interop.Excel.XlInsertShiftDirection.xlShiftDown, MisValue);

                }
             //2、寫入數(shù)據(jù),Excel索引從1開始
                for (int i = 1; i <= rowCount; i++)
                {

                    int row_ = 7 + i;  //Excel模板上表頭占了1行
                    int dt_row = i - 1; //dataTable的行是從0開始的 
                    worksheet.Cells[row_, 1] = DT.Rows[dt_row]["列名1"].ToString();
                    worksheet.Cells[row_, 2] = DT.Rows[dt_row]["列名2"].ToString();
                    worksheet.Cells[row_, 3] = DT.Rows[dt_row]["列名3"].ToString();
                    worksheet.Cells[row_, 4] = DT.Rows[dt_row]["列名4"].ToString();
         

                /* 此為注釋內(nèi)容無需注意
                     string strNum = DT.Rows[dt_row]["數(shù)量"].ToString() == "" ? "0" : 
                    DT.Rows[dt_row]["數(shù)量"].ToString();
                    if (strNum.Contains("."))
                    {//字符串為浮點(diǎn)數(shù)
                        strNum = strNum.TrimEnd('0').TrimEnd('.');//1.00000
                    }
                    amount = amount + Convert.ToInt32(strNum);*/


                }

                //設(shè)置導(dǎo)出文件路徑
                //string dir = System.Environment.CurrentDirectory;//當(dāng)前工作目錄完全限定
                string dir = System.Environment.SystemDirectory;//系統(tǒng)目錄的         
                string filePath = FileDialogHelper.SaveExcel("需要填寫的文件名", dir);

                if (!string.IsNullOrEmpty(filePath))
                {
                    try
                    {
                        //保存生成的Excel文件
                        workbook.SaveAs(filePath, Missing.Value, Missing.Value,                 
                        Missing.Value, Missing.Value, Missing.Value, 
                        Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange, 
                        Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);
                        Msg.ShowInformation("保存成功");
                        workbook.Close();
                    }
                    catch (Exception ex)
                    {
                        Msg.ShowException(ex);
                    }
                }

            
              }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }

        }

?

  //保存excel的類
 public class FileDialogHelper
    {
       public static string SaveExcel(string file, string path)
        {
            SaveFileDialog saveFileDialog = new SaveFileDialog();
            saveFileDialog.InitialDirectory = path;
           // saveFileDialog.Filter = "excel2003|*.xls|excel2007|*.xlsx";
            saveFileDialog.Filter = "excel2007|*.xls|excel2003|*.xlsx";
            saveFileDialog.RestoreDirectory = true;
            saveFileDialog.FileName = file;//文件名賦值
            saveFileDialog.FilterIndex = 1;
            if (saveFileDialog.ShowDialog() == DialogResult.OK)
            {
                return saveFileDialog.FileName;
            }
            return "";
        }




    }

(3)導(dǎo)入功能,我選擇引用Aspose.cells來導(dǎo)入數(shù)據(jù)。注意:這個(gè)組件的索引是從0開始的!

    private void barButtonItem5_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
   try
            {
                if (openFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                {
                    string _filePath = openFileDialog1.FileName;
                    if (_filePath != "")
                    {
                        using (FileStream fs = new FileStream(_filePath, FileMode.Open, FileAccess.Read))
                        {
                            DataTable dt = Table();
                            Workbook wk = new Workbook();//工作簿
                            wk.Open(fs);  //打開excel文檔
                            Worksheet worksheet = wk.Worksheets[0];//工作表
                            Cells cells = worksheet.Cells;//獲取worksheet所有單元格
                            //判斷excel導(dǎo)入格式
                            if (!cells[4, 1].StringValue.Contains("日期"))
                            {
                                MessageBox.Show("導(dǎo)入的文檔格式不對,請選擇正確格式的文檔導(dǎo)入!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                                return;
                            }
                            //循環(huán)遍歷所有單元格信息
                            for (int i = 7; i <= cells.Rows.Count; i++)
                            {
                                if (string.IsNullOrEmpty(cells[i, 0].StringValue.Trim()))
                                {
                                    break;
                                }
                                DataRow dr = dt.NewRow();
                                dr["表頭1"] = cells[4, 2].StringValue.Trim();
                                dr["表頭2"] = cells[4, 5].StringValue.Trim();
                                dr["表頭3"] = cells[4, 7].StringValue.Trim();
                                dr["表頭4"] = cells[4, 9].StringValue.Trim();
                                dr["列名1"] = cells[i, 0].StringValue.Trim();
                                dr["列名2"] = cells[i, 1].StringValue.Trim();
                                dr["列名3"] = cells[i, 2].StringValue.Trim();
                                dr["列名4"] = cells[i, 3].StringValue.Trim();
                                
                                dt.Rows.Add(dr);
                            }
                            gridControl1.DataSource = dt;
                            gridView1.BestFitColumns();
                        }

                    }
                }
            }
            catch (Exception es)
            {
                MessageBox.Show(es.ToString());
            }
}

?文章來源地址http://www.zghlxwxcb.cn/news/detail-619436.html

到了這里,關(guān)于C# 將Datatable的數(shù)據(jù)導(dǎo)出至指定的excel模板案例的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • C#創(chuàng)建DataTable并填充數(shù)據(jù),按鈕事件實(shí)現(xiàn)全選,并到全選的值。wpf開發(fā)

    wpf開發(fā)中,用事件創(chuàng)建一個(gè)datatable度填充到datagird里面,在datagrid里面有第一列是復(fù)選框。用一單擊事件實(shí)現(xiàn)全選,用一個(gè)按鈕事件得到所選中的值。 Window x:Class=\\\"WpfApp4.MainWindow\\\" ? ? ? ? xmlns=\\\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\\\" ? ? ? ? xmlns:x=\\\"http://schemas.microsoft.com

    2024年02月08日
    瀏覽(27)
  • C# DataTable和List之間相互轉(zhuǎn)換

    最近在搗鼓DataTable,弄到了類型轉(zhuǎn)換,既然弄了,那就整個(gè)記錄。有不足之處,請多多指教。我看了一下目前的轉(zhuǎn)換方式基本上都大差不差,基本上都是通過反射來操作的。本文介紹的兩種方式也都是利用反射來完成的。兩種方式都寫成的通用類,僅供參考。 DataTable DataTab

    2024年02月01日
    瀏覽(20)
  • C# Winform DataGridView 控件和 DataTable

    C# Winform DataGridView 控件和 DataTable

    目錄 一、概述 二、DataTable 的用法 1.創(chuàng)建表和列 2.添加行 3.取值和賦值 4.刪除行 5.遍歷 DataTable 6.判斷 DataTable 列中是否存在某個(gè)值 7.設(shè)置主鍵 8.獲取?DataRow 所在的行號(hào) 9.DataTable 轉(zhuǎn)換為 List 10.將 List 轉(zhuǎn)?DataTable 三、DataGridView 的用法 1.綁定數(shù)據(jù) 2.獲取綁定的數(shù)據(jù)源 3.獲取 / 設(shè)置

    2024年02月10日
    瀏覽(29)
  • C# 在控制臺(tái)整齊的輸出 DataTable

    C# 在控制臺(tái)整齊的輸出 DataTable

    效果: 在?Winform 平臺(tái),可以用 DataGridView 這樣的控件來顯示數(shù)據(jù)庫的表單數(shù)據(jù),但在 C# 控制臺(tái)項(xiàng)目中,如果有用到數(shù)據(jù)庫查詢,我們想看看查詢語句的效果,就比較困難了,比如,我隨意寫了一個(gè)控制臺(tái)輸出,代碼如下: 效果: 在 Navicat 16 for MySQL 軟件中的查詢結(jié)果 由于沒

    2024年02月12日
    瀏覽(98)
  • C#中將DataTable轉(zhuǎn)化成ListT的方法解析

    在C#中,數(shù)據(jù)的操作是至關(guān)重要的一個(gè)方面,常常需要將數(shù)據(jù)從一個(gè)形式轉(zhuǎn)換成另一個(gè)形式以滿足我們的需求。其中,DataTable和List是常見的兩種數(shù)據(jù)形式。DataTable是一種表格形式的數(shù)據(jù)類型,它以行和列的形式存儲(chǔ)數(shù)據(jù)。List是一種集合類型,它可以存儲(chǔ)任意類型的對象,并且

    2024年02月16日
    瀏覽(20)
  • 【C#】實(shí)體類和DataTable之間相互轉(zhuǎn)換,實(shí)體反射動(dòng)態(tài)遍歷列

    【C#】實(shí)體類和DataTable之間相互轉(zhuǎn)換,實(shí)體反射動(dòng)態(tài)遍歷列

    在實(shí)際項(xiàng)目中,經(jīng)常會(huì)用到數(shù)據(jù)之間的相互轉(zhuǎn)換,序列化和反序列化就是常見場景。這里我們只簡單聊聊實(shí)體類和DataTable之間的相互轉(zhuǎn)換,可以用于不同業(yè)務(wù)場景使用。 要將C# DataTable 轉(zhuǎn)換為 Model 實(shí)體類,你可以使用反射來獲取 DataTable 的列和值,并通過實(shí)例化 Model 類來賦值

    2024年02月15日
    瀏覽(26)
  • 循環(huán)可變化的集合 數(shù)組 datatable 等 || c# winfrom DataGridView 動(dòng)態(tài)UI下載功能

    循環(huán)可變化的集合 數(shù)組 datatable 等 || c# winfrom DataGridView 動(dòng)態(tài)UI下載功能

    ? ? ? 1,使用組件DataGridView 2,使用DataSource來控制表格展示的數(shù)據(jù)來源(注意:來源需要是DataTable類型) 3,需要用到異步線程。如果是不控制數(shù)據(jù)源的話,需要使用UI安全線程;(使用Control.Invoke或Control.BeginInvoke方法) 4,DataGridView的列如果設(shè)置圖片,盡量代碼設(shè)置 5,DataT

    2024年02月19日
    瀏覽(24)
  • 工具類——Java導(dǎo)出EXCEL2(設(shè)置樣式、加載并填充圖片、加載指定模板、大數(shù)據(jù)量設(shè)置窗口大小與刷新頻率)

    工具類——Java導(dǎo)出EXCEL2(設(shè)置樣式、加載并填充圖片、加載指定模板、大數(shù)據(jù)量設(shè)置窗口大小與刷新頻率)

    書接上篇:工具類——Java 瀏覽器導(dǎo)入、導(dǎo)出Excel(Java import、export)demo POI的導(dǎo)出方式:創(chuàng)建/加載Workbook,設(shè)置樣式,填充數(shù)據(jù),然后生成本地臨時(shí)文件,最終以瀏覽器的形式打開,完成整個(gè)導(dǎo)出動(dòng)作。 demo如下, demo如下, XSSFClientAnchor anchor = new XSSFClientAnchor(int dx1, int dy1,

    2024年02月01日
    瀏覽(18)
  • DataTable數(shù)據(jù)對比

    DataTable數(shù)據(jù)對比

    開發(fā)中我們經(jīng)常會(huì)出現(xiàn)查詢數(shù)據(jù)庫后返回DataTable的情況,那么DataTable中常用的一些操作閣下又了解多少呢,例如:兩個(gè)結(jié)構(gòu)不同DataTable怎么找出他們倆之間的交集和差集。 示例:這里的情況是我們要過濾掉老數(shù)據(jù)取到新數(shù)據(jù),其中: dt:是查詢到的所有數(shù)據(jù)。 dt的數(shù)據(jù): a

    2024年02月16日
    瀏覽(13)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包