日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

ToExcel

發(fā)布時(shí)間:2025/4/5 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ToExcel 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

需添加項(xiàng)目引用:

1. .NET->System.Data.OracleClient.dll

2. COM->Microsoft Excel 11.0 Object Library

代碼如下:

using System;
using System.IO;
using System.Data;
using System.Reflection;
using System.Diagnostics;
using System.Configuration;
using System.Collections;
using Excel;

namespace thscjy
{
?///?
?/// 套用模板輸出Excel,生成xls文件和html文件
?/// Author: Liu Wen
?/// Date Created: 2006-8
?///?
?public class ExportExcel
?{
??#region variable member 成員變量
??protected string templateFile = null;
??protected string excelFile = null;
??protected string htmlFile = null;
??protected object missing = Missing.Value;
??Excel.ApplicationClass app;
??Excel.Workbook book;
??Excel.Worksheet sheet;
??Excel.Range range;
??private DateTime beforeTime;??//Excel啟動(dòng)之前時(shí)間
??private DateTime afterTime;??//Excel啟動(dòng)之后時(shí)間
??//private int processID;
??#endregion

??///?
??/// 構(gòu)造函數(shù),將一個(gè)已有Excel工作簿作為模板,并指定輸出路徑
??///?
??///?
Excel模板文件路徑
??///?
Excel輸出文件路徑
??///?
Html輸出文件路徑
??public ExportExcel(string templateFile, string excelFile, string htmlFile)
??{
???if (templateFile == null)
????throw new Exception("Excel模板文件路徑不能為空!");

???if (excelFile == null)
????throw new Exception("Excel輸出文件路徑不能為空!");

???if (htmlFile == null)
????throw new Exception("Html輸出文件路徑不能為空!");

???if (!File.Exists(templateFile))
????throw new Exception("指定路徑的Excel模板文件不存在!");

???this.templateFile = templateFile;
???this.excelFile = excelFile;
???this.htmlFile = htmlFile;

???//創(chuàng)建一個(gè)Application對(duì)象
???beforeTime = DateTime.Now;
???app = new ApplicationClass();
???//app.Visible = true;
???//processID = Process.GetCurrentProcess().Id;
???afterTime = DateTime.Now;

???//打開(kāi)模板文件,得到WorkBook對(duì)象
???try
???{
????book = app.Workbooks.Open(templateFile,missing,missing,missing,missing,missing,
?????missing,missing,missing,missing,missing,missing,missing,missing,missing);
???}
???catch (Exception e)
???{
????throw e;
???}
???//得到WorkSheet對(duì)象
???sheet = (Excel.Worksheet)book.Sheets.get_Item(1);
??}

??#region 插入報(bào)表參數(shù)
??///?
??/// 錄入報(bào)表的參數(shù)(TJ統(tǒng)計(jì)用)
??///?
??///?
填報(bào)單位
??///?
年月
??///?
填報(bào)人
??///?
填報(bào)日期
??///?
插入數(shù)據(jù)的單元格
??public void InsertArgs(string department, string date, string accountant, string dateCreated, string cellID)
??{
???sheet.get_Range("A3", missing).Value2 = "填報(bào)單位:"+department;
???sheet.get_Range("D3", missing).Value2 = date;
???sheet.get_Range(cellID, missing).Value2 = "部門(mén)負(fù)責(zé)人:       填報(bào)人:"+accountant+" 聯(lián)系電話:???????????????? 報(bào)送時(shí)間:"+dateCreated;
???//sheet.get_Range("I8", missing).Value2 = "填報(bào)日期:"+dateCreated;
??}

??///?
??/// 錄入報(bào)表的參數(shù)(JH計(jì)劃用)
??///?
??///?
標(biāo)題
??public void InsertArgsJH(string name)
??{
???sheet.get_Range("A1", missing).Value2 = name;
??}

??///?
??/// 錄入報(bào)表的參數(shù)(JH計(jì)劃用)
??///?
??///?
標(biāo)題
??///?
年份
??public void InsertArgsJH(string name, string year)
??{
???sheet.get_Range("A1", missing).Value2 = name;
???sheet.get_Range("D2", missing).Value2 = year;
??}

??///?
??/// 錄入報(bào)表的參數(shù)(JH計(jì)劃用)
??///?
??///?
標(biāo)題
??///?
部門(mén)
??///?
“部門(mén)”單元格ID
??///?
年份
??///?
“年份”單元格ID
??public void InsertArgsJH(string name, string department, string depCellId, string year, string yearCellId)
??{
???sheet.get_Range("A1", missing).Value2 = name;
???sheet.get_Range(depCellId, missing).Value2 = department;
???sheet.get_Range(yearCellId, missing).Value2 = year;
??}

??///?
??/// 錄入報(bào)表的參數(shù)(JH計(jì)劃用)
??///?
??///?
標(biāo)題
??///?
注水
??///?
注氣
??///?
措施工作量
??public void InsertArgsJH(string name, string water, string gas, string workload)
??{
???sheet.get_Range("A1", missing).Value2 = name;
???sheet.get_Range("C2", missing).Value2 = water;
???sheet.get_Range("E2", missing).Value2 = gas;
???sheet.get_Range("G2", missing).Value2 = workload;
??}
??#endregion

??#region 導(dǎo)出Excel方法

??///?
??/// 將DataTable數(shù)據(jù)導(dǎo)出到Excel(可動(dòng)態(tài)插入行)
??///?
??///?
DataTable
??///?
插入行的索引
??///?
插入列的索引
??public void DataTableToExcel(System.Data.DataTable dt, int rowIndex, int colIndex)
??{
???int rowCount = dt.Rows.Count;??//DataTable行數(shù)
???int colCount = dt.Columns.Count;?//DataTable列數(shù)
???int iRow;
???int iCol;

???//將數(shù)據(jù)導(dǎo)出到相應(yīng)的單元格
???for (iRow = 0; iRow < rowCount; iRow++)
???{
????//插入新行
????this.InsertRows(sheet, iRow+rowIndex);
????//填充當(dāng)前行
????for (iCol = 0; iCol < colCount; iCol++)
????{
?????sheet.Cells[iRow+rowIndex, iCol+colIndex] = dt.Rows[iRow][iCol].ToString();
????}
???}
???this.DeleteRows(sheet, rowCount+rowIndex);?

???//this.OutputFile();

???//Excel.QueryTables qts = sheet.QueryTables;
???//Excel.QueryTable qt = qts.Add(,,);
???//qt.RefreshStyle = Excel.XlCellInsertionMode.xlInsertEntireRows;
???//qt.Refresh();
??}

??///?
??/// 將DataTable數(shù)據(jù)導(dǎo)出到Excel(可動(dòng)態(tài)插入行)
??///?
??///?
DataTable
??///?
插入數(shù)據(jù)的起始單元格
??public void DataTableToExcel(System.Data.DataTable dt, string cellID)
??{
???int rowIndex = sheet.get_Range(cellID, missing).Row;
???int colIndex = sheet.get_Range(cellID, missing).Column;
???int rowCount = dt.Rows.Count;??//DataTable行數(shù)
???int colCount = dt.Columns.Count;?//DataTable列數(shù)
???int iRow;
???int iCol;

???//利用二維數(shù)組批量寫(xiě)入
???string[,] array = new string[rowCount,colCount];?
???for (iRow = 0; iRow < rowCount; iRow++)
???{
????for (iCol = 0; iCol < colCount; iCol++)
????{
?????array[iRow,iCol] = dt.Rows[iRow][iCol].ToString();
????}
???}

???for (iRow = 0; iRow < rowCount; iRow++)
???{
????this.InsertRows(sheet, iRow+rowIndex);
???}
???this.DeleteRows(sheet, rowCount+rowIndex);

???range? = sheet.get_Range(cellID, missing);
???range = range.get_Resize(rowCount, colCount);
???range.Value2 = array;
??}

??///?
??/// 將DataTable數(shù)據(jù)導(dǎo)出到Excel(固定)
??///?
??///?
DataTable
??///?
插入數(shù)據(jù)的起始單元格
??public void DataTableToExcel2(System.Data.DataTable dt, string cellID)
??{
???int rowCount = dt.Rows.Count;??//DataTable行數(shù)
???int colCount = dt.Columns.Count;?//DataTable列數(shù)
???int iRow;
???int iCol;

???//利用二維數(shù)組批量寫(xiě)入
???string[,] array = new string[rowCount,colCount];?
???for (iRow = 0; iRow < rowCount; iRow++)
???{
????for (iCol = 0; iCol < colCount; iCol++)
????{
?????array[iRow,iCol] = dt.Rows[iRow][iCol].ToString();
????}
???}

???range? = sheet.get_Range(cellID, missing);
???range = range.get_Resize(rowCount, colCount);
???range.Value2 = array;
??}
??#endregion

??///?
??/// 最后調(diào)用,釋放相關(guān)資源,完成
??///?
??public void Finalize()
??{
???this.OutputFile();
???GC.Collect();
???//this.KillExcelProcess();
??}

??///?
??/// 輸出生成的Excel, Html文件
??///?
??private void OutputFile()
??{
???//如果文件已存在,刪除,重新生成
???if (File.Exists(excelFile))
???{
????File.Delete(excelFile);
???}
???if (File.Exists(htmlFile))
???{
????File.Delete(htmlFile);
???}
???try
???{
????book.SaveAs(excelFile, missing, missing, missing, missing, missing,?
?????Excel.XlSaveAsAccessMode.xlExclusive, missing, missing, missing, missing,missing);

????book.SaveAs(htmlFile, Excel.XlFileFormat.xlHtml, missing, missing, missing, missing,
?????Excel.XlSaveAsAccessMode.xlNoChange, missing, missing, missing, missing, missing);
???}
???catch (Exception e)
???{
????throw e;
???}
???finally
???{
????this.Dispose();
???}
??}

??///?
??/// 在工作表中插入行,并調(diào)整其他行以留出空間
??///?
??///?
當(dāng)前工作表
??///?
欲插入的行索引
??private void InsertRows(Excel.Worksheet sheet, int rowIndex)
??{
???range = (Excel.Range)sheet.Rows[rowIndex, missing];???
???//object Range.Insert(object shift, object copyorigin);?
???//shift: Variant類(lèi)型,可選。指定單元格的調(diào)整方式。可以為下列 XlInsertShiftDirection 常量之一:
???//xlShiftToRight 或 xlShiftDown。如果省略該參數(shù),Microsoft Excel 將根據(jù)區(qū)域形狀確定調(diào)整方式。
???range.Insert(Excel.XlInsertShiftDirection.xlShiftDown, missing);??
??}

??///?
??/// 在工作表中刪除行
??///?
??///?
當(dāng)前工作表
??///?
欲刪除的行索引
??private void DeleteRows(Excel.Worksheet sheet, int rowIndex)
??{
???range = (Range)sheet.Rows[rowIndex, missing];
???range.Delete(Excel.XlDeleteShiftDirection.xlShiftUp);
??}

??///?
??/// 退出Excel,并且釋放調(diào)用的COM資源
??///?
??private void Dispose()
??{
???book.Close(missing, missing, missing);
???app.Workbooks.Close();
???app.Quit();

???if (range != null)
???{
????System.Runtime.InteropServices.Marshal.ReleaseComObject(range);
????range = null;
???}
???if (sheet != null)
???{
????System.Runtime.InteropServices.Marshal.ReleaseComObject(sheet);
????sheet = null;
???}
???if (book != null)
???{
????System.Runtime.InteropServices.Marshal.ReleaseComObject(book);
????book = null;
???}
???if (app != null)
???{
????System.Runtime.InteropServices.Marshal.ReleaseComObject(app);
????app = null;
???}

???//System.GC.Collect();
???//GC.WaitForPendingFinalizers();
???//this.KillExcelProcess();
???//Process pro = Process.GetProcessById(processID);
???//pro.Kill();
??}

??///?
??/// 結(jié)束Excel進(jìn)程
??///?
??private void KillExcelProcess()
??{
???DateTime startTime;
???Process[] processes = Process.GetProcessesByName("Excel");

???//得不到Excel進(jìn)程ID,暫時(shí)只能判斷進(jìn)程啟動(dòng)時(shí)間
???foreach (Process process in processes)
???{
????startTime = process.StartTime;
????if(startTime > beforeTime && startTime < afterTime)
????{
?????process.Kill();
????}
???}
??}

?}
}

?

總結(jié)

以上是生活随笔為你收集整理的ToExcel的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 99视频热 | 国内自拍99| 成色网| www.youjizz.com久久| 蜜桃tv在线观看 | 游戏涩涩免费网站 | 亚洲精品一二 | 久久久久一区 | www.射.com | 日韩超碰 | 亚洲色图欧美 | 成人一级影片 | 在线中文视频 | 国产三级免费观看 | 国产精品美女视频 | 亚洲爆乳无码精品aaa片蜜桃 | 91色吧| 91av影院| 超碰成人免费在线 | 黄色美女一级片 | 日韩精品在线观看免费 | 亚洲影院在线 | 欧美a网站| 国产成人一区二区 | 97香蕉超级碰碰久久免费软件 | 免费三级大片 | 国产v亚洲v天堂无码久久久 | 中出白浆| 6080毛片| 久久久国产一区二区 | 在线免费色 | 精品国内自产拍在线观看视频 | 日本黄色三级 | 男女洗澡互摸私密部位视频 | 性生活一级大片 | 夜色视频在线观看 | 日本视频黄 | 免费精品视频一区二区三区 | 性开放视频 | 天堂国产一区二区三区 | 中日韩午夜理伦电影免费 | 97国产在线播放 | 亚洲区小说区 | 日本a级c片免费看三区 | 亚洲69视频| 亚洲制服一区二区 | 免费看毛片的网站 | 性欧美欧美巨大69 | 精品91久久久久久 | 午夜手机福利 | 午夜激情一区 | 99精品久久精品一区二区 | 国产精品a久久久久 | 中文字幕在线视频网 | 天天摸天天舔 | 国产成人无码精品久久久久久 | 夜操操 | 一级片欧美 | 国产黄色美女视频 | 久久婷婷激情 | 国产精品18久久久久久无码 | 国产九色在线播放九色 | 日本福利片在线观看 | 黄色小说视频 | 亚洲资源在线 | 乌克兰毛片 | 久操国产在线 | 黄色录像网址 | 人人澡超碰碰97碰碰碰 | 黄色动漫在线免费观看 | 欧美精品一区二区视频 | 成年丰满熟妇午夜免费视频 | 一级黄毛片 | 亚洲春色www | 色偷偷欧美 | 秋霞精品一区二区三区 | 国产思思 | 欧美日韩1 | 欧美一区不卡 | 老司机深夜福利在线观看 | 9999精品| 黄色三级网| 国产福利片一区二区 | 美女脱衣服一干二净 | 在线视频欧美日韩 | 国产r级在线观看 | 中文字幕一区二区三区门四区五区 | 欧美自拍视频在线观看 | 中文字幕精品一区二区精 | 水牛影视av一区二区免费 | 成年人在线观看 | 最新极品jizzhd欧美 | av嫩草| 久久久久99人妻一区二区三区 | 亚洲激情电影在线 | 黄色一级淫片 | 成人午夜剧场视频网站 | 亚洲永久免费视频 | 最新日韩在线视频 |