簡體   English   中英

顯示Excel文件並將其讀入datagridview

[英]Display and read an Excel file into a datagridview

我已經使用在此特定網站上找到的代碼成功顯示了數據。 問題是字體的顏色,粗體或斜體沒有保留。 我需要閱讀特定單元格的代碼,並將其轉換為HTML字符串,並將其顯示為其他位置的文本框。 因此,我真的需要學習如何導入顏色,粗體或斜體,以便也可以進行轉換。 我將永遠感激任何能幫助我實現這一目標的善良靈魂。 下面是我當前的代碼。

string PathConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + textBox1.Text + ";Extended Properties=\"Excel 8.0;HDR=Yes;\";";

OleDbConnection conn = new OleDbConnection(PathConn);
OleDbDataAdapter myDataAdapter = new OleDbDataAdapter("Select * from [sheet1$]", conn);
DataTable dt = new DataTable();

myDataAdapter.Fill(dt);

dataGridView1.DataSource = dt;

下面將在app文件夾中打開一個Excel文件,獲取單元格值,前景色,以及是否為range sheet1單元格H2設置了粗體和斜體。 請注意,這里保證有相當數量的代碼,以便在完成工作后釋放此處使用的所有對象。

using System;
using System.Windows.Forms;
using Excel = Microsoft.Office.Interop.Excel;

namespace WindowsFormsApplication1_CS
{
    public class ExcelCode
    {
        public System.Drawing.Color ForeColor;
        public ExcelCode() { }

        public string GetCellValue(
            string FileName,
            string SheetName,
            string CellAddress)
        {
            string CellValue = "";

            if (System.IO.File.Exists(FileName))
            {
                bool Proceed = false;

                Excel.Application xlApp = null;
                Excel.Workbooks xlWorkBooks = null;
                Excel.Workbook xlWorkBook = null;
                Excel.Worksheet xlWorkSheet = null;
                Excel.Sheets xlWorkSheets = null;
                Excel.Range xlCells = null;

                xlApp = new Excel.Application();
                xlApp.DisplayAlerts = false;
                xlWorkBooks = xlApp.Workbooks;
                xlWorkBook = xlWorkBooks.Open(FileName);

                xlApp.Visible = false;

                xlWorkSheets = xlWorkBook.Sheets;

                for (int x = 1; x <= xlWorkSheets.Count; x++)
                {
                    xlWorkSheet = (Excel.Worksheet)xlWorkSheets[x];

                    if (xlWorkSheet.Name == SheetName)
                    {
                        Proceed = true;
                        break;
                    }

                    System.Runtime.InteropServices
                        .Marshal.FinalReleaseComObject(xlWorkSheet);

                    xlWorkSheet = null;

                }

                if (Proceed)
                {
                    xlCells = xlWorkSheet.Range[CellAddress];

                    try
                    {
                        Console.WriteLine("Bold: {0}", xlCells.Font.Bold);   //  bool
                        Console.WriteLine("Italic: {0}", xlCells.Font.Italic); // bool
                        ForeColor = System.Drawing.ColorTranslator.FromOle((int)xlCells.Font.Color);
                        CellValue = Convert.ToString(xlCells.Value);
                    }
                    catch (Exception)
                    {
                        // Reduntant
                        CellValue = "";
                    }
                }
                else
                {
                    MessageBox.Show(SheetName + " not found.");
                }

                xlWorkBook.Close();
                xlApp.UserControl = true;
                xlApp.Quit();

                ReleaseComObject(xlCells);
                ReleaseComObject(xlWorkSheets);
                ReleaseComObject(xlWorkSheet);
                ReleaseComObject(xlWorkBook);
                ReleaseComObject(xlWorkBooks);
                ReleaseComObject(xlApp);
            }
            else
            {
                MessageBox.Show("'" + FileName +
                    "' not located. Try one of the write examples first.");
            }

            return CellValue;
        }

        public static void ReleaseComObject(object obj)
        {
            try
            {
                if (obj != null)
                {
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(obj);
                    obj = null;
                }
            }
            catch (Exception)
            {
                obj = null;
            }
        }
    }
}

可通過按鈕工作並具有面板的表單代碼var demoExcel = new ExcelCode(); //在app文件夾中打開一個Excel文件,在Sheet1 textBox1.Text = demoExcel中從H2獲取信息。GetCellValue(Path.Combine(AppDomain.CurrentDomain.BaseDirectory,“ Demo.xlsx”),“ Sheet1”,“ H2”) ;

        // Form has a panel, set back color to Sheet1.H2 color
        panel1.BackColor = demoExcel.ForeColor;
        // Translate the color to HTML
        var htmlColor = System.Drawing.ColorTranslator.ToHtml(demoExcel.ForeColor);
        Console.WriteLine(htmlColor.ToString());

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM