C# 操作Excel實(shí)例淺析
C# 操作Excel多個(gè)sheet的具體的操作是什么呢?讓我們來(lái)看看下面的實(shí)例實(shí)現(xiàn):
- private void DataViewExcelBySheetMultipleDt(
 - DataSet ds, string fileName)
 - {
 - try
 - {
 - int sheetCount = ds.Tables.Count;
 - GC.Collect();
 - Application excel;
 - _Workbook xBk;
 - _Worksheet xSt = null;
 - excel = new ApplicationClass();
 - xBk = excel.Workbooks.Add(true);
 - int rowIndex = 0;
 - int colIndex = 0;
 - for (int sheetIndex = 0;
 - sheetIndex < sheetCount; sheetIndex++)
 - {
 - rowIndex = 1;
 - colIndex = 1;
 - xSt = (_Worksheet)xBk.Worksheets.Add(
 - Type.Missing, Type.Missing, 1, Type.Missing);
 - switch (sheetIndex)
 - {
 - case 0:
 - xSt.Name = "test1";
 - break;
 - case 1:
 - xSt.Name = "test2";
 - break;
 - case 2:
 - xSt.Name = "test3";
 - break;
 - case 3:
 - xSt.Name = "test4";
 - break;
 - } //C# 操作Excel多個(gè)sheet的具體的操作
 - foreach (DataColumn col in ds.Tables[sheetIndex].Columns)
 - {
 - xSt.get_Range(excel.Cells[rowIndex,
 - colIndex], excel.Cells[rowIndex,
 - colIndex]).HorizontalAlignment = XlVAlign.xlVAlignCenter;
 - xSt.get_Range(excel.Cells[rowIndex,
 - colIndex], excel.Cells[rowIndex,
 - colIndex]).Font.Bold = true;
 - excel.Cells[rowIndex, colIndex++] = col.ColumnName;
 - }
 - foreach (DataRow row in ds.
 - Tables[sheetIndex].Rows)
 - {
 - rowIndex++;
 - colIndex = 1;
 - foreach (DataColumn col in ds.
 - Tables[sheetIndex].Columns)
 - {
 - if (col.DataType == System.Type.GetType(
 - "System.DateTime"))
 - {
 - if (!"".Equals(row[col.ColumnName].ToString()))
 - excel.Cells[rowIndex, colIndex] =
 - (Convert.ToDateTime(row[col.ColumnName].
 - ToString())).ToString("MM/dd/yyyy");
 - else
 - excel.Cells[rowIndex, colIndex] = "";
 - }
 - else if (col.DataType == S
 - ystem.Type.GetType("System.String"))
 - {
 - excel.Cells[rowIndex, colIndex] = "'" +
 - row[col.ColumnName].ToString();
 - }
 - else
 - {
 - excel.Cells[rowIndex, colIndex] =
 - row[col.ColumnName].ToString();
 - }
 - colIndex++;
 - } //C# 操作Excel多個(gè)sheet的具體的操作
 - }
 - Range allDataWithTitleRange = xSt.get_Range(
 - excel.Cells[1, 1], excel.Cells[rowIndex, colIndex - 1]);
 - allDataWithTitleRange.Select();
 - allDataWithTitleRange.Columns.AutoFit();
 - allDataWithTitleRange.Borders.LineStyle = 1;
 - }
 - string exportDir = "~/Attachment/";
 - string absFileName = HttpContext.
 - Current.Server.MapPath(
 - System.IO.Path.Combine(exportDir, fileName));
 - xBk.SaveCopyAs(absFileName);
 - xBk.Close(false, null, null);
 - excel.Quit();
 - System.Runtime.InteropServices.
 - Marshal.ReleaseComObject(xBk);
 - System.Runtime.InteropServices.
 - Marshal.ReleaseComObject(excel);
 - System.Runtime.InteropServices.
 - Marshal.ReleaseComObject(xSt);
 - //C# 操作Excel多個(gè)sheet的具體的操作
 - xBk = null;
 - excel = null;
 - xSt = null;
 - GC.Collect();
 - }
 - catch (Exception ex)
 - {
 - }
 - }
 - private void DataViewExcelBySheetMultipleDt(
 - DataSet ds, string fileName)
 - {
 - try
 - {
 - int sheetCount = ds.Tables.Count;
 - GC.Collect();
 - Application excel;
 - _Workbook xBk;
 - _Worksheet xSt = null;
 - excel = new ApplicationClass();
 - xBk = excel.Workbooks.Add(true);
 - //C# 操作Excel多個(gè)sheet的具體的操作
 - int rowIndex = 0;
 - int colIndex = 0;
 - for (int sheetIndex = 0;
 - sheetIndex < sheetCount; sheetIndex++)
 - {
 - rowIndex = 1;
 - colIndex = 1;
 - xSt = (_Worksheet)xBk.Worksheets.Add(
 - Type.Missing, Type.Missing, 1, Type.Missing);
 - switch (sheetIndex)
 - {
 - case 0:
 - xSt.Name = "test1";
 - break;
 - case 1:
 - xSt.Name = "test2";
 - break;
 - case 2:
 - xSt.Name = "test3";
 - break;
 - case 3:
 - xSt.Name = "test4";
 - break;
 - }
 - foreach (DataColumn col in ds.Tables[sheetIndex].Columns)
 - { //C# 操作Excel多個(gè)sheet的具體的操作
 - xSt.get_Range(excel.Cells[rowIndex,
 - colIndex], excel.Cells[rowIndex,
 - colIndex]).HorizontalAlignment = XlVAlign.xlVAlignCenter;
 - xSt.get_Range(excel.Cells[rowIndex,
 - colIndex], excel.Cells[rowIndex, colIndex]).Font.Bold = true;
 - excel.Cells[rowIndex, colIndex++] = col.ColumnName;
 - }
 - foreach (DataRow row in ds.Tables[sheetIndex].Rows)
 - {
 - rowIndex++;
 - colIndex = 1;
 - foreach (DataColumn col in ds.Tables[
 - sheetIndex].Columns)
 - {
 - if (col.DataType == System.Type.GetType(
 - "System.DateTime"))
 - {
 - if (!"".Equals(row[col.ColumnName].ToString()))
 - excel.Cells[rowIndex, colIndex] = (
 - Convert.ToDateTime(row[col.ColumnName].
 - ToString())).ToString("MM/dd/yyyy");
 - else
 - excel.Cells[rowIndex, colIndex] = "";
 - }
 - else if (col.DataType ==
 - System.Type.GetType("System.String"))
 - {
 - excel.Cells[rowIndex,
 - colIndex] = "'" + row[col.ColumnName].ToString();
 - }
 - else
 - {
 - excel.Cells[rowIndex,
 - colIndex] = row[col.ColumnName].ToString();
 - }
 - colIndex++;
 - }
 - } //C# 操作Excel多個(gè)sheet的具體的操作
 - Range allDataWithTitleRange = xSt.get_Range(
 - excel.Cells[1, 1],
 - excel.Cells[rowIndex, colIndex - 1]);
 - allDataWithTitleRange.Select();
 - allDataWithTitleRange.Columns.AutoFit();
 - allDataWithTitleRange.Borders.LineStyle = 1;
 - }
 - string exportDir = "~/Attachment/";
 - string absFileName = HttpContext.Current.Server.
 - MapPath(System.IO.Path.Combine(exportDir, fileName));
 - xBk.SaveCopyAs(absFileName);
 - xBk.Close(false, null, null);
 - excel.Quit();
 - System.Runtime.InteropServices.
 - Marshal.ReleaseComObject(xBk);
 - System.Runtime.InteropServices.
 - Marshal.ReleaseComObject(excel);
 - System.Runtime.InteropServices.
 - Marshal.ReleaseComObject(xSt);
 - xBk = null;
 - excel = null;
 - xSt = null;
 - GC.Collect();
 - }
 - catch (Exception ex)
 - {
 - }
 - }
 
上面方法,首先形成一個(gè)多個(gè)DataTable的DataSet,
C# 操作Excel重點(diǎn)還是
1. 生成一個(gè)新的xls時(shí),打開方式,總是會(huì)提示進(jìn)程占用
2. 用不同的sheet時(shí)一定要命名
3. 使用傳入一個(gè)datatable時(shí),總是會(huì)重寫第一個(gè)sheet
C# 操作Excel多個(gè)sheet的具體的操作實(shí)例就向你介紹到這里,希望對(duì)你了解和學(xué)習(xí)C# 操作Excel多個(gè)sheet的具體的操作有所幫助。
【編輯推薦】















 
 
 
 
 
 
 