Winform 導入導出方法

来源:http://www.cnblogs.com/sun1630/archive/2016/05/27/5534754.html
-Advertisement-
Play Games

導出時:引用 using Excel = Microsoft.Office.Interop.Excel; #region 讀取excel //打開方法 public DataTable ExceltoDataSet(string path) { string strConn = "Provider= ...


導出時:引用 using Excel = Microsoft.Office.Interop.Excel;

 

 

 

 

 

#region 讀取excel
//打開方法
public DataTable ExceltoDataSet(string path)
{
string strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path + ";Extended Properties='Excel 12.0;HDR=Yes;IMEX=1';";
OleDbConnection conn = new OleDbConnection(strConn);
conn.Open();
System.Data.DataTable schemaTable = conn.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables, null);
string tableName = schemaTable.Rows[0][2].ToString().Trim();

string strExcel = "";
OleDbDataAdapter myCommand = null;
DataSet ds = null;
strExcel = "Select * From [" + tableName + "]";
myCommand = new OleDbDataAdapter(strExcel, strConn);

ds = new DataSet();

myCommand.Fill(ds, tableName);
System.Data.DataTable dt = ds.Tables[0];

return dt;

}

#endregion

#region 導出excel
/// <summary>
/// 將數據表保存到Excel表格中
/// </summary>
/// <param name="addr">Excel表格存放地址(程式運行目錄後面的部分)</param>
/// <param name="dt">要輸出的DataTable</param>
public void SaveToExcel(string addr, System.Data.DataTable dt, string sheetName)
{
//0.註意:
// * Excel中形如Cells[x][y]的寫法,前面的數字是列,後面的數字是行!
// * Excel中的行、列都是從1開始的,而不是0
//1.製作一個新的Excel文檔實例
Excel::Application xlsApp = new Excel::Application();
xlsApp.Workbooks.Add(true);
/* 示例輸入:需要註意Excel里數組以1為起始(而不是0)
* for (int i = 1; i < 10; i++)
* {
* for (int j = 1; j < 10; j++)
* {
* xlsApp.Cells[i][j] = "-";
* }
* }
*/
//2.設置Excel分頁卡標題
xlsApp.ActiveSheet.Name = sheetName;
//3.合併第一行的單元格
string temp = "";
if (dt.Columns.Count < 26)
{
temp = ((char)('A' + dt.Columns.Count)).ToString();
}
else if (dt.Columns.Count <= 26 + 26 * 26)
{
temp = ((char)('A' + (dt.Columns.Count - 26) / 26)).ToString()
+ ((char)('A' + (dt.Columns.Count - 26) % 26)).ToString();
}
else throw new Exception("列數過多");
Excel::Range range = xlsApp.get_Range("A1", temp + "1");
//range.ClearContents(); //清空要合併的區域
//range.MergeCells = true; //合併單元格
////4.填寫第一行:表名,對應DataTable的TableName
//xlsApp.Cells[1][1] = dt.TableName;
//xlsApp.Cells[1][1].Font.Name = "黑體";
//xlsApp.Cells[1][1].Font.Size = 25;
//xlsApp.Cells[1][1].Font.Bold = true;
//xlsApp.Cells[1][1].HorizontalAlignment = Excel.XlVAlign.xlVAlignCenter;//居中
//xlsApp.Rows[1].RowHeight = 60; //第一行行高為60(單位:磅)
////5.合併第二行單元格,用於書寫表格生成日期
//range = xlsApp.get_Range("A2", temp + "2");
//range.ClearContents(); //清空要合併的區域
//range.MergeCells = true; //合併單元格
////6.填寫第二行:生成時間
//xlsApp.Cells[1][2] = "報表生成於:" + DateTime.Now.ToString();
//xlsApp.Cells[1][2].Font.Name = "宋體";
//xlsApp.Cells[1][2].Font.Size = 15;
////xlsApp.Cells[1][2].HorizontalAlignment = 4;//右對齊
//xlsApp.Cells[1][2].HorizontalAlignment = Excel.XlVAlign.xlVAlignCenter;//居中
//xlsApp.Rows[2].RowHeight = 30; //第一行行高為60(單位:磅)
//7.填寫各列的標題行
xlsApp.Cells[1][1] = "ID";
for (int i = 0; i < dt.Columns.Count; i++)
{
xlsApp.Cells[i + 2][1] = dt.Columns[i].ColumnName;
}
xlsApp.Rows[1].Font.Name = "宋體";
xlsApp.Rows[1].Font.Size = 15;
xlsApp.Rows[1].Font.Bold = true;
//xlsApp.Rows[1].HorizontalAlignment = Excel.XlVAlign.xlVAlignCenter;//居中
////設置顏色
//range = xlsApp.get_Range("A3", temp + "3");
//range.Interior.ColorIndex = 33;
//8.填寫DataTable中的數據
for (int i = 0; i < dt.Rows.Count; i++)
{
xlsApp.Cells[1][i + 2] = (i + 1).ToString();
for (int j = 0; j < dt.Columns.Count; j++)
{
xlsApp.Cells[j + 2][i + 2] = dt.Rows[i][j];
}
}
range = xlsApp.get_Range("A4", temp + (dt.Rows.Count + 1).ToString());
//range.Interior.ColorIndex = 37;
//range.HorizontalAlignment = Excel.XlVAlign.xlVAlignCenter;
////9.描繪邊框
//range = xlsApp.get_Range("A1", temp + (dt.Rows.Count + 1).ToString());
//range.Borders.LineStyle = 1;
//range.Borders.Weight = 3;
//10.打開製作完畢的表格
//xlsApp.Visible = true;
//11.保存表格到根目錄下指定名稱的文件中
xlsApp.ActiveWorkbook.SaveAs(addr);
xlsApp.Quit();
xlsApp = null;
GC.Collect();
}
#endregion


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 今天跟著黑馬視頻建立一個android app--電話撥號器 首先新建一個android項目 activity_main_xml中的代碼如下: 運行一下: 可以看到佈局出現問題,文字出現重疊,簡單的解決方法如下: 界面如下所示: MainActivity中添加下麵的代碼: 撥打電話後,出現如下異常: ...
  • 使用指定資料庫 use v4base 建一張表 / 小區主檔記錄,要保證與OrgLevelUnit同步 / IF not exists(SELECT OBJECT_NAME (id )FROM sysobjects WHERE xtype = 'U' AND OBJECTPROPERTY (id, ...
  • 索引的基本概念: (1).要理解索引,可以把書作為一個模型類比。一本書里的內容,相當於一張大表存儲的數據,而書前面的目錄就相當於這個表的索引; (2).索引可以擁有獨立的存儲磁碟空間; (3).索引占用的磁碟空間要比表小的多,其主要作用是為了加快對數據的搜索速度; (4).同時可以保證數據的唯一性。 ...
  • 今天在幫客戶做語句優化的時候,突然遇到這樣一個語句,類似下麵的例子(原語句是個update) 例子中使用AdventureWorks數據中的兩個表。 productID 是[Production].[Product] 表的主鍵,在[Purchasing].[PurchaseOrderDetail] ...
  • [epeter@ localhost ~]$ 其中:epeter 是用戶名;localhost 是當前主機名; ~ 破浪號代表當前是用戶目錄( 如果是 / 斜線代表當前是根目錄);$ 代表當前以普通用戶登錄(如果是 # 代表當前以根用戶登錄(root用戶或者具有管理員許可權))。 命令由三個部分組成: ...
  • 註意首先要安裝url重定向模塊 https://www.microsoft.com/zh-CN/download/details.aspx?id=7435 然後在web.config末尾添加如下代碼 <system.webServer> <rewrite> <rules> <rule name="H ...
  • 本程式為自己所寫,參考素材包括微軟官方例子和外文資料,自己做了部分的優化。解釋的如果有問題,懇請大家指正. 後臺代碼: XAML界面代碼: ...
  • 1、先解釋一下,什麼叫做動態數據,動態數據指的是,一條數據的格式固定,但數據的條數不固定。 2、應用環境,在一個表格當中如果,現在表格有三行n列,如果你需要在表格第一行後添加同等規格的一行或n行,應該怎麼去做? 3、根據上面的應用環境,不難發現,要完成這項工作的5個過程,1、找到位置。2、獲取模板行 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...