-1

私のサーバーには Microsoft Office がなく、Microsoft Office をインストールしたくありません。

このコードを使用して Excel 2007 ファイルを読み取ると、

Provider=Microsoft.ACE.OLEDB.12.0;Data Source=c:\myFolder\myOldExcelFile.xls;
Extended Properties="Excel 8.0;HDR=YES";

Excelファイルを読み込めません。誰が何が悪いのか知っていますか?

4

4 に答える 4

4

EPPlusを使用できます

EPPlus は、Open Office Xml 形式 (xlsx) を使用して Excel 2007/2010 ファイルを読み書きする .net ライブラリです。

MS Office をインストールする必要はありません。

を開くスクリプトの例.xlsx:

using OfficeOpenXml;
// Get the file we are going to process
var existingFile = new FileInfo(filePath);
// Open and read the XlSX file.
using (var package = new ExcelPackage(existingFile))
{
    // Get the work book in the file
    ExcelWorkbook workBook = package.Workbook;
    if (workBook != null)
    {
        if (workBook.Worksheets.Count > 0)
        {
            // Get the first worksheet
            ExcelWorksheet currentWorksheet = workBook.Worksheets.First();

            // read some data
            object col1Header = currentWorksheet.Cells[0, 1].Value;
            ...

コードサンプル: http://blog.fryhard.com/archive/2010/10/28/reading-xlsx-files-using-c-and-epplus.aspx

于 2013-02-26T05:14:42.927 に答える
1

サーバーに Office をインストールしていないこと、および Office のサーバー側の自動化に関する考慮事項 に従っていることを嬉しく思います。

Microsoft Access データベース エンジン再頒布可能パッケージがサーバーにインストールされていることを確認してください。これは Office 2010 (v14) 用で、2007 (v12) は簡単に見つけることができます。

2007 Office System Driver: データ接続コンポーネント

于 2013-02-26T05:11:00.293 に答える
0

.dllMicrosoft サイトからをダウンロードして、プロジェクトで使用できます。
Microsoft Excel をインストールする必要はありません。

ado.net を使用して読むことができます

    var myConnection = new OleDbConnection("provider=Microsoft.Jet.OLEDB.4.0;
       Data Source='c:\\Language_Batch1_OneClick.xls';Extended Properties=Excel 8.0;");
    var myCommand = new OleDbCommand();
    var upCommand = new OleDbCommand();
    int i = 0;
    try
    {

        string sql = null;
        myConnection.Open();
        myCommand.Connection = myConnection;
        sql = "select ANSWER_CODE,Punjabi from [Batch_Lang_1$]";
        myCommand.CommandText = sql;
        var dataReader = myCommand.ExecuteReader();

        while (dataReader.Read())
        {
            var langText = dataReader["Punjabi"].ToString();
        }
于 2013-02-26T05:35:07.550 に答える
0

//エクセルを起動して当該エクセルファイルを読み込む

サンプル コードは、これを実現するのに役立ちます。

  Microsoft.Office.Interop.Excel.Application ExcelObj = null;

    ExcelObj = new Microsoft.Office.Interop.Excel.Application();
    if (ExcelObj == null)

    {

     MessageBox.Show("ERROR: EXCEL couldn't be started!");

     System.Windows.Forms.Application.Exit();

    }


    Microsoft.Office.Interop.Excel.Workbook theWorkbook = ExcelObj.Workbooks.Open(openFileDialog.FileName, Type.Missing, Type.Missing, Type.Missing, Type.Missing,

    Type.Missing, Type.Missing, Type.Missing, Type.Missing,

    Type.Missing, Type.Missing, Type.Missing, Type.Missing,

    Type.Missing, Type.Missing);


    Microsoft.Office.Interop.Excel.Sheets sheets = theWorkbook.Worksheets;

    Microsoft.Office.Interop.Excel.Worksheet worksheet = (Microsoft.Office.Interop.Excel.Worksheet)sheets.get_Item(1);


    for(int x = 1; x <= 29; x++)

    {

    Microsoft.Office.Interop.Excel.Range range = worksheet.get_Range("A"+x.ToString(), "I" + x.ToString());

    System.Array myvalues = (System.Array)range.Cells.get_Value(range.);

    string[] strArray = ConvertToStringArray(myvalues);

    }
于 2013-02-26T05:18:14.860 に答える